Mengupgrade Anthos Service Mesh di GKE

Panduan ini menjelaskan cara mengupgrade Anthos Service Mesh dari versi 1.4.5+ or 1.5.4+ ke versi 1.5.10 di Google Kubernetes Engine.

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

    Jika melakukan upgrade dari Anthos Service Mesh 1.4.5+ dan mengaktifkan fitur opsional dalam file YAML, Anda harus mengonversi YAML dari IstioControlPlane API menjadi IstioOperator API.

  3. Jika mengupgrade Anthos Service Mesh di cluster pribadi, Anda harus menambahkan aturan firewall untuk membuka port 15017 jika ingin menggunakan injeksi file bantuan 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.

  4. Menjadwalkan periode nonaktif. Proses upgrade dapat memerlukan waktu hingga 1 jam, bergantung pada skala cluster. Perhatikan bahwa hal ini tidak termasuk waktu yang Anda perlukan untuk men-deploy ulang beban kerja untuk memperbarui proxy file bantuan.

Memangkas resource 1,4

Jika menginstal Anthos Service Mesh 1.4 menggunakan versi alfa GKE Enterprise CLI, Anda mungkin perlu memangkas resource 1.4 sebelum mengupgrade ke versi 1.5.10.

Periksa apakah resource Anthos Service Mesh memiliki label operator.istio.io/component.

kubectl get all -n istio-system --selector operator.istio.io/component

Jika perintah ini menampilkan No resources found in istio-system namespace, gunakan perintah berikut untuk memangkas resource Anthos Service Mesh 1.4.

kubectl delete deploy -n istio-system promsd
kubectl delete all -n istio-system --selector 'app in (galley, istio-ingressgateway, istio-nodeagent, sidecarInjectorWebhook, promsd, pilot)'

Menetapkan default project dan cluster

  1. Dapatkan project ID project tempat cluster dibuat:

    gcloud

    gcloud projects list

    Konsol

    1. Di konsol Google Cloud, buka halaman Dasbor:

      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 di Dasbor project.

  2. Buat variabel lingkungan untuk project ID:

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Tetapkan project ID default untuk Google Cloud CLI:

    gcloud config set project ${PROJECT_ID}
    
  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
  5. Tetapkan zona atau region default untuk Google Cloud CLI.

    • Jika Anda memiliki cluster zona tunggal, tetapkan zona default:

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Jika Anda memiliki cluster regional, tetapkan region default:

      gcloud config set compute/region ${CLUSTER_LOCATION}

Menetapkan kredensial dan izin

  1. Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster:
    gcloud container clusters get-credentials ${CLUSTER_NAME}
  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 binding admin cluster 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 - -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:

    • Aplikasi contoh di samples
    • Alat berikut di direktori bin:
      • istioctl: Anda menggunakan istioctl untuk menginstal Anthos Service Mesh.
      • asmctl: Anda menggunakan asmctl untuk membantu memvalidasi konfigurasi keamanan setelah menginstal Anthos Service Mesh. (Saat ini, asmctl tidak didukung di GKE di VMware.)

  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:

    • Aplikasi contoh di samples
    • Alat berikut di direktori bin:
      • istioctl: Anda menggunakan istioctl untuk menginstal Anthos Service Mesh.
      • asmctl: Anda menggunakan asmctl untuk membantu memvalidasi konfigurasi keamanan setelah menginstal Anthos Service Mesh. (Saat ini, asmctl tidak didukung di GKE di VMware.)

  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:

    • Aplikasi contoh di samples
    • Alat berikut di direktori bin:
      • istioctl: Anda menggunakan istioctl untuk menginstal Anthos Service Mesh.
      • asmctl: Anda menggunakan asmctl untuk membantu memvalidasi konfigurasi keamanan setelah menginstal Anthos Service Mesh. (Saat ini, asmctl tidak didukung di GKE di VMware.)

  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 istioctl apply command untuk mengupgrade Anthos Service Mesh, tentukan -f istio-operator.yaml di command line. File ini berisi informasi tentang project dan cluster Anda yang diperlukan untuk mengaktifkan fitur keamanan Mesh dan telemetri Mesh. Anda harus mendownload istio-operator.yaml dan file konfigurasi resource lainnya serta menetapkan informasi project dan cluster.

Untuk menyiapkan file konfigurasi resource:

  1. Jika Anda belum melakukannya, instal kpt:

    gcloud components install kpt
    
  2. Jika ingin, buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Jika ingin menyiapkan lebih dari satu cluster, Anda dapat menggunakan nama cluster tersebut sebagai nama direktori.

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

  4. Download paket Anthos Service Mesh ke direktori kerja saat ini:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
    

  5. Tetapkan nama cluster:

      kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}

  6. Secara opsional, sesuaikan file konfigurasi resource menggunakan penyetel kpt. Secara default, penyetel ini menggunakan default untuk gcloud config. Jika Anda menetapkan default gcloud config, atau jika ingin mengubah nilainya, jalankan penyetel berikut:

    • Tetapkan ID project:

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Tetapkan zona atau region default:

      kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
  7. Secara opsional, Anda dapat memeriksa file konfigurasi resource ke sistem kontrol sumber Anda sendiri, seperti Cloud Source Repositories, sehingga Anda dapat melacak perubahan pada file tersebut.

Mengupgrade Anthos Service Mesh

Bagian ini menjelaskan cara mengupgrade Anthos Service Mesh dan mengaktifkan:

  • Fitur Default yang didukung tercantum di halaman Fitur yang didukung.
  • Certificate authority Anthos Service Mesh (Mesh CA).
  • Pipeline data telemetri yang mendukung dasbor Anthos Service Mesh di Konsol Google Cloud.

Untuk mengetahui informasi tentang cara mengaktifkan fitur Opsional yang didukung, lihat Mengaktifkan fitur opsional.

Untuk menginstal Anthos Service Mesh:

Pilih salah satu perintah berikut untuk mengonfigurasi Anthos Service Mesh dalam mode autentikasi PERMISSIVE mutual TLS (mTLS) atau mode mTLS STRICT.

mTLS PERMISSIF

istioctl manifest apply --set profile=asm \
  -f asm/cluster/istio-operator.yaml

mTLS KETAT

istioctl manifest apply --set profile=asm \
  -f asm/cluster/istio-operator.yaml \
  --set values.global.mtls.enabled=true

Memeriksa komponen bidang kontrol

Upgrade memerlukan penginstalan ulang komponen bidang kontrol, yang memerlukan waktu sekitar 5 hingga 10 menit untuk diselesaikan. 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.

Memvalidasi penginstalan

Sebaiknya gunakan alat analisis asmctl untuk memvalidasi konfigurasi dasar project, cluster, dan workload Anda. Jika pengujian asmctl gagal, asmctl akan merekomendasikan solusi, jika memungkinkan. Perintah asmctl validate menjalankan pengujian dasar yang memeriksa:

  1. Bahwa API yang diperlukan oleh Anthos Service Mesh diaktifkan di project.
  2. Bahwa Istio-Ingressgateway dikonfigurasi dengan benar untuk memanggil Mesh CA.
  3. Kondisi umum Istiod dan Istio-Ingressgateway.

Jika Anda menjalankan perintah asmctl validate dengan flag --with-testing-workloads opsional, selain pengujian dasar, asmctl akan menjalankan pengujian keamanan yang memeriksa:

  1. Komunikasi TLS (mTLS) dikonfigurasi dengan benar.
  2. Mesh CA dapat menerbitkan sertifikat.

Untuk menjalankan pengujian keamanan, asmctl men-deploy beban kerja pada cluster Anda dalam namespace pengujian, menjalankan pengujian komunikasi mTLS, menampilkan hasilnya, dan menghapus namespace pengujian.

Untuk menjalankan asmctl:

  1. Pastikan kredensial gcloud application-default ditetapkan:

     gcloud auth application-default login
    
  2. Jika Anda belum melakukannya, dapatkan kredensial autentikasi untuk berinteraksi dengan cluster:

     gcloud container clusters get-credentials ${CLUSTER_NAME}
    
  3. Untuk menjalankan pengujian dasar dan keamanan (dengan asumsi istio-1.5.10-asm.2/bin) ada di PATH Anda):

    asmctl validate --with-testing-workloads
    

    Jika berhasil, perintah akan merespons dengan output yang mirip dengan berikut ini:

    [asmctl version 0.3.0]
    Using Kubernetes context: example-project_us-central1-example-cluster
    To change the context, use the --context flag
    Validating enabled APIs
    OK
    Validating ingressgateway configuration
    OK
    Validating istio system
    OK
    Validating sample traffic
    Launching example services...
    Sent traffic to example service http code: 200
    verified mTLS configuration
    OK
    Validating issued certs
    OK
    

Memperbarui proxy file bantuan

Setiap beban kerja yang berjalan di cluster sebelum Anda mengupgrade Anthos Service Mesh harus memasukkan atau mengupdate sidecar proxy agar memiliki versi Anthos Service Mesh saat ini.

Dengan injeksi file bantuan otomatis, Anda dapat memperbarui 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 YOUR_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 --all

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