Mendowngrade Anthos Service Mesh di GKE

Panduan ini menjelaskan cara mendowngrade Anthos Service Mesh dari 1.6.14 ke 1.5.10 di cluster GKE di Google Cloud.

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.

Ringkasan downgrade

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

Persiapan

  1. Tinjau Fitur yang didukung dan panduan ini untuk memahami fitur-fitur dan proses downgrade.

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

  3. Jika mendowngrade Anthos Service Mesh di cluster pribadi, Anda harus menambahkan aturan firewall untuk membuka port 15017 jika ingin menggunakan injeksi sidecar otomatis. Jika tidak menambahkan aturan firewall dan injeksi file bantuan otomatis diaktifkan, Anda akan mendapatkan error saat men-deploy workload. Untuk mengetahui detail tentang cara menambahkan aturan firewall, lihat Menambahkan aturan firewall untuk kasus penggunaan tertentu.

Downgrade

  1. Ikuti langkah-langkah dalam panduan ini untuk mempersiapkan downgrade Anthos Service Mesh.

  2. Downgrade Anthos Service Mesh.

  3. Memperbarui proxy file bantuan

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

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

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.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.5.10-asm.2 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.5.10-asm.2-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.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.5.10-asm.2 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.5.10-asm.2-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.5.10-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.5.10-asm.2 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.5.10-asm.2
  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 memulai, pilih paket yang akan didownload berdasarkan certificate authority (CA) yang ingin digunakan:

  • asm: Paket ini mengaktifkan Mesh CA, yang kami rekomendasikan untuk penginstalan baru.

  • asm-citadel: Secara opsional, Anda dapat mengaktifkan Citadel sebagai CA. Sebelum memilih paket ini, lihat Memilih certificate authority untuk mengetahui informasi selengkapnya.

Untuk menyiapkan file konfigurasi resource:

  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 asm:

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

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Tetapkan nama cluster:

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

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    

Mendowngrade Anthos Service Mesh

Untuk mendowngrade Anthos Service Mesh:

istioctl install \
  -f asm/cluster/istio-operator.yaml \
  --set profile=asm-gcp

Memeriksa komponen bidang kontrol

Proses downgrade memerlukan penginstalan ulang komponen bidang kontrol, yang memerlukan waktu sekitar 5 hingga 10 menit. Komponen bidang kontrol lama dihentikan, lalu dihapus saat komponen baru diinstal. Anda dapat memeriksa progresnya dengan melihat nilai di kolom AGE beban kerja.

kubectl get pod -n istio-system

Contoh output:

NAME                                     READY   STATUS        RESTARTS   AGE
istio-ingressgateway-5bfdf7c586-v6wxx    2/2     Terminating   0          25m
istio-ingressgateway-7b598c5557-b88md    2/2     Running       0          5m44s
istiod-78cdbbbdb-d7tps                   1/1     Running       0          5m16s
promsd-576b8db4d6-lqf64                  2/2     Running       1          5m26s

Dalam contoh ini, ada dua instance istio-ingressgateway. Instance dengan 25m di kolom AGE sedang dihentikan. Semua komponen lainnya baru diinstal.

Memperbarui proxy file bantuan

Setiap beban kerja yang berjalan di cluster Anda sebelum downgrade harus memasukkan ulang proxy file bantuan agar memiliki versi Anthos Service Mesh saat ini.

Dengan injeksi file bantuan otomatis, Anda dapat mengupdate file bantuan untuk Pod yang ada dengan memulai ulang Pod. Cara Anda memulai ulang pod bergantung pada apakah pod dibuat sebagai bagian dari Deployment.

  1. Jika Anda menggunakan Deployment, mulai ulang Deployment, yang akan memulai ulang semua Pod dengan file bantuan:

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Jika Anda tidak menggunakan Deployment, hapus Pod, lalu Pod akan otomatis dibuat ulang dengan file bantuan:

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Pastikan semua Pod di namespace memiliki file bantuan yang dimasukkan:

    kubectl get pod -n YOUR_NAMESPACE

    Pada contoh output dari perintah sebelumnya berikut, perhatikan bahwa kolom READY menunjukkan bahwa ada dua penampung untuk setiap beban kerja: penampung utama dan container untuk proxy sidecar.

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...