Halaman ini menjelaskan cara:
Jalankan
asmcli
untuk melakukan upgrade dari Anthos Service Mesh atau Istio 1.9 or a 1.10 patch release open source ke Anthos Service Mesh 1.10.6. Upgrade dari versi sebelumnya tidak didukung.Lakukan upgrade canary untuk memigrasikan beban kerja ke bidang kontrol baru.
Sebelum memulai
Sebelum memulai, pastikan Anda:
- Tinjau prasyarat.
Saat ini,
asmcli
tidak mendukung upgrade Anthos Service Mesh di cluster GKE yang berada di mesh multi-cluster di berbagai project, kecuali jika Anda menginstal Anthos Service Mesh menggunakanasmcli
. - Tinjau informasi di Merencanakan upgrade.
- Instal alat yang diperlukan
- Download
asmcli
- Memberikan izin admin cluster
- Memvalidasi project dan cluster
Penyesuaian bidang kontrol
Jika penginstalan sebelumnya disesuaikan, Anda memerlukan penyesuaian yang sama saat mengupgrade ke versi Anthos Service Mesh baru atau bermigrasi dari Istio. Jika menyesuaikan penginstalan dengan menambahkan flag --set values
ke istioctl install
, Anda harus menambahkan setelan tersebut ke file YAML IstioOperator
, yang disebut sebagai file overlay. Tentukan file overlay menggunakan opsi --custom_overlay
dengan nama file saat menjalankan skrip. Skrip meneruskan file overlay ke istioctl install
.
Otoritas Sertifikasi
Mengubah certificate authority (CA) selama upgrade akan menyebabkan periode nonaktif. Selama upgrade, traffic mTLS akan terganggu hingga semua beban kerja dialihkan untuk menggunakan bidang kontrol baru dengan CA baru.
Mengupgrade Anthos Service Mesh
Berikut adalah penjelasan cara mengupgrade Anthos Service Mesh:
Jalankan
asmcli install
untuk menginstal Anthos Service Mesh di satu cluster. Lihat bagian berikut untuk contoh command line. Contoh tersebut berisi argumen yang diperlukan dan argumen opsional yang mungkin berguna bagi Anda. Sebaiknya selalu tentukan argumenoutput_dir
sehingga Anda dapat menemukan gateway contoh dan alat sepertiistioctl
dengan mudah. Lihat menu navigasi di sebelah kanan untuk melihat daftar contoh.Anda juga dapat menginstal atau mengupgrade gateway masuk.
Untuk menyelesaikan penyiapan Anthos Service Mesh, Anda perlu mengaktifkan injeksi bantuan otomatis dan men-deploy atau men-deploy ulang workload.
Upgrade dengan fitur default dan Mesh CA
Bagian ini menunjukkan cara menjalankan asmcli
untuk mengupgrade Anthos Service Mesh dengan fitur yang didukung default untuk platform Anda dan mengaktifkan certificate authority Anthos Service Mesh (Mesh CA) sebagai certificate authority.
GKE
Jalankan perintah berikut untuk menginstal bidang kontrol baru dengan fitur default. Masukkan nilai Anda di placeholder yang disediakan.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca
--project_id
,--cluster_name
, dan--cluster_location
Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.--fleet_id
Project ID project host fleet. Jika opsi ini tidak disertakan,asmcli
akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
--ca mesh_ca
Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade akan menyebabkan periode nonaktif.asmcli
mengonfigurasi Mesh CA untuk menggunakan identitas workload fleet
Lokal
Setel konteks saat ini ke cluster pengguna Anda:
kubectl config use-context CLUSTER_NAME
Jalankan perintah berikut untuk menginstal bidang kontrol baru dengan fitur default. Masukkan nilai Anda di placeholder yang disediakan.
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca mesh_ca
--fleet_id
Project ID project host fleet.--kubeconfig
Jalur ke filekubeconfig
Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--platform multicloud
Menentukan bahwa infrastruktur lokal adalah platformnya.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
--ca mesh_ca
Gunakan Mesh CA sebagai certificate authority. Mengubah otoritas sertifikat selama proses upgrade akan menyebabkan periode nonaktif.asmcli
mengonfigurasi Mesh CA untuk menggunakan identitas workload fleet
Mengupgrade fitur default dengan Istio CA
Bagian ini menunjukkan cara menjalankan asmcli
untuk mengupgrade Anthos Service Mesh dengan fitur default yang didukung untuk platform Anda dan mengaktifkan Istio CA.
GKE
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca citadel
--project_id
,--cluster_name
, dan--cluster_location
Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.--fleet_id
Project ID project host fleet. Jika opsi ini tidak disertakan,asmcli
akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
-ca citadel
Gunakan Istio CA. Mengubah otoritas sertifikat selama upgrade akan menyebabkan periode nonaktif.
Lokal
Setel konteks saat ini ke cluster pengguna Anda:
kubectl config use-context CLUSTER_NAME
Jalankan perintah berikut untuk menginstal Anthos Service Mesh dengan fitur default dan Istio CA:
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca citadel \
--fleet_id
Project ID project host fleet.--kubeconfig
Jalur ke filekubeconfig
Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--platform multicloud
Menentukan bahwa infrastruktur lokal adalah platformnya.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
-ca citadel
Gunakan Istio CA. Mengubah certificate authority selama upgrade akan menyebabkan periode nonaktif.
Upgrade dengan fitur opsional
File overlay adalah file YAML yang berisi resource kustom (CR) IstioOperator
yang Anda teruskan ke asmcli
untuk mengonfigurasi bidang kontrol. Anda dapat mengganti konfigurasi bidang kontrol default dan mengaktifkan fitur opsional dengan meneruskan file YAML ke asmcli
. Anda dapat menambahkan lapisan pada lebih banyak overlay, dan setiap file overlay akan menggantikan konfigurasi pada lapisan sebelumnya.
GKE
Jalankan perintah berikut untuk menginstal bidang kontrol baru dengan fitur default. Masukkan nilai Anda di placeholder yang disediakan.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca \
--custom_overlay OVERLAY_FILE
--project_id
,--cluster_name
, dan--cluster_location
Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.--fleet_id
Project ID project host fleet. Jika opsi ini tidak disertakan,asmcli
akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
--ca mesh_ca
Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade akan menyebabkan periode nonaktif.asmcli
mengonfigurasi Mesh CA untuk menggunakan identitas workload fleet--custom_overlay
Tentukan nama file overlay.
Lokal
Setel konteks saat ini ke cluster pengguna Anda:
kubectl config use-context CLUSTER_NAME
Jalankan perintah berikut untuk menginstal bidang kontrol baru dengan fitur default. Masukkan nilai Anda di placeholder yang disediakan.
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca mesh_ca \ --custom_overlay OVERLAY_FILE
--fleet_id
Project ID project host fleet.--kubeconfig
Jalur ke filekubeconfig
Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--output_dir
Sertakan opsi ini untuk menentukan direktori tempatasmcli
mendownload paketanthos-service-mesh
dan mengekstrak file penginstalan, yang berisiistioctl
, sampel, dan manifes. Jika tidak,asmcli
akan mendownload file ke direktoritmp
. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan$PWD
tidak berfungsi di sini.--platform multicloud
Menentukan bahwa infrastruktur lokal adalah platformnya.-
--enable_all
Mengizinkan skrip untuk:- Memberikan izin IAM yang diperlukan.
- Mengaktifkan Google API yang diperlukan.
- Tetapkan label pada cluster yang mengidentifikasi mesh.
- Daftarkan cluster ke fleet jika belum terdaftar.
--ca mesh_ca
Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade akan menyebabkan periode nonaktif.asmcli
mengonfigurasi Mesh CA untuk menggunakan identitas workload fleet--custom_overlay
Tentukan nama file overlay.
Mengupgrade gateway
Jika telah men-deploy gateway, Anda juga harus mengupgradenya. Untuk upgrade sederhana, ikuti bagian Upgrade di Tempat dalam panduan Gateway penginstalan dan upgrade.
Beralih ke bidang kontrol baru
Mendapatkan label revisi yang ada di
istiod
.kubectl get pod -n istio-system -L istio.io/rev
Output dari perintah serupa dengan berikut ini.
NAME READY STATUS RESTARTS AGE REV istiod-asm-176-1-67998f4b55-lrzpz 1/1 Running 0 68m asm-198-3 istiod-asm-176-1-67998f4b55-r76kr 1/1 Running 0 68m asm-198-3 istiod-asm-182-2-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1106-2 istiod-asm-182-2-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1106-2
Pada output, di kolom
REV
, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalahasm-1106-2
.Perhatikan juga nilai dalam label revisi untuk versi
istiod
lama. Anda memerlukan tindakan ini untuk menghapus versi lamaistiod
saat selesai memindahkan beban kerja ke versi baru. Dalam contoh output, nilai label revisi untuk versi lama adalahasm-198-3
.
Tambahkan label revisi ke namespace aplikasi dan hapus label
istio-injection
(jika ada). Dalam perintah berikut, ubahREVISION
ke nilai yang cocok dengan revisi baruistiod
.kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
Jika melihat
"istio-injection not found"
pada output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
. Karena injeksi otomatis gagal jika namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh mencakup penghapusan labelistio-injection
.Mulai ulang Pod untuk memicu injeksi ulang.
kubectl rollout restart deployment -n NAMESPACE
Pastikan bahwa Pod Anda telah dikonfigurasi untuk mengarah ke versi baru
istiod
.kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.
Jika Anda memiliki beban kerja di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.
Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, lanjutkan dengan langkah-langkah untuk bertransisi ke versi baru
istiod
. Jika aplikasi Anda mengalami masalah, ikuti langkah-langkah untuk melakukan rollback.Selesaikan transisi
Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, hapus bidang kontrol lama untuk menyelesaikan transisi ke versi baru.
Ubah ke direktori tempat file dari repositori GitHub
anthos-service-mesh
berada.Konfigurasikan webhook yang memvalidasi untuk menggunakan bidang kontrol baru.
kubectl apply -f asm/istio/istiod-service.yaml
Hapus
istiod
versi lama. Perintah yang Anda gunakan bergantung pada apakah Anda bermigrasi dari Istio atau mengupgrade dari Anthos Service Mesh versi sebelumnya.Migrasi
Jika Anda bermigrasi dari Istio,
istio-ingressgateway
lama tidak akan memiliki label revisi.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Upgrade
Jika Anda melakukan upgrade dari versi Anthos Service Mesh sebelumnya, dalam perintah berikut, pastikan
OLD_REVISION
cocok dengan label revisi untukistiod
versi sebelumnya.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Hapus versi lama konfigurasi
IstioOperator
.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 baru
istiod
, ikuti langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan versi
istiod
sebelumnya. Perintah yang digunakan bergantung pada apakah Anda menggunakan label revisi atauistio-injection=enabled
dengan versi sebelumnya.Jika Anda menggunakan label revisi untuk injeksi 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
istiod
versi sebelumnya:kubectl get ns NAMESPACE --show-labels
Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:
kubectl rollout restart deployment -n NAMESPACE
Hapus versi baru
istiod
. Pastikan nilaiREVISION
dalam perintah berikut sudah benar.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
Hapus versi baru konfigurasi
IstioOperator
.kubectl delete IstioOperator installed-state-REVISION -n istio-system
Output yang diharapkan mirip dengan berikut ini:
istiooperator.install.istio.io "installed-state-REVISION" deleted
Jika Anda tidak menyertakan flag
--disable_canonical_service
, skrip akan mengaktifkan pengontrol Layanan Kanonis. Sebaiknya Anda membiarkannya tetap aktif, tetapi jika Anda perlu menonaktifkannya, lihat Mengaktifkan dan menonaktifkan pengontrol Layanan Kanonis.Jika Anda memiliki gateway yang di-deploy, pastikan untuk mengubah label revisi pada namespace atau deployment agar sesuai dengan versi
istiod
sebelumnya. Ikuti proses yang sama yang diuraikan di bagian Upgrade di Tempat dalam panduan Menginstal dan mengupgrade gateway.