Kontena aplikasi yang berkongsi ruang nama rangkaian kontena VPN tidak mempunyai antara muka sendiri, jadi mudah untuk menganggapnya tidak boleh menghantar apa-apa apabila terowong gagal. Andaian itu salah dalam mod kegagalan yang penting. Jika proses VPN mati semasa ruang nama kekal, aplikasi mengekalkan soketnya dan ruang nama mengekalkan laluannya, dan trafik berterusan melalui laluan yang masih dipasang. Suis pembunuh sebenar ialah dasar penapisan eksplisit serta ujian kitaran hayat runtime, bukan kebergantungan semasa mula.

Mengapa perkongsian ruang nama bukan suis pembunuh

Berkongsi ruang nama bermakna aplikasi menggunakan antara muka, alamat dan jadual laluan kontena VPN. Ia menghapuskan laluan bebas aplikasi ke rangkaian selagi ruang nama yang dikongsi itu utuh, dan ia tidak mengatakan apa-apa tentang apa yang akan dilakukan ruang nama itu apabila terowong hilang.

Keadaan kebergantungan Compose boleh melengahkan permulaan aplikasi sehingga sesuatu kebergantungan sihat. Itu hanya meliputi satu detik masa dan tiada kegagalan kemudian, jadi ia ialah alat susunan permulaan dan bukan tembok api keluar yang berterusan.

Apa yang sebenarnya berlaku apabila kontena keluar

Bezakan tiga peristiwa. Proses VPN di dalam kontena boleh mati semasa kontena terus berjalan. Kontena boleh berhenti atau dialih keluar, yang memusnahkan ruang nama. Kontena boleh dicipta semula, yang membina ruang nama baharu dan peraturan baharu.

Dalam kes pertama ruang nama kekal, laluan lalai mungkin masih menunjuk ke antara muka fizikal, dan aplikasi terus menghantar secara langsung. Dalam kes kedua aplikasi bergantung biasanya kehilangan sambungan sepenuhnya, kerana ruang namanya telah hilang. Dalam kes ketiga aplikasi mungkin menyambung semula ke ruang nama baharu sebelum terowong sedia. Setiap kes memerlukan ujian berbeza, dan reka bentuk yang hanya meliputi pemutusan teratur meliputi yang paling kurang menarik.

Bina dasar keluar yang eksplisit

Tulis dasar di dalam ruang nama yang dikongsi supaya ia terpakai kepada paket aplikasi. Bentuknya ialah penolakan lalai dengan pengecualian sempit: loopback, antara muka terowong, dan alamat serta port titik akhir tertentu yang diperlukan oleh pengangkutan terowong.

Pengecualian titik akhir mesti ada sebelum terowong naik, jika tidak klien VPN tidak dapat mencapai pelayan. Itulah sebabnya set peraturan membenarkan pengangkutan luar secara eksplisit dan bukannya membenarkan antara muka fizikal secara umum. Tambah juga peraturan IPv6 jika ruang nama mempunyai sambungan IPv6, kerana dasar yang hanya IPv4 membiarkan keluarga yang lain terbuka.

DNS juga termasuk dalam dasar. Jika aplikasi menyelesaikan nama melalui penyelesai yang hanya boleh dicapai di dalam terowong, peraturan penolakan akan memutuskan penyelesaian apabila terowong mati, dan itu ialah tingkah laku yang betul untuk suis pembunuh. Putuskan dengan sengaja sama ada itu yang anda mahu.

Uji kitaran hayat, bukan hanya pemutusan

Hantar permintaan baharu yang tidak berbahaya semasa terowong sihat, kemudian bunuh proses VPN dan hantar satu lagi. Ulangi selepas kontena berhenti, selepas mula semula dan selepas dicipta semula. Permintaan baharu penting kerana sambungan sedia ada boleh bertahan terhadap perubahan peraturan yang menyekat yang baharu.

Jangan bergantung pada pemeriksaan kesihatan atau carian IP keluar sebagai mekanisme penyekatan. Pemeriksaan memerhati keadaan dan melaporkannya; dasar mengawal trafik. Kedua-duanya tergolong dalam penggunaan yang sama, dan ia bukan pengganti.

Rekod peraturan supaya ujian bertahan selepas kemas kini

Tulis hasil yang dijangka bagi setiap kes kegagalan ke dalam dokumentasi penggunaan, bersama peraturan yang melaksanakannya. Rekod itu membolehkan ujian yang sama dijalankan selepas kemas kini imej atau naik taraf runtime, apabila tingkah laku ruang nama atau laluan lalai boleh berubah tanpa sesiapa menyunting fail compose.

Kekalkan laluan luar yang diperlukan titik akhir VPN berasingan daripada keluar aplikasi tanpa had, dan kekalkan DNS serta IPv6 dalam liputan yang dimaksudkan. Jika dasar membenarkan seluruh antara muka fizikal atas sebab kemudahan, suis pembunuh itu sudah tiada. Dokumentasi rangkaian Docker menerangkan susunan ruang nama yang dikongsi yang menjadi asas dasar itu, dan itulah rujukan yang perlu diperiksa apabila tingkah laku runtime dipersoalkan.

Artikel berkaitan