Migrasi berbasis Canary ke Mesh CA
Untuk memigrasikan CA Anda dengan waktu non-operasional minimal dan tanpa memigrasikan control plane, lihat Migrasi CA di Tempat.Bermigrasi ke certificate authority (CA) Cloud Service Mesh dari Istio CA (juga dikenal sebagai Citadel) memerlukan migrasi root of trust. Sebelum Cloud Service Mesh 1.10, jika Anda ingin bermigrasi dari Istio di Google Kubernetes Engine (GKE) ke Cloud Service Mesh dengan Mesh CA, Anda perlu menjadwalkan periode nonaktif karena Cloud Service Mesh tidak dapat memuat beberapa sertifikat root. Oleh karena itu, selama migrasi, workload yang baru di-deploy mempercayai root certificate baru, sementara workload lainnya mempercayai root certificate lama. Workload yang menggunakan sertifikat yang ditandatangani oleh sertifikat root yang berbeda tidak dapat saling mengautentikasi. Artinya, traffic mutual TLS (mTLS) terganggu selama migrasi. Seluruh cluster hanya dapat dipulihkan sepenuhnya jika bidang kontrol dan semua workload di semua namespace di-deploy ulang dengan sertifikat CA Mesh. Jika mesh Anda memiliki beberapa cluster dengan workload yang mengirim permintaan ke workload di cluster lain, semua workload di cluster tersebut juga perlu diperbarui.
Gunakan langkah-langkah dalam panduan ini untuk kasus penggunaan berikut:
- Lakukan migrasi dari Istio di GKE ke bidang kontrol dalam cluster Cloud Service Mesh dengan Mesh CA. 1.29.4-asm.0
- Lakukan upgrade dari Cloud Service Mesh 1.15 atau rilis patch 1.16 dengan Istio CA ke bidang kontrol dalam cluster Cloud Service Mesh 1.29.4-asm.0 dengan Mesh CA.
Batasan
- Semua cluster GKE harus berada dalam project yang sama Google Cloud .
Prasyarat
Ikuti langkah-langkah di Menginstal alat dependen dan memvalidasi cluster untuk:- Menginstal alat yang diperlukan
- Download
asmcli - Memberikan izin admin cluster
- Memvalidasi project dan cluster Anda
Alat yang diperlukan
Selama migrasi, Anda menjalankan alat yang disediakan Google, migrate_ca, untuk
memvalidasi hal berikut untuk setiap Pod di cluster:
- Sertifikat root untuk Istio CA dan Mesh CA.
- Sertifikat mTLS beban kerja yang dikeluarkan oleh Istio CA dan Mesh CA.
- Domain tepercaya yang dikonfigurasi oleh Istio CA dan Mesh CA.
Alat ini memiliki dependensi berikut:
awkgrepistioctlMenjalankanasmcli installakan mendownload versiistioctlyang cocok dengan versi Cloud Service Mesh yang Anda instal.jqkubectlopenssl
Ringkasan migrasi
Untuk bermigrasi ke Mesh CA, Anda mengikuti proses migrasi berbasis revisi (juga disebut sebagai "upgrade canary"). Dengan migrasi berbasis revisi, revisi bidang kontrol baru di-deploy bersama dengan bidang kontrol yang ada. Kemudian, Anda memindahkan workload secara bertahap ke revisi baru, yang memungkinkan Anda memantau efek migrasi selama proses berlangsung. Selama proses migrasi, autentikasi dan otorisasi berfungsi penuh antara beban kerja yang menggunakan Mesh CA dan beban kerja yang menggunakan Istio CA.
Berikut adalah ringkasan migrasi ke Mesh CA:
Mendistribusikan root of trust CA Mesh.
Instal revisi bidang kontrol baru yang menggunakan Istio CA dengan opsi yang akan mendistribusikan root of trust CA Mesh.
Migrasikan workload ke control plane baru, namespace demi namespace, dan uji aplikasi Anda. Setelah semua workload berhasil dimigrasikan ke bidang kontrol baru, hapus bidang kontrol lama.
Bermigrasi ke CA Mesh. Setelah semua proxy sidecar dikonfigurasi dengan root of trust lama dan root of trust CA Mesh, Anda dapat bermigrasi ke CA Mesh tanpa waktu non-operasional. Sekali lagi, Anda mengikuti proses migrasi berbasis revisi:
Instal revisi bidang kontrol dengan CA Mesh diaktifkan.
Migrasikan workload ke revisi bidang kontrol baru, namespace demi namespace, dan uji aplikasi Anda. Setelah semua workload berhasil dimigrasikan ke bidang kontrol baru, hapus bidang kontrol lama.
Hapus secret CA di cluster yang terkait dengan CA lama dan mulai ulang control plane baru.
Mendistribusikan root of trust CA Mesh
Sebelum Anda dapat bermigrasi ke Mesh CA, semua cluster GKE di mesh harus memiliki Cloud Service Mesh 1.10 atau yang lebih baru, dan semua cluster harus dikonfigurasi dengan opsi bidang kontrol yang memicu root of trust untuk Mesh CA agar didistribusikan ke proxy semua workload di cluster. Setelah proses selesai, setiap proxy dikonfigurasi dengan root of trust lama dan baru. Dengan skema ini, saat Anda bermigrasi ke CA Mesh, workload yang menggunakan CA Mesh akan dapat melakukan autentikasi dengan workload yang menggunakan CA lama.
Menginstal revisi bidang kontrol baru
Instal revisi bidang kontrol dengan opsi yang mendistribusikan root kepercayaan CA Mesh.
Ikuti langkah-langkah di Menginstal alat dependen dan memvalidasi cluster untuk bersiap menggunakan alat yang disediakan Google,
asmcli, guna menginstal revisi control plane baru.Pastikan Anda memiliki versi
asmcliyang menginstal Cloud Service Mesh 1.11 atau yang lebih tinggi:./asmcli --version
Jalankan
asmcli install. Dalam perintah berikut, ganti placeholder dengan nilai Anda../asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --enable_all \ --ca citadel \ --ca_cert CA_CERT_FILE_PATH \ --ca_key CA_KEY_FILE_PATH \ --root_cert ROOT_CERT_FILE_PATH \ --cert_chain CERT_CHAIN_FILE_PATH \ --option ca-migration-citadel \ --revision_name REVISION_1 \ --output_dir DIR_PATH
--fleet_idProject ID project host fleet.--kubeconfigJalur ke filekubeconfigAnda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWDtidak berfungsi di sini.--output_dirSertakan opsi ini untuk menentukan direktori tempatasmclimendownload paketanthos-service-meshdan mengekstrak file penginstalan, yang berisiistioctl, sampel, dan manifes. Jika tidak,asmcliakan mendownload file ke direktoritmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWDtidak berfungsi di sini.-
--enable_allMengizinkan alat untuk:- Berikan izin IAM yang diperlukan.
- Aktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
-ca citadelUntuk menghindari periode nonaktif, tentukan CA Istio (opsicitadelsesuai dengan CA Istio). Jangan beralih ke CA Mesh pada tahap ini.--ca_certSertifikat perantara.--ca_keyKunci untuk sertifikat perantara--root_certRoot certificate.--cert_chainRantai sertifikat.--option ca-migration-citadelSaat Anda men-deploy ulang workload, opsi ini akan memicu distribusi root of trust baru ke proxy sidecar workload.REVISION_1: Direkomendasikan. Label revisi adalah pasangan nilai kunci yang ditetapkan pada bidang kontrol. Kunci label revisi selaluistio.io/rev. Secara default, alat ini menetapkan nilai untuk label revisi berdasarkan versi Cloud Service Mesh, misalnya:asm-1294-0. Sebaiknya sertakan opsi ini dan gantiREVISION_1dengan nama yang mendeskripsikan penginstalan, sepertiasm-1294-0-distribute-root. Nama harus berupa label DNS-1035, dan harus terdiri dari karakter alfanumerik huruf kecil atau-, diawali dengan karakter alfabet, dan diakhiri dengan karakter alfanumerik (sepertimy-nameatauabc-123).
Memigrasikan workload ke bidang kontrol baru
Untuk menyelesaikan pendistribusian root of trust baru, Anda harus memberi label pada namespace dengan label revisi istio.io/rev=<var>REVISION_1</var>-distribute-root dan memulai ulang beban kerja. Saat menguji workload setelah memulai ulang, Anda menjalankan alat
untuk memvalidasi bahwa proxy sidecar dikonfigurasi dengan root tepercaya lama dan baru untuk Mesh CA.
Menetapkan konteks saat ini untuk
kubectl. Dalam perintah berikut, ubah--regionmenjadi--zonejika Anda memiliki cluster zona tunggal.gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --region=CLUSTER_LOCATIONDownload alat validasi:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/master/scripts/ca-migration/migrate_ca > migrate_ca
Setel bit yang dapat dieksekusi pada alat:
chmod +x migrate_ca
Alat
migrate_camemanggilistioctl, yang bergantung pada versi. Alatasmclimenambahkan symlink keistioctldi direktori yang Anda tentukan untuk--output_dir. Pastikan direktori tersebut berada di awal jalur Anda. Dalam perintah berikut, gantiISTIOCTL_PATHdengan direktori yang berisiistioctlyang didownload alat.export PATH=ISTIOCTL_PATH:$PATH which istioctl echo $PATH
Dapatkan label revisi yang ada di
istioddanistio-ingressgateway.kubectl get pod -n istio-system -L istio.io/rev
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE REV istio-ingressgateway-5fd454f8ff-t7w9x 1/1 Running 0 36m default istio-ingressgateway-asm-195-2-distribute-root-c6ccfbdbd-z2s9p 1/1 Running 0 18m asm-195-2-distribute-root istio-ingressgateway-asm-195-2-distribute-root-c6ccfbdbd-zr2cs 1/1 Running 0 18m asm-195-2-distribute-root istiod-68bc495f77-shl2h 1/1 Running 0 36m default istiod-asm-195-2-distribute-root-6f764dbb7c-g9f8c 1/1 Running 0 18m asm-195-2-distribute-root istiod-asm-195-2-distribute-root-6f764dbb7c-z7z9s 1/1 Running 0 18m asm-195-2-distribute-root
Dalam output, di kolom
REV, perhatikan nilai label revisi untuk revisi baru, yang cocok dengan label revisi yang Anda tentukan saat menjalankanasmcli install. Dalam contoh ini, nilainya adalahasm-1294-0-distribute-root.Anda harus menghapus revisi lama
istiodsetelah selesai memindahkan beban kerja ke revisi baru. Perhatikan nilai dalam label revisi untuk revisiistiodlama. Output contoh menunjukkan migrasi dari Istio, yang menggunakan revisidefault.
Tambahkan label revisi ke namespace dan hapus label
istio-injection(jika ada). Pada perintah berikut, gantiNAMESPACEdengan namespace yang akan diberi label.kubectl label namespace NAMESPACE istio.io/rev=REVISION_1 istio-injection- --overwrite
Jika Anda melihat
"istio-injection not found"di output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection. Karena perilaku injeksi otomatis tidak ditentukan saat namespace memiliki labelistio-injectiondan revisi, semua perintahkubectl labeldalam dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.Mulai ulang Pod untuk memicu penyuntikan ulang.
kubectl rollout restart deployment -n NAMESPACE
Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.
Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
Validasi bahwa proxy sidecar untuk semua workload di cluster dikonfigurasi dengan sertifikat root lama dan baru:
./migrate_ca check-root-cert
Output yang diharapkan:
Namespace: foo httpbin-66cdbdb6c5-pmzps.foo trusts [CITADEL MESHCA] sleep-64d7d56698-6tmjm.foo trusts [CITADEL MESHCA]
Jika Anda perlu memigrasikan gateway, ikuti langkah-langkah di Upgrade Canary (lanjutan) untuk menginstal deployment gateway baru. Ingat selalu hal-hal berikut:
- Gunakan
REVISION_1sebagai label revisi. - Deploy resource gateway di namespace yang sama dengan gateway dari penginstalan yang lebih lama untuk melakukan migrasi tanpa waktu henti. Pastikan resource layanan yang mengarah ke gateway lama juga menyertakan deployment yang lebih baru.
- Jangan hapus deployment gateway yang lebih lama hingga Anda yakin bahwa aplikasi Anda berfungsi dengan benar (setelah langkah berikutnya).
- Gunakan
Jika Anda yakin bahwa aplikasi Anda berfungsi seperti yang diharapkan, lanjutkan dengan langkah-langkah untuk bertransisi ke versi baru
istiod. Jika ada masalah dengan aplikasi Anda, ikuti langkah-langkah untuk melakukan rollback.Menyelesaikan transisi
Jika Anda yakin bahwa aplikasi Anda berfungsi seperti yang diharapkan, hapus control plane lama untuk menyelesaikan transisi ke versi baru.
Ubah ke direktori tempat file dari repositori GitHub
anthos-service-meshberada.Konfigurasi webhook validasi untuk menggunakan bidang kontrol baru.
kubectl apply -f asm/istio/istiod-service.yaml
Hapus
istio-ingressgatewayDeployment lama. Perintah yang Anda jalankan bergantung pada apakah Anda melakukan migrasi dari Istio atau mengupgrade dari versi Cloud Service Mesh sebelumnya:Migrasi
Jika Anda bermigrasi dari Istio,
istio-ingressgatewaylama tidak memiliki label revisi.kubectl delete deploy/istio-ingressgateway -n istio-system
Upgrade
Jika Anda melakukan upgrade dari versi Cloud Service Mesh sebelumnya, pada perintah berikut, ganti
OLD_REVISIONdengan label revisi untuk versiistio-ingressgatewaysebelumnya.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
Hapus revisi lama
istiod. Perintah yang Anda gunakan bergantung pada apakah Anda melakukan migrasi dari Istio atau mengupgrade dari versi Cloud Service Mesh sebelumnya.Migrasi
Jika Anda bermigrasi dari Istio,
istio-ingressgatewaylama tidak memiliki label revisi.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Upgrade
Jika Anda mengupgrade dari versi Cloud Service Mesh sebelumnya, pada perintah berikut, pastikan
OLD_REVISIONcocok dengan label revisi untuk versiistiodsebelumnya.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Hapus konfigurasi
IstioOperatorversi lama.kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
Output yang diharapkan mirip dengan berikut ini:
istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted
Rollback
Jika Anda mengalami masalah saat menguji aplikasi dengan versi
istiodbaru, ikuti langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:Hapus deployment gateway baru yang diinstal sebagai bagian dari langkah 11.
Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan
istiodversi sebelumnya. Perintah yang Anda gunakan bergantung pada apakah Anda menggunakan label revisi atauistio-injection=enableddengan versi sebelumnya.Jika Anda menggunakan label revisi untuk penyisipan otomatis:
kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
Jika Anda menggunakan
istio-injection=enabled:kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Output yang diharapkan:
namespace/NAMESPACE labeled
Pastikan label revisi pada namespace cocok dengan label revisi pada versi
istiodsebelumnya:kubectl get ns NAMESPACE --show-labels
Mulai ulang Pod untuk memicu penyuntikan ulang sehingga proxy memiliki versi sebelumnya:
kubectl rollout restart deployment -n NAMESPACE
Hapus Deployment
istio-ingressgatewaybaru.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION_1 -n istio-system --ignore-not-found=true
Hapus revisi baru
istiod.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION_1 -n istio-system --ignore-not-found=true
Hapus konfigurasi
IstioOperatorbaru.kubectl delete IstioOperator installed-state-asm-1294-0-distribute-root -n istio-system
Output yang diharapkan mirip dengan berikut ini:
istiooperator.install.istio.io "installed-state-asm-1294-0-distribute-root" deleted
Bermigrasi ke CA Mesh
Setelah proxy sidecar untuk semua workload dikonfigurasi dengan root of trust lama dan root of trust baru untuk Mesh CA, langkah-langkah untuk bermigrasi ke Mesh CA serupa dengan langkah-langkah yang Anda lakukan untuk mendistribusikan root of trust Mesh CA:
Menginstal bidang kontrol baru dengan CA Mesh yang diaktifkan
Anda menggunakan asmcli install untuk menginstal revisi bidang kontrol baru yang mengaktifkan Mesh CA.
Jika Anda menyesuaikan penginstalan sebelumnya, Anda harus menentukan file overlay yang sama saat menjalankan
asmcli install.Jalankan
asmcli install. Dalam perintah berikut, ganti placeholder dengan nilai Anda../asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --enable_all \ --ca mesh_ca \ --root_cert ROOT_CERT_FILE_PATH \ --cert_chain CERT_CHAIN_FILE_PATH --option ca-migration-meshca \ --revision_name REVISION_2 \ --output_dir DIR_PATH \ OVERLAYS
--fleet_idProject ID project host fleet.--kubeconfigJalur ke filekubeconfigAnda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWDtidak berfungsi di sini.--output_dirSertakan opsi ini untuk menentukan direktori tempatasmclimendownload paketanthos-service-meshdan mengekstrak file penginstalan, yang berisiistioctl, sampel, dan manifes. Jika tidak,asmcliakan mendownload file ke direktoritmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWDtidak berfungsi di sini.-
--enable_allMengizinkan alat untuk:- Berikan izin IAM yang diperlukan.
- Aktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
--ca mesh_caAnda kini dapat beralih ke CA Mesh karena root tepercaya CA Mesh telah didistribusikan.REVISION_2Direkomendasikan. GantiREVISION_2dengan nama yang menjelaskan penginstalan, sepertiasm-1294-0-meshca-ca-migration. Nama harus berupa label DNS-1035, dan harus terdiri dari karakter alfanumerik huruf kecil atau-, diawali dengan karakter alfabet, dan diakhiri dengan karakter alfanumerik (sepertimy-nameatauabc-123).--option ca-migration-migrationSaat Anda men-deploy ulang beban kerja, opsi ini mengonfigurasi proxy untuk menggunakan root of trust CA Mesh.
Memigrasikan workload ke bidang kontrol baru
Untuk menyelesaikan penginstalan, Anda harus memberi label pada namespace dengan label revisi baru dan memulai ulang workload.
Dapatkan label revisi yang ada di
istioddanistio-ingressgateway.kubectl get pod -n istio-system -L istio.io/rev
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE REV istio-ingressgateway-asm-1294-0-distribute-root-65d884685d-6hrdk 1/1 Running 0 67m asm-1294-0-distribute-root istio-ingressgateway-asm-1294-0-distribute-root65d884685d-94wgz 1/1 Running 0 67m asm-1294-0-distribute-root istio-ingressgateway-asm-1294-0-meshca-ca-migration-8b5fc8767-gk6hb 1/1 Running 0 5s asm-1294-0-meshca-ca-migration istio-ingressgateway-asm-1294-0-meshca-ca-migration-8b5fc8767-hn4w2 1/1 Running 0 20s asm-1294-0-meshca-ca-migration istiod-asm-1294-0-distribute-root-67998f4b55-lrzpz 1/1 Running 0 68m asm-1294-0-distribute-root istiod-asm-1294-0-distribute-root-67998f4b55-r76kr 1/1 Running 0 68m asm-1294-0-distribute-root istiod-asm-1294-0-meshca-ca-migration-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1294-0-meshca-ca-migration istiod-asm-1294-0-meshca-ca-migration-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1294-0-meshca-ca-migration
Dalam output, di kolom
REV, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1294-0-meshca-ca-migration.Perhatikan juga nilai dalam label revisi untuk versi
istiodlama. Anda memerlukan hal ini untuk menghapusistiodversi lama saat Anda selesai memindahkan workload ke versi baru. Dalam contoh, nilai label revisi untuk revisi sebelumnya adalahasm-1294-0-distribute-root.
Tambahkan label revisi baru ke namespace Pada perintah berikut, ganti
NAMESPACEdengan namespace yang akan diberi label.kubectl label namespace NAMESPACE istio.io/rev=REVISION_2 --overwrite
Mulai ulang Pod untuk memicu penyuntikan ulang.
kubectl rollout restart deployment -n NAMESPACE
Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar. Pastikan komunikasi mTLS berfungsi antara workload di namespace yang lebih lama dan workload di namespace yang lebih baru.
Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
Ikuti langkah-langkah yang diuraikan dalam Upgrade di tempat untuk mengupgrade deployment gateway lama yang diinstal pada langkah 11 di bagian sebelumnya ke revisi terbaru
REVISION_2.Jika Anda yakin bahwa aplikasi Anda berfungsi seperti yang diharapkan, lanjutkan langkah-langkah untuk bertransisi ke bidang kontrol baru. Jika ada masalah dengan aplikasi Anda, ikuti langkah-langkah untuk melakukan rollback.
Menyelesaikan transisi
Jika Anda yakin bahwa aplikasi Anda berfungsi seperti yang diharapkan, hapus control plane lama untuk menyelesaikan transisi ke versi baru.
Ubah ke direktori tempat file dari repositori GitHub
anthos-service-meshberada.Konfigurasi webhook validasi untuk menggunakan bidang kontrol baru.
kubectl apply -f asm/istio/istiod-service.yaml
Hapus
istio-ingressgatewayDeployment lama. Dalam perintah berikut, gantiOLD_REVISIONdengan label revisi untuk versiistio-ingressgatewaysebelumnya.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
Hapus revisi
istiodlama. Pada perintah berikut, gantiOLD_REVISIONdengan label revisi untuk versiistiodsebelumnya.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Hapus konfigurasi
IstioOperatorlama.kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
Output yang diharapkan mirip dengan berikut ini:
istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted
Rollback
Jika Anda mengalami masalah saat menguji aplikasi dengan revisi
istiodbaru, ikuti langkah-langkah berikut untuk melakukan rollback ke revisi sebelumnya:Ikuti langkah-langkah di Upgrade di tempat untuk melakukan downgrade pada deployment gateway yang sebelumnya diupgrade di langkah 6 bagian ini ke revisi lama
REVISION_1.Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan revisi
istiodsebelumnya.kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
Output yang diharapkan:
namespace/NAMESPACE labeled
Pastikan label revisi pada namespace cocok dengan label revisi pada versi
istiodsebelumnya:kubectl get ns NAMESPACE --show-labels
Mulai ulang Pod untuk memicu penyuntikan ulang sehingga proxy memiliki versi sebelumnya:
kubectl rollout restart deployment -n NAMESPACE
Hapus Deployment
istio-ingressgatewaybaru.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION_2 -n istio-system --ignore-not-found=true
Hapus versi baru
istiod. Pastikan label revisi dalam perintah berikut cocok dengan revisi Anda.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION_2 -n istio-system --ignore-not-found=true
Hapus konfigurasi
IstioOperatorversi baru.kubectl delete IstioOperator installed-state-REVISION_2 -n istio-system
Output yang diharapkan mirip dengan berikut ini:
istiooperator.install.istio.io "installed-state-REVISION_2" deleted
Hapus secret CA dan mulai ulang bidang kontrol baru
Simpan rahasia untuk berjaga-jaga jika Anda membutuhkannya:
kubectl get secret/cacerts -n istio-system -o yaml > save_file_1 kubectl get secret/istio-ca-secret -n istio-system -o yaml > save_file_2
Hapus rahasia CA di cluster yang terkait dengan CA lama:
kubectl delete secret cacerts istio-ca-secret -n istio-system --ignore-not-found
Mulai ulang bidang kontrol yang baru diinstal. Hal ini memastikan bahwa root kepercayaan lama dihapus dari semua beban kerja yang berjalan di mesh.
kubectl rollout restart deployment -n istio-system