Mengupgrade Anthos Service Mesh

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:

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:

  1. 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 argumen output_dir sehingga Anda dapat menemukan gateway contoh dan alat seperti istioctl dengan mudah. Lihat menu navigasi di sebelah kanan untuk melihat daftar contoh.

  2. Anda juga dapat menginstal atau mengupgrade gateway masuk.

  3. 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 tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet

Lokal

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. 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 file kubeconfig Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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. asmclimengonfigurasi 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 tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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

  1. Setel konteks saat ini ke cluster pengguna Anda:

     kubectl config use-context CLUSTER_NAME
    
  2. 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 file kubeconfig Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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 tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet
  • --custom_overlay Tentukan nama file overlay.

Lokal

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. 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 file kubeconfig Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. 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. asmclimengonfigurasi 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

  1. 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
    1. Pada output, di kolom REV, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalah asm-1106-2.

    2. Perhatikan juga nilai dalam label revisi untuk versi istiod lama. Anda memerlukan tindakan ini untuk menghapus versi lama istiod saat selesai memindahkan beban kerja ke versi baru. Dalam contoh output, nilai label revisi untuk versi lama adalah asm-198-3.

  2. Tambahkan label revisi ke namespace aplikasi dan hapus label istio-injection (jika ada). Dalam perintah berikut, ubah REVISION ke nilai yang cocok dengan revisi baru istiod.

    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 label istio-injection. Karena injeksi otomatis gagal jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label dalam dokumentasi Anthos Service Mesh mencakup penghapusan label istio-injection.

  3. Mulai ulang Pod untuk memicu injeksi ulang.

    kubectl rollout restart deployment -n NAMESPACE
  4. Pastikan bahwa Pod Anda telah dikonfigurasi untuk mengarah ke versi baru istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
  5. Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.

  6. Jika Anda memiliki beban kerja di namespace lain, ulangi langkah-langkah untuk memberi label pada namespace dan memulai ulang Pod.

  7. 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.

    1. Ubah ke direktori tempat file dari repositori GitHub anthos-service-mesh berada.

    2. Konfigurasikan webhook yang memvalidasi untuk menggunakan bidang kontrol baru.

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. 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 untuk istiod versi sebelumnya.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
      
    4. 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:

    1. Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan versi istiod sebelumnya. Perintah yang digunakan bergantung pada apakah Anda menggunakan label revisi atau istio-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
    2. Pastikan label revisi pada namespace cocok dengan label revisi pada istiod versi sebelumnya:

      kubectl get ns NAMESPACE --show-labels
      
    3. Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:

      kubectl rollout restart deployment -n NAMESPACE
      
    4. Hapus versi baru istiod. Pastikan nilai REVISION dalam perintah berikut sudah benar.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
      
    5. 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
    6. 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.

    7. 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.