Mengupgrade Apigee hybrid ke versi 1.5

<0x

Jika mengupgrade dari Apigee Hybrid versi 1.3 atau yang lebih lama, Anda harus mengupgrade ke Hybrid versi 1.4 terlebih dahulu sebelum mengupgrade ke versi 1.5.10. Lihat petunjuk untuk Mengupgrade Apigee Hybrid ke versi 1.4.

Ringkasan upgrade ke versi 1.5.10.

Prosedur untuk mengupgrade Apigee Hybrid diatur dalam bagian berikut:

  1. Mencadangkan penginstalan hybrid Anda.
  2. Periksa versi Kubernetes Anda dan lakukan upgrade yang sesuai.
  3. Upgrade ASM.
  4. Instal versi runtime hybrid 1.5.

Prasyarat

Upgrade ke versi 1.5

  1. Petunjuk ini menggunakan variabel lingkungan APIGEECTL_HOME untuk direktori dalam sistem file tempat Anda menginstal apigeectl. Jika diperlukan, cd ke direktori apigeectl dan tentukan variabel dengan perintah berikut:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (Direkomendasikan) Buat salinan cadangan direktori $APIGEECTL_HOME/ versi 1.4 Anda. Contoh:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (Direkomendasikan) Cadangkan database Cassandra Anda dengan mengikuti petunjuk di Pencadangan dan pemulihan Cassandra
  4. Upgrade platform Kubernetes Anda ke versi yang didukung oleh hybrid 1.5. Ikuti dokumentasi platform Anda jika Anda memerlukan bantuan.
  5. Jika Anda menjalankan cert-manager versi sebelum v1.2.0, Anda harus mengupgradenya ke v1.2.0.
    1. Periksa versi cert-manager saat ini menggunakan perintah berikut:

      kubectl -n cert-manager get deployment -o yaml | grep 'image:'
      

      Sesuatu yang mirip dengan berikut akan ditampilkan:

      image: quay.io/jetstack/cert-manager-controller:v1.2.0
      image: quay.io/jetstack/cert-manager-cainjector:v1.2.0
      image: quay.io/jetstack/cert-manager-webhook:v1.2.0
    2. Hapus deployment menggunakan perintah berikut:
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Upgrade cert-manager ke versi v1.2.0 menggunakan perintah berikut:
      kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
      

Mengupgrade ASM ke versi 1.26

Lakukan upgrade menggunakan dokumentasi ASM yang sesuai untuk platform Anda:

Petunjuk untuk menginstal dan mengonfigurasi ASM berbeda-beda, bergantung pada platform Anda. Platform dibagi menjadi kategori berikut:

  • GKE: Cluster Google Kubernetes Engine yang berjalan di Google Cloud.
  • Di luar Google Cloud: Cluster Anthos yang berjalan di:
    • Cluster Anthos di VMware (GKE on-prem)
    • Anthos on bare metal
    • Cluster Anthos di AWS
    • Amazon EKS
  • Platform Kubernetes Lainnya: Cluster yang sesuai dibuat dan berjalan di:
    • AKS
    • EKS
    • OpenShift

GKE

Urutan untuk mengupgrade ke ASM versi 1.8.x untuk penginstalan hybrid Anda adalah sebagai berikut:

  1. Bersiap untuk upgrade.
  2. Instal ASM versi baru.
  3. Hapus deployment, layanan, dan webhook versi ASM sebelumnya dari penginstalan saat ini.
  4. Upgrade gateway Anda dan konfigurasikan webhook baru.

Untuk mengupgrade ke ASM versi 1.8.x untuk hybrid di GKE:

  1. Tinjau persyaratan dalam Mengupgrade Anthos Service Mesh, tetapi jangan lakukan upgrade terlebih dahulu.
  2. Sebelum menginstal versi baru, tentukan revisi saat ini. Anda akan memerlukan informasi ini untuk menghapus deployment, layanan, dan webhook versi ASM sebelumnya dari penginstalan saat ini. Gunakan perintah berikut untuk menyimpan revisi istiod saat ini ke variabel lingkungan:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. Buat file overlay.yaml baru atau verifikasi bahwa file overlay.yaml yang ada berisi konten berikut:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1260-11
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. Ikuti petunjuk di bagian berikut dalam dokumentasi ASM:
    1. Download asmcli
    2. Memberikan izin admin cluster
    3. Memvalidasi project dan cluster
    4. Upgrade dengan fitur opsional. Berhenti sebelum memulai "bagian Upgrade Gateway"
  5. Hapus webhook mutasi dan webhook validasi:
    1. cd ke direktori tempat Anda menginstal asmcli.
    2. Simpan revisi baru saat ini dalam variabel lingkungan untuk digunakan dalam skrip untuk menghapus webhook:
      UPGRADE_REV="asm-1260-11"
    3. buat skrip shell yang berisi perintah berikut:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. Jalankan skrip untuk menghapus webhook saat ini.
  6. Ikuti langkah-langkah di bagian Mengupgrade gateway untuk membuat webhook baru dan mengalihkan traffic ke gateway baru.

Di luar Google Cloud

Petunjuk ini mencakup upgrade ASM di:

  • Cluster Anthos di VMware (GKE on-prem)
  • Anthos on bare metal
  • Cluster Anthos di AWS
  • Amazon EKS
  1. Tinjau persyaratan dalam Mengupgrade Anthos Service Mesh, tetapi jangan lakukan upgrade terlebih dahulu.
  2. Sebelum menginstal versi baru, tentukan revisi saat ini. Anda akan memerlukan informasi ini untuk menghapus validating webhook dan mutating webhook dari penginstalan ASM Anda saat ini. Gunakan perintah berikut untuk menyimpan revisi istiod saat ini ke variabel lingkungan:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. Buat file overlay.yaml baru atau verifikasi bahwa file overlay.yaml yang ada berisi konten berikut:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1260-11
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. Ikuti petunjuk di bagian berikut dalam dokumentasi ASM:
    1. Download asmcli
    2. Memberikan izin admin cluster
    3. Memvalidasi project dan cluster
    4. Upgrade dengan fitur opsional. Berhenti sebelum memulai "bagian Upgrade Gateway"
  5. Hapus webhook mutasi dan webhook validasi:
    1. cd ke direktori tempat Anda menginstal asmcli.
    2. Simpan revisi baru saat ini dalam variabel lingkungan untuk digunakan dalam skrip untuk menghapus webhook:
      UPGRADE_REV="asm-1260-11"
    3. buat skrip shell yang berisi perintah berikut:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      
      gcloud config configurations activate ${PROJECT_ID}
      gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
      
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. Jalankan skrip untuk menghapus webhook saat ini.
  6. Ikuti langkah-langkah di bagian Mengupgrade gateway untuk membuat webhook baru dan mengalihkan traffic ke gateway baru.

AKS / EKS

Dalam petunjuk ini, proses mengupgrade versi Anthos Service Mesh (ASM) istio-1.26.0-asm.11 di cluster terpasang Anthos sama dengan melakukan penginstalan baru.

Mempersiapkan penginstalan Anthos Service Mesh

    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.26.0-asm.11-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.26.0-asm.11-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig istio-1.26.0-asm.11.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests/profiles.
  4. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  5. Untuk mempermudah, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz
  8. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.0-asm.11-osx.tar.gz.1.sig istio-1.26.0-asm.11.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests/profiles.
  10. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  11. Untuk mempermudah, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip
  14. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.0-asm.11-win.zip.1.sig istio-1.26.0-asm.11.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests\profiles.
  16. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  17. Untuk mempermudah, tambahkan alat di direktori \bin ke PATH Anda:
    set PATH=%CD%\bin:%PATH%
  18. Setelah ASM Istio diinstal, periksa versi istioctl:
    istioctl version
  19. Buat namespace bernama istio-system untuk komponen bidang kontrol:
    kubectl create namespace istio-system

Mengonfigurasi webhook validasi

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

  1. Buat file bernama istiod-service.yaml dengan konten berikut:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1260-11
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1260-11
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. Gunakan kubectl untuk menerapkan konfigurasi webhook validasi:
    kubectl apply -f istiod-service.yaml
  3. Verifikasi bahwa konfigurasi telah diterapkan:
    kubectl get svc -n istio-system

    Responsnya akan terlihat seperti:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

Menginstal Anthos Service Mesh

  1. Instal Anthos Service Mesh dengan istioctl menggunakan profil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1260-11"

    Output Anda akan terlihat seperti:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1260-11-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1260-11-798ffb964-fnj8c       1/1     Running   1          3m21s

    Argumen --set revision menambahkan label revisi dalam format istio.io/rev=asm-1260-11 ke istiod. Label revisi digunakan oleh webhook penyuntik file bantuan otomatis untuk mengaitkan file bantuan yang disuntikkan dengan revisi istiod tertentu. Untuk mengaktifkan injeksi otomatis sidecar untuk namespace, Anda harus memberi label dengan revisi yang cocok dengan label di istiod.

  2. Pastikan penginstalan Anda selesai:
    kubectl get svc -n istio-system

    Output Anda akan terlihat seperti:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1260-11       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

Dalam petunjuk ini, proses mengupgrade versi Anthos Service Mesh (ASM) istio-1.26.0-asm.11 di cluster terpasang Anthos sama dengan melakukan penginstalan baru.

Mempersiapkan penginstalan Anthos Service Mesh

    Linux

  1. Berikan batasan konteks keamanan (SCC) anyuid ke istio-system dengan perintah OpenShift CLI (oc) berikut:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz
  3. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.0-asm.11-linux-amd64.tar.gz.1.sig istio-1.26.0-asm.11.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests/profiles.
  5. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  6. Untuk mempermudah, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. Berikan batasan konteks keamanan (SCC) anyuid ke istio-system dengan perintah OpenShift CLI (oc) berikut:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz
  10. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.0-asm.11-osx.tar.gz.1.sig istio-1.26.0-asm.11.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests/profiles.
  12. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  13. Untuk mempermudah, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Berikan batasan konteks keamanan (SCC) anyuid ke istio-system dengan perintah OpenShift CLI (oc) berikut:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip
  17. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.0-asm.11-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.0-asm.11-win.zip.1.sig istio-1.26.0-asm.11.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  18. Ekstrak konten file ke lokasi mana pun pada sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.26.0-asm.11-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja Anda saat ini bernama istio-1.26.0-asm.11 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh berada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh ada di direktori manifests\profiles.
  19. Pastikan Anda berada di direktori root penginstalan Anthos Service Mesh:
    cd istio-1.26.0-asm.11
  20. Untuk mempermudah, tambahkan alat di direktori \bin ke PATH Anda:
    set PATH=%CD%\bin:%PATH%
  21. Setelah ASM Istio diinstal, periksa versi istioctl:
    istioctl version
  22. Buat namespace bernama istio-system untuk komponen bidang kontrol:
    kubectl create namespace istio-system

Mengonfigurasi webhook validasi

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

  1. Buat file bernama istiod-service.yaml dengan konten berikut:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1260-11
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1260-11
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. Gunakan kubectl untuk menerapkan konfigurasi webhook validasi:
    kubectl apply -f istiod-service.yaml
  3. Verifikasi bahwa konfigurasi telah diterapkan:
    kubectl get svc -n istio-system

    Responsnya akan terlihat seperti:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

Menginstal Anthos Service Mesh

  1. Instal Anthos Service Mesh dengan istioctl menggunakan profil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.26.0-asm.11

    Output Anda akan terlihat seperti:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1260-11-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1260-11-798ffb964-fnj8c       1/1     Running   1          3m21s

    Argumen --set revision menambahkan label revisi dalam format istio.io/rev=1.8.6-asm.1 ke istiod. Label revisi digunakan oleh webhook penyuntik file bantuan otomatis untuk mengaitkan file bantuan yang disuntikkan dengan revisi istiod tertentu. Untuk mengaktifkan injeksi otomatis sidecar untuk namespace, Anda harus memberi label dengan revisi yang cocok dengan label di istiod.

  2. Pastikan penginstalan Anda selesai:
    kubectl get svc -n istio-system

    Output Anda akan terlihat seperti:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1260-11       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

Menginstal runtime hybrid 1.5.10

  1. Download paket rilis untuk sistem operasi Anda:

    Mac 64 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gz

    Linux 64 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gz

    Mac 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz

    Linux 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
  2. Ubah nama direktori apigeectl/ Anda saat ini menjadi nama direktori cadangan. Contoh:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Ekstrak konten file gzip yang didownload ke direktori dasar hybrid Anda. Contoh:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd ke direktori dasar.
  5. Konten tar secara default diekstrak ke dalam direktori dengan versi dan platform dalam namanya. Misalnya: ./apigeectl_1.5.0-d591b23_linux_64. Ganti nama direktori tersebut menjadi apigeectl:

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. Di direktori new apigeectl/, jalankan apigeectl init, apigeectl apply, dan apigeectl check-ready:
    1. Inisialisasi hybrid 1.5.10:
      apigeectl init -f OVERRIDES.yaml

      Dengan OVERRIDES.yaml adalah file overrides.yaml yang telah Anda edit.

    2. Pastikan diinisialisasi dengan benar menggunakan perintah berikut:
      apigeectl check-ready -f OVERRIDES.yaml
      kubectl describe apigeeds -n apigee

      Output Anda akan terlihat seperti:

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running
      
    3. Sintaksis tanda apigeectl --dry-run bergantung pada versi kubectl yang Anda jalankan. Periksa versi kubectl:
      gcloud version
    4. Periksa error dengan uji coba menggunakan perintah yang sesuai dengan versi kubectl Anda:

      kubectl versi 1.17 dan yang lebih lama:

      apigeectl apply -f OVERRIDES.yaml --dry-run=true

      kubectl versi 1.18 dan yang lebih baru:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. Terapkan penggantian Anda. Pilih dan ikuti petunjuk untuk lingkungan produksi atau lingkungan demo/eksperimental, bergantung pada penginstalan Anda.

      Produksi

      Untuk lingkungan produksi, Anda harus mengupgrade setiap komponen hybrid satu per satu, dan memeriksa status komponen yang diupgrade sebelum melanjutkan ke komponen berikutnya.

      1. Terapkan penggantian Anda untuk mengupgrade Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Penyelesaian pemeriksaan:
        apigeectl check-ready -f OVERRIDES.yaml

        Lanjutkan ke langkah berikutnya hanya jika pod sudah siap.

      3. Terapkan penggantian untuk mengupgrade komponen Telemetri dan memeriksa penyelesaian:
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Aktifkan komponen Redis:
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Terapkan penggantian untuk mengupgrade komponen tingkat organisasi (MART, Watcher, dan Apigee Connect) dan periksa penyelesaian:
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Terapkan penggantian untuk mengupgrade lingkungan Anda. Anda memiliki dua pilihan:
        • Lingkungan demi lingkungan: Terapkan penggantian Anda ke satu lingkungan dalam satu waktu dan periksa penyelesaiannya. Ulangi langkah ini untuk setiap lingkungan:
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          Dengan ENV_NAME adalah nama lingkungan yang Anda upgrade.

        • Semua lingkungan sekaligus: Terapkan penggantian ke semua lingkungan sekaligus dan periksa penyelesaiannya:
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      Demo/Eksperimental

      Di sebagian besar lingkungan demo atau eksperimental, Anda dapat menerapkan penggantian ke semua komponen sekaligus. Jika lingkungan demo/eksperimental Anda besar dan kompleks atau sangat mirip dengan lingkungan produksi, sebaiknya gunakan petunjuk untuk mengupgrade lingkungan produksi

      1. apigeectl apply -f OVERRIDES.yaml
      2. Periksa status:
        apigeectl check-ready -f OVERRIDES.yaml

Me-roll back upgrade

Ikuti langkah-langkah berikut untuk melakukan roll back upgrade sebelumnya:

  1. Hapus tugas yang telah selesai untuk namespace runtime hybrid, dengan NAMESPACE adalah namespace yang ditentukan dalam file penggantian, jika Anda menentukan namespace. Jika tidak, namespace default adalah apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Hapus tugas yang telah selesai untuk namespace apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Ubah variabel APIGEECTL_HOME agar mengarah ke direktori yang berisi apigeectl versi sebelumnya. Contoh:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. Di direktori root penginstalan yang ingin Anda kembalikan, jalankan apigeectl apply, periksa status pod Anda, hapus komponen Redis (baru di hybrid v1.5.0), lalu jalankan apigeectl init. Pastikan untuk menggunakan file penggantian asli untuk versi yang ingin Anda roll back:
    • Jalankan apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Periksa status pod Anda:
      kubectl -n NAMESPACE get pods

      Dengan NAMESPACE adalah namespace Apigee Hybrid Anda.

      Lanjutkan ke langkah berikutnya hanya jika pod apigeedssedang berjalan.

    • Karena Redis adalah komponen baru di hybrid v1.5, jalankan perintah berikut untuk menghapusnya:

      apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES.yaml
    • Jalankan apigeectl init:
      $APIGEECTL_HOME/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml