Dengan VPC CNI, sebuah Pod dapat memiliki alamat dari VPC, dan pengguna VPN dengan rute yang tepat dapat menjangkaunya secara langsung. Itu membuat akses langsung ke Pod terasa seperti opsi paling sederhana, dan memang begitu, sampai Pod diganti. Alamat yang diingat pengguna seharusnya milik aplikasi, bukan milik replika. Membandingkan ketiga pintu masuk berujung pada objek mana yang memiliki alamat dan apa yang harus tetap berjalan ketika beban kerja berpindah.

Pilih dulu berdasarkan siklus hidup, lalu berdasarkan apa yang harus dilakukan jaringan agar pintu masuk dapat dijangkau.

Tiga pintu masuk, tiga siklus hidup

Pod IP dimiliki oleh Pod: dialokasikan bersamanya dan dilepaskan saat berakhir. ClusterIP dimiliki oleh Service dan bersifat virtual, hanya bermakna di tempat perutean layanan klaster ada. Penyeimbang beban internal dimiliki oleh sumber daya cloud yang diprogram pengendali klaster dengan backend. Model kepemilikan itu memperkirakan kegagalan yang akan Anda dapatkan: alamat usang, nama yang tidak dapat dijangkau, atau kumpulan backend yang sudah usang.

Tuliskan perbandingannya sebelum memilih. Setelah pemilik dan kegagalannya dinamai, pilihan biasanya membuat dirinya sendiri.

EntryOwnerFailure when the workload moves
Pod IPThe PodAddress changes and saved links break
ClusterIPThe ServiceVirtual address with no meaning outside cluster routing
Internal balancerCloud resource plus controllerBackends update, but the DNS view is yours to maintain

Akses langsung ke Pod: berguna, sementara

Akses langsung benar-benar berguna untuk pemeriksaan terkendali: satu administrator, satu sesi singkat, satu porta tertentu. Tetapi itu kontrak yang buruk bagi pengguna, karena alamat adalah detail implementasi yang berubah pada setiap peluncuran. Dan mencatatnya di wiki adalah cara sebuah layanan yang berfungsi berubah menjadi desas-desus.

Itu juga mengundang aturan yang luas. Izin bagi satu administrator untuk menjangkau satu Pod bukan izin untuk setiap alamat di subnet node, dan yang kedua itulah yang biasanya ditulis.

ClusterIP: terbatas pada klaster sejak desain

ClusterIP berfungsi karena dataplane klaster memprogram perutean untuknya di dalam klaster. Dari laptop di VPN alamat itu tidak berarti apa-apa kecuali sesuatu dengan sengaja mengeksposnya. Nama yang berakhiran svc.cluster.local milik DNS klaster, jadi menyalinnya ke klien dengan resolver lain menghasilkan nama yang tidak ada, bukan kesalahan perutean.

ClusterIP tetap menjadi pintu masuk yang benar bagi pemanggil di dalam klaster, termasuk beban kerja lain. Itu sekadar bukan mekanisme publikasi bagi pengguna di luar domain perutean klaster.

Penyeimbang beban internal: jalur yang diterbitkan

Penyeimbang beban internal memberi Anda alamat privat yang stabil dan nama yang dapat dituju zona Anda sendiri, sementara pengendali menjaga kumpulan backend tetap mutakhir, seperti yang dijelaskan panduan penyeimbangan beban EKS. Itu adalah pintu masuk yang bertahan dari penggantian Pod biasa tanpa ada yang menyunting dokumen. Biayanya adalah sumber daya cloud, konfigurasi pengendali, dan rute dari VPN, dan bagian itulah yang orang remehkan.

Gunakan model pengendali yang benar-benar dijalankan klaster. Anotasi yang ditulis untuk satu integrasi tidak berlaku untuk yang lain.

Siapa alamat sumbernya

Grup keamanan melihat sumber yang tiba di perbatasannya, dan itu bisa berupa klien yang terhubung atau alamat yang diterjemahkan tergantung pada jalur VPN dan penyeimbangan beban. Pada node berbasis EC2, Pod VPC CNI biasa mewarisi grup ENI node secara bawaan, sementara konfigurasi yang didukung dapat melampirkan grup khusus Pod. Tulis aturan untuk jalur yang didokumentasikan, bukan untuk alamat laptop yang diduga.

Pertahankan pendengar dan autentikasi aplikasi sendiri sebagai kontrol terpisah. Aturan jaringan yang mengizinkan aliran bukan keputusan otorisasi dan tidak boleh diperlakukan seperti itu.

Apa yang diberikan kepada pengguna

Berikan nama layanan kepada pengguna, bukan alamat. Terbitkan nama itu di zona privat, arahkan ke pintu masuk internal, lalu uji dengan mengganti Pod backend sementara klien membiarkan nama yang sama terbuka. Latihan itu menguji sifat yang penting: menjangkau aplikasi yang sama setelah penerapan rutin.

Pertahankan akses langsung ke Pod sebagai pengecualian operasional terdokumentasi dengan cakupannya sendiri, jauh dari instruksi bagi pengguna.

Artikel terkait