Mengupgrade Anthos Service Mesh di GKE

Panduan ini menjelaskan cara mengupgrade Anthos Service Mesh dari versi 1.6.4+ ke versi 1.7.8 di GKE. 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.

Penginstalan Anthos Service Mesh 1.7 dan yang lebih tinggi mendukung upgrade versi lewati. Untuk mengupgrade langsung ke versi 1.10, lihat Mengupgrade Anthos Service Mesh ke versi terbaru

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

Bagian ini menguraikan langkah-langkah yang Anda lakukan untuk mempersiapkan upgrade Anthos Service Mesh.

  1. Tinjau Fitur yang didukung dan panduan ini untuk memahami berbagai fitur dan proses upgrade.

  2. Jika mengaktifkan fitur opsional saat menginstal Anthos Service Mesh versi sebelumnya, Anda harus mengaktifkan fitur yang sama saat melakukan upgrade. Anda mengaktifkan fitur opsional dengan menambahkan tanda --set values atau dengan menentukan tanda -f dengan file YAML saat menjalankan perintah istioctl install.

  3. Jika Anda menginstal Anthos Service Mesh di cluster pribadi, Anda harus membuka port 15017 di firewall agar webhook digunakan dengan injeksi file bantuan otomatis agar berfungsi dengan benar. Untuk informasi selengkapnya, lihat Membuka port di cluster pribadi.

  4. Jika melakukan upgrade dari Anthos Service Mesh 1.5, lakukan langkah-langkah berikut jika Anda perlu melakukan rollback:

    1. Buat direktori bernama asm-1-5.

    2. Download file penginstalan 1.5 ke direktori asm-1-5.

    3. Ekstrak konten file ke direktori asm-1-5.

    4. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh 1.5.

    5. Download paket kpt 1.5 dan konfigurasi istio-operator.yaml 1.5.

Menyiapkan lingkungan Anda

Untuk penginstalan di Google Kubernetes Engine, Anda dapat mengikuti panduan penginstalan menggunakan Cloud Shell, antarmuka command line dalam browser ke resource Google Cloud, atau komputer Anda sendiri yang menjalankan Linux atau macOS.

Opsi A: Menggunakan Cloud Shell

Cloud Shell menyediakan mesin virtual (VM) Compute Engine g1-small yang menjalankan sistem operasi Linux berbasis Debian. Keuntungan menggunakan Cloud Shell adalah:

  • Cloud Shell mencakup alat command line gcloud, kubectl, dan helm yang Anda butuhkan.

  • Direktori $HOME Cloud Shell Anda memiliki ruang penyimpanan persisten sebesar 5 GB.

  • Anda dapat memilih editor teks:

    • Editor kode, yang dapat Anda akses dengan mengklik di bagian atas jendela Cloud Shell.

    • Emacs, Vim, atau Nano, yang Anda akses dari command line di Cloud Shell.

Untuk menggunakan Cloud Shell:

  1. Buka Konsol Google Cloud.
  2. Pilih project Google Cloud Anda.
  3. Klik tombol Activate Cloud Shell di bagian atas jendela Konsol Google Cloud.

    Konsol Google Cloud Platform

    Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah Konsol Google Cloud dan menampilkan prompt command line.

    Sesi Cloud Shell

  4. Update komponen:

    gcloud components update
    

    Perintah ini merespons dengan output yang mirip dengan berikut ini:

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. Salin perintah long dan tempel untuk mengupdate komponen.

  6. Pastikan Git ada di jalur Anda sehingga kpt dapat menemukannya.

Opsi B: Menggunakan alat command line secara lokal

Di komputer lokal, instal dan inisialisasi Google Cloud CLI.

Jika Anda sudah menginstal gcloud CLI:

  1. Lakukan autentikasi dengan gcloud CLI:

    gcloud auth login
    
  2. Update komponen:

    gcloud components update
    
  3. Instal kubectl:

    gcloud components install kubectl
    
  4. Instal kpt:

    gcloud components install kpt
    
  5. Pastikan Git ada di jalur Anda sehingga kpt dapat menemukannya.

Menyetel variabel lingkungan

  1. Dapatkan project ID untuk project tempat cluster dibuat dan nomor project untuk project host armada.

    gcloud

    Jalankan perintah berikut:

    gcloud projects list
    

    Konsol

    1. Buka halaman Dashboard di Konsol Google Cloud.

      Buka halaman Dasbor

    2. Klik menu drop-down Select from di bagian atas halaman. Di jendela Select from yang muncul, pilih project Anda.

      Project ID ditampilkan di kartu Project info Dasbor project.

  2. Buat variabel lingkungan untuk project ID project tempat cluster dibuat:

    export PROJECT_ID=YOUR_PROJECT_ID

  3. Buat variabel lingkungan untuk nomor project dari project host fleet:

    export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER

  4. Buat variabel lingkungan berikut:

    • Tetapkan nama cluster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Tetapkan CLUSTER_LOCATION ke zona cluster atau region cluster Anda:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION

Jika ingin, ubah ID mesh di cluster

Jika mesh layanan Anda berisi atau akan berisi beberapa cluster yang berada di project yang berbeda, semua cluster harus memiliki ID mesh yang sama, yang didasarkan pada nomor project project host fleet. ID mesh yang ditetapkan pada cluster Anda harus cocok dengan ID mesh yang Anda konfigurasikan untuk digunakan di Anthos Service Mesh.

Jika Anda hanya memiliki satu cluster, atau jika mesh layanan Anda berisi atau akan berisi beberapa cluster yang berada dalam project yang sama, lewati langkah berikut dan lanjutkan ke bagian Menetapkan kredensial dan izin.

Untuk menetapkan label ID mesh baru pada cluster:

  1. Buat variabel lingkungan untuk ID mesh:

    export MESH_ID="proj-${FLEET_PROJECT_NUMBER}"

  2. Jika cluster Anda memiliki label yang ingin disimpan, Anda harus menyertakan label tersebut saat menambahkan label mesh_id.

    1. Untuk melihat apakah cluster Anda sudah memiliki label:

      gcloud container clusters describe ${CLUSTER_NAME} \
        --project ${PROJECT_ID}

      Cari kolom resourceLabels di output. Setiap label disimpan pada baris terpisah di bawah kolom resourceLabels, misalnya:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Anda tidak perlu mempertahankan mesh_id yang ada. Timpa dengan label mesh_id baru.

      Untuk memudahkan, Anda dapat menambahkan label ke variabel lingkungan. Dalam hal berikut, ganti YOUR_EXISTING_LABELS dengan daftar yang dipisahkan koma dari label yang ada di cluster Anda dalam format KEY=VALUE, misalnya: env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
    2. Tetapkan label mesh_id:

      • Jika cluster Anda sudah memiliki label yang ingin dipertahankan, update cluster dengan mesh_id dan label yang sudah ada:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project ${PROJECT_ID}
          --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
      • Jika cluster tidak memiliki label, update cluster hanya dengan label mesh_id baru:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project=${PROJECT_ID} \
          --update-labels=mesh_id=${MESH_ID}

Menetapkan kredensial dan izin

  1. Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  2. Berikan izin admin cluster kepada pengguna saat ini. 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="$(gcloud config get-value core/account)"

Jika melihat error "cluster-admin-binding" already exists, Anda dapat mengabaikannya dengan aman dan melanjutkan dengan cluster-admin-binding yang ada.

Mendownload file penginstalan

    Linux

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

  3. 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 direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  4. Mac OS

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

  7. 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 direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  8. Windows

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

  11. 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 direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  12. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.7.8-asm.10
  13. Untuk memudahkan, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH

Mempersiapkan file konfigurasi resource

Saat menjalankan perintah istioctl install, Anda menentukan -f istio-operator.yaml pada command line. File ini berisi informasi tentang project dan cluster yang diperlukan Anthos Service Mesh. Anda harus mendownload paket yang berisi istio-operator.yaml dan file konfigurasi resource lainnya agar dapat menetapkan informasi project dan cluster.

Untuk menyiapkan file konfigurasi resource:

Mesh CA

  1. Buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Sebaiknya gunakan nama cluster sebagai nama direktori.

  2. Ubah ke direktori tempat Anda ingin mendownload paket Anthos Service Mesh.

  3. Download paket:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
    
  4. Tetapkan project ID untuk project tempat cluster dibuat:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Tetapkan nomor project untuk project host fleet:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. Tetapkan nama cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Tetapkan zona atau region default:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Setel tag ke versi Anthos Service Mesh yang Anda instal:

    kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
    
  9. Tetapkan webhook validasi untuk menggunakan label revisi:

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    

    Saat menginstal Anthos Service Mesh, Anda menetapkan label revisi pada istiod. Anda harus menetapkan revisi yang sama pada webhook validasi.

  10. Karena cluster dalam konfigurasi multi-cluster Anda berada dalam project yang berbeda, Anda perlu mengonfigurasi alias domain tepercaya untuk project lain yang akan membentuk mesh layanan multi-cluster/multi-project.

    1. Dapatkan project ID dari semua cluster yang akan berada di mesh multi-cluster/multi-project.

    2. Untuk setiap project ID cluster, tetapkan alias domain kepercayaan. Misalnya, jika Anda memiliki cluster di 3 project, jalankan perintah berikut dan ganti PROJECT_ID_1, PROJECT_ID_2, dan PROJECT_ID_3 dengan project ID setiap cluster.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Saat mengonfigurasi cluster di project lain, Anda dapat menggunakan perintah yang sama.

      Alias domain kepercayaan memungkinkan Mesh CA untuk mengautentikasi beban kerja pada cluster dalam project lain. Selain menyetel alias domain tepercaya, setelah menginstal Anthos Service Mesh, Anda harus mengaktifkan load balancing lintas cluster.

  11. Hasilkan nilai penyetel kpt:

    kpt cfg list-setters asm
    

    Output perintah ini akan mirip dengan berikut ini:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases                [example-project-12345.svc.id.goog,example-project-23456.svc.id.goog,example-project-98765.svc.id.goog]
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    Pastikan nilai untuk penyetel berikut sudah benar:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Anda dapat mengabaikan nilai untuk penyetel lainnya.

Benteng

  1. Buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Sebaiknya gunakan nama cluster sebagai nama direktori.

  2. Ubah ke direktori tempat Anda ingin mendownload paket Anthos Service Mesh.

  3. Download paket:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
    
  4. Tetapkan project ID untuk project tempat cluster dibuat:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Tetapkan nomor project untuk project host fleet:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. Tetapkan nama cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Tetapkan zona atau region default:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Setel tag ke versi Anthos Service Mesh yang Anda instal:

    kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
    
  9. Tetapkan webhook validasi untuk menggunakan label revisi:

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    
  10. Hasilkan nilai penyetel kpt:

    kpt cfg list-setters asm
    

    Output perintah ini akan mirip dengan berikut ini:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    Pastikan nilai untuk penyetel berikut sudah benar:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Anda dapat mengabaikan nilai untuk penyetel lainnya.

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 menggunakan profil konfigurasi yang Anda tetapkan di file istio-operator.yaml. 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 \
    -f asm/cluster/istio-operator.yaml \
    --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

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.

  1. 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 label istio.io/rev.

  2. Mulai ulang Pod untuk memicu injeksi ulang:

    kubectl rollout restart deployment -n NAMESPACE
  3. 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

  4. Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.

  5. Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah sebelumnya untuk setiap namespace.

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

    1. Update workload yang akan dimasukkan dengan bidang kontrol versi sebelumnya:

       kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite

    2. Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:

       kubectl rollout restart deployment -n NAMESPACE

    3. Melakukan rollback komponen bidang kontrol:

      Rollback ke versi 1.6 sebelumnya

      1. Deploy ulang istio-ingressgateway versi sebelumnya:

        kubectl -n istio-system rollout undo deploy istio-ingressgateway
        
      2. 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

      1. Ubah ke direktori tempat Anda mendownload file penginstalan 1.5 Anthos Service Mesh.

      2. 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 \
        -f asm/cluster/istio-operator.yaml

Selesaikan upgrade

Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, lakukan langkah-langkah berikut untuk menyelesaikan upgrade:

  1. Hapus bidang kontrol lama:

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
    
  2. Jalankan perintah berikut untuk men-deploy pengontrol canonical Service:

    kubectl apply -f asm/canonical-service/controller.yaml

    Perintah ini men-deploy pengontrol Layanan Kanonis ke cluster Anda. Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama, dan diperlukan untuk membuka fungsi tambahan di dasbor Layanan pada Konsol Google Cloud. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan pengontrol Layanan Kanonis.

Langkah selanjutnya