Upgrade di Apigee hybrid alla versione 1.5

Panoramica dell'aggiornamento alla versione 1.5.10.

Le procedure per l'upgrade di Apigee hybrid sono organizzate nelle seguenti sezioni:

  1. Esegui il backup dell'installazione ibrida.
  2. Controlla la versione di Kubernetes ed esegui l'upgrade in base alle tue esigenze.
  3. Esegui l'upgrade di ASM.
  4. Installa il runtime ibrido versione 1.5.

Prerequisiti

Esegui l'upgrade alla versione 1.5

  1. Queste istruzioni utilizzano la variabile di ambiente APIGEECTL_HOME per la directory nel file system in cui hai installato apigeectl. Se necessario, cd nella directory apigeectl e definisci la variabile con il seguente comando:

    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. (Consigliato) Crea una copia di backup della directory $APIGEECTL_HOME/ della versione 1.4. Ad esempio:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (Consigliato) Esegui il backup del database Cassandra seguendo le istruzioni in Backup e ripristino Cassandra
  4. Esegui l'upgrade della tua piattaforma Kubernetes alle versioni supportate dall'ibrido 1.5. Se hai bisogno di assistenza, segui la documentazione della piattaforma.
  5. Se utilizzi una versione di cert-manager precedente alla v1.2.0, devi eseguirne l'upgrade alla versione 1.2.0.
    1. Controlla la versione corrente di cert-manager utilizzando il seguente comando:

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

      Viene restituito un codice simile al seguente:

      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. Rimuovi i deployment utilizzando il seguente comando:
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Esegui l'upgrade di cert-manager alla versione v1.2.0 utilizzando il seguente comando:
      kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
      

Esegui l'upgrade di ASM alla versione 1.12

Esegui l'upgrade utilizzando la documentazione di ASM appropriata per la tua piattaforma:

Le istruzioni per installare e configurare ASM variano a seconda della piattaforma. Le piattaforme si dividono nelle seguenti categorie:

  • GKE: cluster Google Kubernetes Engine in esecuzione su Google Cloud.
  • All'esterno di Google Cloud: cluster Anthos in esecuzione su:
    • Cluster Anthos su VMware (GKE on-prem)
    • Anthos su Bare Metal
    • Cluster Anthos su AWS
    • Amazon EKS
  • Altre piattaforme Kubernetes: cluster conformi creati e in esecuzione su:
    • AKS
    • EKS
    • OpenShift

GKE

La sequenza per l'upgrade ad ASM versione 1.8.x per l'installazione ibrida è la seguente:

  1. Preparati per l'upgrade.
  2. Installa la nuova versione di ASM.
  3. Elimina i deployment, i servizi e i webhook della versione precedente di ASM dall'installazione attuale.
  4. Esegui l'upgrade dei gateway e configura i nuovi webhook.

Per eseguire l'upgrade ad ASM versione 1.8.x per gli ambienti ibridi su GKE:

  1. Esamina i requisiti in Esegui l'upgrade di Anthos Service Mesh, ma non eseguirlo ancora.
  2. Prima di installare la nuova versione, determina la revisione corrente. Queste informazioni saranno necessarie per eliminare i deployment, i servizi e i webhook della versione precedente di ASM dall'installazione attuale. Utilizza il comando seguente per archiviare la revisione corrente di istiod in una variabile di ambiente:
    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. Crea un nuovo file overlay.yaml o verifica che il file overlay.yaml esistente includa i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1129-3
      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. Segui le istruzioni nelle sezioni seguenti della documentazione di ASM:
    1. Scarica asmcli
    2. Concedi le autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Esegui l'upgrade con funzionalità facoltative. Interrompi prima di avviare la sezione "Esegui l'upgrade dei gateway"
  5. Elimina il webhook di modifica e di convalida del webhook:
    1. cd nella directory in cui hai installato asmcli.
    2. Archivia la nuova revisione attuale in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
      UPGRADE_REV="asm-1129-3"
    3. crea uno script shell contenente i seguenti comandi:
      #!/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. Esegui lo script per eliminare i webhook attuali.
  6. Segui la procedura descritta in Eseguire l'upgrade dei gateway per creare i nuovi webhook e trasferire il traffico ai nuovi gateway.

Al di fuori di Google Cloud

Queste istruzioni riguardano l'upgrade di ASM su:

  • Cluster Anthos su VMware (GKE on-prem)
  • Anthos su Bare Metal
  • Cluster Anthos su AWS
  • Amazon EKS
  1. Esamina i requisiti in Esegui l'upgrade di Anthos Service Mesh, ma non eseguirlo ancora.
  2. Prima di installare la nuova versione, determina la revisione corrente. Queste informazioni saranno necessarie per eliminare il webhook di convalida e il web di mutazione dall'attuale installazione di ASM. Utilizza il comando seguente per archiviare la revisione Istio corrente in una variabile di ambiente:
    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. Crea un nuovo file overlay.yaml o verifica che il file overlay.yaml esistente includa i seguenti contenuti:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1129-3
      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. Segui le istruzioni nelle sezioni seguenti della documentazione di ASM:
    1. Scarica asmcli
    2. Concedi le autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Esegui l'upgrade con funzionalità facoltative. Interrompi prima di avviare la sezione "Esegui l'upgrade dei gateway"
  5. Elimina il webhook di modifica e di convalida del webhook:
    1. cd nella directory in cui hai installato asmcli.
    2. Archivia la nuova revisione attuale in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
      UPGRADE_REV="asm-1129-3"
    3. crea uno script shell contenente i seguenti comandi:
      #!/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. Esegui lo script per eliminare i webhook attuali.
  6. Segui la procedura descritta in Eseguire l'upgrade dei gateway per creare i nuovi webhook e trasferire il traffico ai nuovi gateway.

AKS / EKS

In queste istruzioni, il processo di upgrade della versione istio-1.12.9-asm.3 di Anthos Service Mesh (ASM) sui cluster collegati ad Anthos equivale a eseguire una nuova installazione.

Preparazione dell'installazione di Anthos Service Mesh

    Linux

  1. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  3. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  4. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  5. Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  9. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  10. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  11. Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  15. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-win.zip

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests\profiles.
  16. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  17. Per praticità, aggiungi gli strumenti nella directory \bin al tuo PERCORSO:
    set PATH=%CD%\bin:%PATH%
  18. Ora che ASM Istio è installato, controlla la versione di istioctl:
    istioctl version
  19. Crea uno spazio dei nomi denominato istio-system per i componenti del piano di controllo:
    kubectl create namespace istio-system

Configura il webhook di convalida

Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su Istio. Devi impostare la stessa revisione sul webhook di convalida.

  1. Crea un file denominato istiod-service.yaml con i seguenti contenuti:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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. Utilizza kubectl per applicare la configurazione del webhook di convalida:
    kubectl apply -f istiod-service.yaml
  3. Verifica che la configurazione sia stata applicata:
    kubectl get svc -n istio-system

    La risposta dovrebbe essere simile a:

    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
    

Installazione di Anthos Service Mesh

  1. Installa Anthos Service Mesh con istioctl utilizzando il profilo asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    L'output dovrebbe essere simile al seguente:

    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-1129-3-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1129-3-798ffb964-fnj8c       1/1     Running   1          3m21s
    

    L'argomento --set revision aggiunge un'etichetta di revisione nel formato istio.io/rev=asm-1129-3 a istiod. L'etichetta della revisione viene utilizzata dal webhook iniettore sidecar automatico per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su Istio.

  2. Verifica che l'installazione sia stata completata:
    kubectl get svc -n istio-system

    L'output dovrebbe essere simile al seguente:

    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-1129-3       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s
    

OpenShift

In queste istruzioni, il processo di upgrade della versione istio-1.12.9-asm.3 di Anthos Service Mesh (ASM) sui cluster collegati ad Anthos equivale a eseguire una nuova installazione.

Preparazione dell'installazione di Anthos Service Mesh

    Linux

  1. Concedi il vincolo del contesto di sicurezza (SCC) anyuid a istio-system con il seguente comando dell'interfaccia a riga di comando di OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  4. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  5. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  6. Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. Concedi il vincolo del contesto di sicurezza (SCC) anyuid a istio-system con il seguente comando dell'interfaccia a riga di comando di OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  11. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  12. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  13. Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Concedi il vincolo del contesto di sicurezza (SCC) anyuid a istio-system con il seguente comando dell'interfaccia a riga di comando di OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. Scarica il file della firma e utilizza OpenID per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  18. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro attuale:
    tar xzf istio-1.12.9-asm.3-win.zip

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.12.9-asm.3 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests\profiles.
  19. Assicurati di essere nella directory root dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  20. Per praticità, aggiungi gli strumenti nella directory \bin al tuo PERCORSO:
    set PATH=%CD%\bin:%PATH%
  21. Ora che ASM Istio è installato, controlla la versione di istioctl:
    istioctl version
  22. Crea uno spazio dei nomi denominato istio-system per i componenti del piano di controllo:
    kubectl create namespace istio-system

Configura il webhook di convalida

Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su Istio. Devi impostare la stessa revisione sul webhook di convalida.

  1. Crea un file denominato istiod-service.yaml con i seguenti contenuti:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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. Utilizza kubectl per applicare la configurazione del webhook di convalida:
    kubectl apply -f istiod-service.yaml
  3. Verifica che la configurazione sia stata applicata:
    kubectl get svc -n istio-system

    La risposta dovrebbe essere simile a:

    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
    

Installazione di Anthos Service Mesh

  1. Installa Anthos Service Mesh con istioctl utilizzando il profilo asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.12.9-asm.3

    L'output dovrebbe essere simile al seguente:

    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-1129-3-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1129-3-798ffb964-fnj8c       1/1     Running   1          3m21s
    

    L'argomento --set revision aggiunge un'etichetta di revisione nel formato istio.io/rev=1.8.6-asm.1 a istiod. L'etichetta della revisione viene utilizzata dal webhook iniettore sidecar automatico per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su Istio.

  2. Verifica che l'installazione sia stata completata:
    kubectl get svc -n istio-system

    L'output dovrebbe essere simile al seguente:

    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-1129-3       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s
    

installa il runtime ibrido 1.5.10

  1. Scarica il pacchetto di rilascio per il tuo sistema operativo:

    Mac 64 bit:

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

    Linux a 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 a 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
  2. Rinomina la directory apigeectl/ attuale in un nome di directory di backup. Ad esempio:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Estrai il contenuto del file gzip scaricato nella directory base ibrida. Ad esempio:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY

  4. cd alla directory di base.
  5. I contenuti tar vengono, per impostazione predefinita, espansi in una directory che contiene la versione e la piattaforma nel nome. Ad esempio: ./apigeectl_1.5.0-d591b23_linux_64. Rinomina la directory in apigeectl:

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. Nella nuova directory apigeectl/, esegui apigeectl init, apigeectl apply e apigeectl check-ready:
    1. Inizializza l'ibrido 1.5.10:
      apigeectl init -f OVERRIDES.yaml

      Dove OVERRIDES.yaml è il file overrides.yaml modificato.

    2. Verifica che sia stato inizializzato correttamente con i seguenti comandi:
      apigeectl check-ready -f OVERRIDES.yaml
      kubectl describe apigeeds -n apigee

      L'output dovrebbe essere simile al seguente:

      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. La sintassi del flag --dry-run apigeectl dipende dalla versione di kubectl in esecuzione. Controlla la versione di kubectl:
      gcloud version
    4. Verifica la presenza di errori con una prova con il comando appropriato per la tua versione di kubectl:

      kubectl versione 1.17 e precedenti:

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

      kubectl 1.18 e versioni successive:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. Applica gli override. Seleziona e segui le istruzioni per gli ambienti di produzione o per gli ambienti demo/sperimentali, a seconda dell'installazione.

      Produzione

      Per gli ambienti di produzione, devi eseguire l'upgrade di ogni componente ibrido singolarmente e controllare lo stato del componente aggiornato prima di passare al componente successivo.

      1. Applica gli override per eseguire l'upgrade di Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Completamento del controllo:
        apigeectl check-ready -f OVERRIDES.yaml

        Procedi al passaggio successivo solo quando i pod sono pronti.

      3. Applica gli override per eseguire l'upgrade dei componenti di telemetria e controlla il completamento:
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Attiva i componenti Redis:
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Applica gli override per eseguire l'upgrade dei componenti a livello di organizzazione (MART, Watcher e Apigee Connect) e verifica il completamento:
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Applica gli override per eseguire l'upgrade dei tuoi ambienti. Hai due possibilità:
        • Ambiente per ambiente: applica gli override a un ambiente alla volta e verifica il completamento. Ripeti questo passaggio per ogni ambiente:
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          Dove ENV_NAME è il nome dell'ambiente di cui stai eseguendo l'upgrade.

        • Tutti gli ambienti contemporaneamente: applica gli override a tutti gli ambienti contemporaneamente e verifica il completamento:
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      Demo/sperimentale

      Nella maggior parte degli ambienti dimostrativi o sperimentali, puoi applicare gli override a tutti i componenti contemporaneamente. Se il tuo ambiente demo/sperimentale è di grandi dimensioni e complesso o riproduce da vicino un ambiente di produzione, puoi utilizzare le istruzioni per l'upgrade degli ambienti di produzione

      1. apigeectl apply -f OVERRIDES.yaml
      2. Controlla lo stato:
        apigeectl check-ready -f OVERRIDES.yaml

Rollback di un upgrade

Per eseguire il rollback di un upgrade precedente, segui questi passaggi:

  1. Esegui la pulizia dei job completati per lo spazio dei nomi del runtime ibrido, dove NAMESPACE è lo spazio dei nomi specificato nel file di override, se hai specificato uno spazio dei nomi. In caso contrario, lo spazio dei nomi predefinito è apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Pulisci i job completati per lo spazio dei nomi apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Modifica la variabile APIGEECTL_HOME in modo che punti alla directory che contiene la versione precedente di apigeectl. Ad esempio:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. Nella directory root dell'installazione di cui vuoi eseguire il rollback, esegui apigeectl apply, controlla lo stato dei pod, elimina il componente Redis (nuovo nell'ibrido v1.5.0), quindi esegui apigeectl init. Assicurati di utilizzare il file di override originale per la versione a cui vuoi eseguire il rollback:
    • Esecuzione apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Controlla lo stato dei pod:
      kubectl -n NAMESPACE get pods

      Dove NAMESPACE è lo spazio dei nomi ibrido di Apigee.

      Procedi al passaggio successivo solo quando il apigeedspod è in esecuzione.

    • Poiché Redis è un nuovo componente dell'ibrido v1.5, esegui questo comando per eliminarlo:

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