Letakkan API EKS di Belakang VPN: Urutan Operasi
Dayakan endpoint peribadi, buktikan kubectl mencapainya, kemudian tutup endpoint awam. Runbook berperingkat dengan arahan dan semakan antara setiap langkah.
Versi berbahaya perubahan ini ialah satu arahan yang membalikkan endpoint dan mengunci semua pentadbir pada masa yang sama. Versi selamat mengekalkan kedua-dua laluan terbuka, membuktikan laluan peribadi berfungsi dari VPN, dan hanya selepas itu menarik balik endpoint awam. Andaikan kluster sedia ada, terowong yang diluluskan ke VPC-nya dan kubeconfig yang sudah berfungsi; tugasnya ialah akses peribadi ke API Kubernetes, bukan nod peribadi dan bukan model kebenaran baharu. Setiap langkah di bawah mempunyai semakan yang boleh anda gagal dengan selamat.
1. Inventori endpoint dan kekalkan laluan kembali
Rekod keadaan semasa sebelum mengubahnya, termasuk senarai kebenaran CIDR awam dan kumpulan keselamatan kluster. Kedua-duanya ialah perkara yang akan anda bandingkan apabila sesuatu berhenti berfungsi, dan senarai kebenaran itu juga laluan rollback anda jika laluan peribadi terbukti salah.
aws eks describe-cluster --region REGION --name CLUSTER \
--query 'cluster.{endpoint:endpoint,public:resourcesVpcConfig.endpointPublicAccess,private:resourcesVpcConfig.endpointPrivateAccess,cidrs:resourcesVpcConfig.publicAccessCidrs}'
REGION dan CLUSTER ialah pemegang tempat di sini. Perhatikan apa yang dibaca oleh bendera peribadi sekarang, kerana kluster yang dicipta dengan akses peribadi sudah didayakan memerlukan langkah pertama yang berbeza daripada kluster yang tidak pernah memilikinya. Kekalkan sekurang-kurangnya satu laluan pentadbiran yang diluluskan terbuka semasa peralihan; VPN yang bergantung pada kluster yang sama boleh dicapai bukanlah laluan pemulihan.
2. Dayakan akses peribadi dengan laluan rangkaian sudah sedia
Menghidupkan bendera ialah separuh yang mudah. Terowong memerlukan laluan ke alamat peribadi endpoint, dan kumpulan keselamatan kluster memerlukan TCP 443 daripada sumber yang benar-benar dibentangkan oleh VPN. Persatuan Client VPN, gerbang tapak-ke-tapak dan VPC yang di-peer semuanya boleh membentangkan alamat sumber yang berbeza, jadi gunakan model yang anda gunakan dan bukan julat peribadi generik.
aws eks update-cluster-config --region REGION --name CLUSTER \
--resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true
aws eks describe-update --region REGION --name CLUSTER --update-id UPDATE_ID
Kemas kini adalah tak segerak. Tanya id kemas kini sehingga ia melaporkan kejayaan dan bukannya menunggu bilangan detik tetap dan menganggap. Biarkan trafik nod dan satah kawalan tenang semasa anda melakukan ini: menggantikan seluruh kumpulan keselamatan kluster dengan peraturan untuk komputer riba anda ialah cara satah data yang berfungsi menjadi insiden kedua.
Dokumentasi endpoint EKS wajar dibaca sekali secara penuh, kerana ia menyatakan bahawa akses hanya-peribadi boleh datang dari VPC atau rangkaian bersambung. Ayat itulah seluruh sebab migrasi ini mungkin, dan ia juga sebab langkah seterusnya wujud.
3. Buktikan stesen kerja menggunakan laluan peribadi
Dengan kedua-dua endpoint didayakan, kubectl get ns yang berjaya tidak membuktikan apa-apa tentang yang mana menjawab. Selesaikan nama hos endpoint dan semak sama ada alamat yang anda peroleh tergolong dalam julat peribadi atau awam. Jika rangkaian bersambung anda tidak menerima paparan peribadi melalui DNS, arahan akan berjaya melalui endpoint awam dan anda akan menarik balik laluan awam berdasarkan bukti palsu. Inilah cara paling biasa migrasi ini menjadi salah, dan ia kelihatan tepat seperti kejayaan.
nslookup HASH.gr7.REGION.eks.amazonaws.com
kubectl cluster-info
kubectl get ns --request-timeout=10s
Kekalkan nama hos dan pengesahan sijil tepat seperti adanya. Menggantikan dengan IP peribadi dalam kubeconfig dan melangkau pengesahan TLS bukanlah migrasi yang anda terangkan dalam rekod perubahan, dan ia akan gagal lagi pada saat endpoint berputar.
4. Tarik balik akses awam dengan sengaja
Setelah laluan peribadi ditunjukkan dan aliran pemulihan diluluskan, tutup endpoint awam. Ini perubahan sebenar dan bukan pratonton, jadi jalankannya terhadap akaun dan tetapan yang benar-benar anda maksudkan.
aws eks update-cluster-config --region REGION --name CLUSTER \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true
Dalam mod hanya-peribadi, nama DNS awam diselesaikan kepada alamat peribadi endpoint dari dalam VPC, jadi penyelesaian dan kebolehcapaian tidak lagi menjadi perkara yang sama. Apa-apa yang bergantung pada alamat awam, termasuk pelari CI atau komputer riba pada rangkaian lain, kini memerlukan laluan masuknya sendiri.
5. Asingkan dasar rangkaian dan dasar identiti
Senarai CIDR akses awam hanya mengawal endpoint awam. Ia tidak mengehadkan endpoint peribadi, yang sebaliknya dihadkan oleh kumpulan keselamatan kluster dan dasar rangkaian bersambung. Jika anda mengekalkan endpoint awam, senarai kebenarannya mesti sepadan dengan egress awam yang benar-benar digunakan oleh klien API dan nod anda; alamat kolam VPN jarang menjadi sumber itu.
Tiada satu pun daripada ini mengubah IAM atau Kubernetes RBAC. Tetapan endpoint ialah tindakan pentadbiran, dan pengguna biasa tidak sepatutnya menerima kebenaran untuk melonggarkan sempadan semata-mata untuk mencapai API. Tulis keadaan akhir, tarikh dan laluan pemulihan dalam runbook, kemudian uji laluan pemulihan sekali semasa ia masih mudah.