Panduan ini menjelaskan cara mengupgrade Anthos Service Mesh dari versi 1.6.4+ ke versi 1.7.8 di GKE di VMware. Untuk mengupgrade dari Anthos Service Mesh 1.4.5+, Anda harus mengupgrade ke Anthos Service Mesh 1.5 terlebih dahulu. Upgrade langsung dari Anthos Service Mesh 1.4 ke 1.6 tidak didukung.
Saat melakukan upgrade, sebaiknya lakukan upgrade bidang kontrol ganda (juga disebut sebagai upgrade canary) dengan versi baru dan sebelumnya dari bidang kontrol berjalan saat Anda menguji versi baru dengan sebagian kecil beban kerja Anda. Pendekatan ini lebih aman daripada upgrade yang sudah ada, dengan versi baru bidang kontrol menggantikan versi sebelumnya. Perlu diperhatikan bahwa istio-ingressgateway telah diupgrade di tempat, jadi Anda harus merencanakan beberapa gangguan pada cluster.Proses deploy ulang komponen bidang kontrol Anthos Service Mesh memerlukan waktu sekitar 5 hingga 10 menit. Selain itu, Anda perlu memasukkan proxy file bantuan baru di semua beban kerja agar diupdate ke versi Anthos Service Mesh saat ini. Waktu yang diperlukan untuk memperbarui proxy file bantuan bergantung pada banyak faktor, seperti jumlah pod, jumlah node, setelan penskalaan deployment, anggaran gangguan pod, dan setelan konfigurasi lainnya. Perkiraan kasar dari waktu yang diperlukan untuk memperbarui proxy file bantuan adalah 100 pod per menit.
Mempersiapkan upgrade
Jika Anda menyesuaikan penginstalan sebelumnya, Anda memerlukan penyesuaian yang sama saat mengupgrade Anthos Service Mesh. Jika Anda menyesuaikan penginstalan dengan menambahkan flag --set values
ke istioctl install
, sebaiknya tambahkan setelan tersebut ke file YAML IstioOperator
(meskipun Anda dapat terus menggunakan flag --set_values
). Untuk menyesuaikan penginstalan, tentukan flag -f
dengan file YAML saat Anda menjalankan perintah istioctl install
.
Menyiapkan lingkungan Anda
Anda memerlukan alat berikut di komputer tempat Anda ingin menginstal Anthos Service Mesh. Perlu diperhatikan bahwa Anda hanya dapat menginstal Anthos Service Mesh di cluster pengguna, bukan di cluster admin.
- Alat command line
curl
. - Google Cloud CLI.
Setelah menginstal Google Cloud CLI:
Lakukan autentikasi dengan Google Cloud CLI:
gcloud auth login
Update komponen:
gcloud components update
Instal
kubectl
:gcloud components install kubectl
Instal versi
kpt
yang diperlukan:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Alihkan konteks ke cluster pengguna Anda:
kubectl config use-context CLUSTER_NAME
Berikan izin admin cluster ke akun pengguna Anda (alamat email login Google Cloud Anda). Anda memerlukan izin berikut agar dapat membuat aturan role-based access control (RBAC) yang diperlukan untuk Anthos Service Mesh:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
Mendownload file penginstalan
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-linux-amd64.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-osx.tar.gz
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
-
Download file tanda tangan dan gunakan
openssl
untuk memverifikasi tanda tangan:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
Output yang diharapkan adalah:
Verified OK
-
Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
tar xzf istio-1.7.8-asm.10-win.zip
Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama
istio-1.7.8-asm.10
yang berisi:- Contoh aplikasi di direktori
samples
. - Alat command line
istioctl
yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Untuk memudahkan, tambahkan alat di direktori
/bin
ke PATH Anda:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
Mengupgrade Anthos Service Mesh
Untuk menginstal Anthos Service Mesh versi baru, sebaiknya ikuti proses upgrade bidang kontrol ganda (disebut sebagai upgrade canary di dokumentasi Istio). Dengan upgrade bidang kontrol
ganda, Anda menginstal versi baru bidang kontrol bersama dengan
bidang kontrol yang ada. Saat menginstal versi baru, Anda menyertakan
label revision
yang mengidentifikasi versi bidang kontrol baru. Setiap revisi merupakan implementasi penuh bidang kontrol Anthos Service Mesh dengan Deployment dan Service-nya sendiri.
Kemudian, migrasikan ke versi baru dengan menetapkan label revision
yang sama pada beban kerja agar mengarah ke bidang kontrol baru dan melakukan mulai ulang berkelanjutan untuk memasukkan ulang proxy dengan versi Anthos Service Mesh yang baru. Dengan pendekatan ini,
Anda dapat memantau efek upgrade pada sebagian kecil
beban kerja Anda. Setelah menguji aplikasi, Anda dapat memigrasikan semua traffic ke
versi baru. Pendekatan ini jauh lebih aman daripada melakukan upgrade langsung, dengan
bidang kontrol baru menggantikan versi bidang kontrol sebelumnya.
Memperbarui bidang kontrol
Jalankan perintah berikut untuk men-deploy bidang kontrol baru. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan -f
dan nama file YAML pada command line berikut. Lihat
Mengaktifkan fitur opsional
untuk mengetahui informasi selengkapnya.
istioctl install \ --set profile=asm-multicloud \ --set revision=asm-178-10
Argumen --set revision
menambahkan label istio.io/rev
ke istiod
. Setelah
menjalankan perintah, Anda memiliki dua bidang kontrol Deployment dan Layanan
yang berjalan berdampingan:
kubectl get pods -n istio-system
Contoh output:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-178-10-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m promsd-579f9f9bf4-m65nc 2/2 Running 1 50m
Men-deploy ulang beban kerja
Menginstal revisi baru tidak berdampak pada proxy file bantuan yang ada. Untuk
mengupgradenya, Anda harus mengonfigurasinya agar mengarah ke bidang kontrol baru. Hal ini
dikontrol selama injeksi file bantuan berdasarkan label namespace
istio.io/rev
.
Update workload yang akan dimasukkan dengan versi Anthos Service Mesh baru:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite
Label
istio-injection
harus dihapus karena lebih diutamakan daripada labelistio.io/rev
.Mulai ulang Pod untuk memicu injeksi ulang:
kubectl rollout restart deployment -n NAMESPACE
Pastikan bahwa Pod dikonfigurasi untuk mengarah ke bidang kontrol
istiod-asm-178-10
:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10
Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.
Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah sebelumnya untuk setiap namespace.
Jika Anda yakin aplikasi telah berfungsi seperti yang diharapkan, lewati ke Menyelesaikan upgrade. Jika tidak, lakukan langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya.
Update workload yang akan dimasukkan dengan bidang kontrol versi sebelumnya:
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:
kubectl rollout restart deployment -n NAMESPACE
Melakukan rollback komponen bidang kontrol:
Rollback ke versi 1.6 sebelumnya
Deploy ulang
istio-ingressgateway
versi sebelumnya:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Hapus bidang kontrol baru:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
Rollback ke 1,5
Ubah ke direktori tempat Anda mendownload file penginstalan 1.5 Anthos Service Mesh.
Instal ulang Anthos Service Mesh versi sebelumnya. Dalam perintah berikut, jika Anda mengaktifkan fitur opsional, pastikan untuk menyertakan flag
--set values
yang berlaku atau flag-f
dengan nama file YAML.bin/istioctl install \ --set profile=asm-multicloud \
Selesaikan upgrade
Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, hapus bidang kontrol lama untuk menyelesaikan upgrade:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true