Migrasi CA di tempat
Jika mesh Anda memiliki beberapa cluster dengan workload yang mengirim permintaan ke workload di cluster lain, ikuti semua langkah dalam panduan ini untuk semua cluster.
Gunakan langkah-langkah dalam panduan ini untuk kasus penggunaan berikut:
- Migrasikan bidang kontrol Cloud Service Mesh v1.13 atau yang lebih baru dalam cluster dengan Mesh CA ke Certificate Authority Service.
- Migrasikan bidang kontrol Cloud Service Mesh terkelola di saluran rilis yang dipetakan ke v1.13 atau yang lebih baru dengan Mesh CA ke Certificate Authority Service.
Batasan
Migrasi dan upgrade CA di tempat hanya didukung dari Cloud Service Mesh v1.13 atau yang lebih baru. Untuk migrasi control plane terkelola, pastikan saluran yang dipilih dikaitkan ke v1.13 atau yang lebih baru.
Prasyarat
Sebelum mengikuti langkah-langkah dalam panduan ini, pastikan Anda memiliki:
Selain itu, pastikan Anda saat ini menggunakan Cloud Service Mesh v1.13 atau yang lebih baru.
Alat yang diperlukan
Selama migrasi, Anda menjalankan alat yang disediakan Google, migrate_ca. Alat ini
memiliki dependensi berikut:
awkgrepjqkubectlheadsedtryq
Sebelum mendownload alat migrate_ca, ikuti langkah-langkah di
Bersiap untuk migrasi.
Ringkasan migrasi
Selama proses migrasi, autentikasi dan otorisasi sepenuhnya berfungsi antara workload yang menggunakan CA sebelumnya dan workload yang menggunakan CA baru.
Alat migrasi migrate_ca akan membuat peta konfigurasi Kubernetes untuk
melacak status migrasi CA per revisi/saluran Cloud Service Mesh yang diinstal.
Ini adalah resource dengan hak istimewa yang diinstal di namespace istio-system.
apiVersion: v1
kind: ConfigMap
metadata:
Name: asm-ca-migration-<revision>
Data:
revision:
start_time:
state_update_time:
current_state: TRUSTANCHOR_INJECT | MIGRATE_CA | ROLLBACK
old_ca:
target_ca:
Alat migrasi akan mencadangkan peta konfigurasi Istio MeshConfig sebelum mengubahnya dan mencoba memigrasikan konfigurasi CA menggunakan CRD ProxyConfig jika memungkinkan.
Berikut adalah ringkasan migrasi CA:
Bersiap untuk migrasi
Download alat bash
migrate_ca:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_caBuat alat dapat dieksekusi:
chmod +x migrate_caSiapkan direktori kerja:
./migrate_ca setup --output_dir OUTPUT_DIRUbah direktori kerja ke OUTPUT_DIR yang ditentukan pada langkah sebelumnya
cd OUTPUT_DIRJalankan perintah berikut untuk memastikan semua prasyarat terpenuhi:
./migrate_ca check-prerequisitesCatat revisi (
ASM_REVISION) bidang kontrol yang terkait dengan CA sebelumnya yang sedang dimigrasikan. Langkah-langkah yang diperlukan bergantung pada jenis bidang kontrol, baik dalam cluster maupun dikelola.Dalam cluster
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")Terkelola
Lihat saluran yang sudah diinstal.
Karena migrasi CA in-place mengharuskan Anda memulai ulang workload, pastikan Anggaran Gangguan Pod dikonfigurasi dengan benar dan semua aplikasi yang CA-nya perlu dimigrasikan memiliki lebih dari satu Pod yang berjalan.
Pastikan cluster sudah terdaftar ke fleet dan workload-identity diaktifkan di cluster. Kemudian, catat project ID fleet sebagai (
FLEET_ID) untuk langkah-langkah berikutnya.Alat ini menerima
kubeConfigdankubeContextuntuk memilih cluster tempat operasi dilakukan. Jika argumen ini tidak diteruskan, konteks/konfigurasi default akan digunakan.Untuk menambahkan kredensial cluster GKE ke
kubeConfig, gunakan perintah berikut:gcloud container clusters get-credentials CLUSTER_NAMEUntuk mengubah konteks
kubectlsaat ini atau meneruskan konteks ke alat, gunakan perintah berikut:kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Melakukan inisialisasi CA baru
Langkah-langkah yang diperlukan untuk melakukan inisialisasi CA baru bergantung pada CA baru yang menjadi tujuan migrasi Anda. Lakukan langkah-langkah ini di setiap cluster fleet tempat Anda ingin memigrasikan CA.
CA Mesh
Panggil sub-perintah
initializealat utilitas.Jika Anda menentukan konfigurasi Kubernetes kustom:
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISIONAtau:
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION ```CA Service
a. Ikuti langkah-langkah yang diperlukan untuk melakukan inisialisasi Certificate Authority Service. Catat
CA_POOL.b. Panggil sub-perintah
initializealat utilitas:Jika Anda menentukan konfigurasi Kubernetes kustom:
./migrate_ca initialize --kubeconfig KUBECONFIG --context KUBECONTEXT --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISIONAtau:
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Menambahkan trustAnchors seluruh mesh untuk semua cluster dalam fleet
Ulangi langkah-langkah di bawah ini untuk CA baru dan CA lama untuk semua cluster yang merupakan bagian dari fleet.
Download trustAnchors CA:
CA Mesh
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pemCA Service
Simpan sertifikat CA dalam file:
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pemTambahkan trustAnchors CA:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pemPastikan trustAnchors telah diterima oleh semua workload dalam armada. Dalam argumen namespace, teruskan semua namespace tempat workload di-deploy:
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACESOutput yang diharapkan:
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
Memigrasikan CA
Migrasikan konfigurasi CA. Perintah yang diperlukan bergantung pada CA baru yang menjadi tujuan migrasi Anda.
CA Mesh
./migrate_ca migrate-ca --ca mesh_caCA Service
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOLMulai ulang semua beban kerja.
Untuk meminimalkan risiko periode nonaktif traffic TLS, langkah ini harus memengaruhi jumlah workload terkecil terlebih dahulu. Hanya mulai ulang beban kerja yang dikaitkan dengan revisi bidang kontrol ASM_REVISION. Misalnya, jika semua beban kerja di namespace kubernetes NAMESPACE dikaitkan dengan bidang kontrol Cloud Service Mesh yang sama.
kubectl rollout restart deployment -n NAMESPACEPastikan koneksi mTLS berfungsi di antara workload di namespace yang dimulai ulang dan workload lainnya sebelum mengulangi langkah 1 dan 2 untuk semua namespace dan untuk semua cluster yang merupakan bagian dari fleet. Jika workload yang lebih baru muncul dan traffic mesh tidak terganggu, ulangi langkah 1 dan 2 untuk semua namespace dan cluster yang merupakan bagian dari fleet. Jika tidak, lanjutkan ke melakukan rollback untuk melakukan rollback konfigurasi CA yang lebih baru.
Pastikan konfigurasi CA baru digunakan oleh semua workload:
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACESOutput yang diharapkan:
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Melakukan rollback
Kembalikan konfigurasi CA dan hapus trustAnchors yang baru dikonfigurasi:
./migrate-ca rollbackMulai ulang semua beban kerja. Pastikan untuk hanya memulai ulang beban kerja yang terkait dengan revisi bidang kontrol ASM_REVISION. Misalnya, jika semua beban kerja di namespace kubernetes NAMESPACES dikaitkan dengan bidang kontrol Cloud Service Mesh yang sama.
kubectl rollout restart deployment -n NAMESPACES(Opsional) Pastikan konfigurasi CA lama digunakan oleh semua beban kerja.
./migrate-ca verify-ca --ca_cert older-root-cert.pemUlangi langkah 1-3 untuk semua cluster dalam fleet tempat beban kerja menggunakan bidang kontrol ASM_REVISION.
Selamat! Anda telah berhasil melakukan migrasi CA di tempat.