Mengupgrade Anthos Service Mesh secara lokal

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.

Setelah menginstal Google Cloud CLI:

  1. Lakukan autentikasi dengan Google Cloud CLI:

    gcloud auth login
    
  2. Update komponen:

    gcloud components update
    
  3. Instal kubectl:

    gcloud components install kubectl
    
  4. 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)"
    
  5. Alihkan konteks ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
  6. 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

    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

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.

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