Upgrade di Apigee hybrid alla versione 1.5 in corso...

Panoramica dell'upgrade 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 modo appropriato.
  3. Esegui l'upgrade di ASM.
  4. Installa la versione 1.5 del runtime di hybrid.

Prerequisito

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 riportate in Backup e recupero di Cassandra
  4. Esegui l'upgrade della piattaforma Kubernetes alle versioni supportate da hybrid 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 v1.2.0.
    1. Controlla la versione attuale di cert-manager utilizzando il comando seguente:

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

      Viene restituito un risultato 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 comando seguente:
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Esegui l'upgrade di cert-manager alla versione 1.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 ASM appropriata per la tua piattaforma:

Le istruzioni per installare e configurare ASM variano a seconda della piattaforma. La piattaforme sono suddivise nelle seguenti categorie:

  • GKE: cluster Google Kubernetes Engine in esecuzione su Google Cloud.
  • Al di fuori di Google Cloud: cluster Anthos in esecuzione su:
    • Cluster Anthos su VMware (GKE on-prem)
    • Anthos on 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 eseguire l'upgrade alla versione 1.8.x di ASM 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 dal tuo l'installazione corrente.
  4. Esegui l'upgrade dei gateway e configura i nuovi webhook.

Per eseguire l'upgrade alla versione 1.8.x di ASM per l'ambiente ibrido su GKE:

  1. Esamina i requisiti in Eseguire l'upgrade di Anthos Service Mesh, ma non eseguire ancora l'upgrade.
  2. Prima di installare la nuova versione, determina la revisione corrente. Ti serviranno queste informazioni per eliminare i deployment, i servizi e gli webhook della versione ASM precedente dalla tua installazione attuale. Utilizza il seguente comando 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 gli asset esistenti overlay.yaml include 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 riportate nelle seguenti sezioni della documentazione di ASM:
    1. Scarica asmcli
    2. Concedi autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Upgrade con funzionalità facoltative. Interrompi prima di iniziare la sezione "Eseguire l'upgrade dei gateway"
  5. Elimina il webhook mutante e il webhook di convalida:
    1. cd nella directory in cui hai installato asmcli.
    2. Archivia la nuova revisione corrente in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
      UPGRADE_REV="asm-1129-3"
    3. e creerai 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 i passaggi descritti 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 on bare metal
  • Cluster Anthos su AWS
  • Amazon EKS
  1. Esamina i requisiti in Eseguire l'upgrade di Anthos Service Mesh, ma non eseguire ancora l'upgrade.
  2. Prima di installare la nuova versione, determina la revisione corrente. Ti serviranno queste informazioni per eliminare il webhook di convalida e il webhook di mutazione dalla tua attuale installazione di ASM. Utilizza il seguente comando 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 gli asset esistenti overlay.yaml include 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 riportate nelle seguenti sezioni della documentazione di ASM:
    1. Scarica asmcli
    2. Concedere le autorizzazioni di amministratore del cluster
    3. Convalida progetto e cluster
    4. Eseguire l'upgrade con funzionalità facoltative. Interrompi prima di iniziare la sezione "Eseguire l'upgrade dei gateway"
  5. Elimina il webhook mutante e il webhook di convalida:
    1. cd nella directory in cui hai installato asmcli.
    2. Archivia la nuova revisione corrente in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
      UPGRADE_REV="asm-1129-3"
    3. e creerai 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 i passaggi descritti in Eseguire l'upgrade gateway per creare i nuovi webhook e indirizzare il traffico ai nuovi gateway.

AKS / EKS

In queste istruzioni viene spiegato come eseguire l'upgrade della versione di Anthos Service Mesh (ASM) istio-1.12.9-asm.3 su cluster collegati ad Anthos è la stessa cosa che eseguire una nuova installazione.

Preparazione dell'installazione di Anthos Service Mesh

    Linux

  1. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    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 Opensl 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 tuo file system. Ad esempio: per estrarre il contenuto della directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano Directory manifests/profiles.
  4. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  5. Per praticità, aggiungi gli strumenti della directory /bin al tuo PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. Scarica il file di installazione di Anthos Service Mesh nella 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 Opensl 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 del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano Directory manifests/profiles.
  10. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  11. Per praticità, aggiungi gli strumenti della directory /bin al tuo PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    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 Opensl 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 tuo file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-win.zip

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano 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 della directory \bin al tuo PATH:
    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 istiod. Devi impostare lo stesso 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 di convalida del webhook:
    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 alla seguente:

    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 Da istio.io/rev=asm-1129-3 a istiod. L'etichetta di revisione viene utilizzata webhook di iniezione di sidecar automatico per associare i sidecar iniettati a un particolare istiod revisione. Per attivare l'iniezione automatica di sidecar per uno spazio dei nomi, devi etichettarlo con una revisione corrispondente all'etichetta su istiod.

  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 viene spiegato come eseguire l'upgrade della versione di Anthos Service Mesh (ASM) istio-1.12.9-asm.3 su cluster collegati ad Anthos è la stessa cosa che eseguire una nuova installazione.

Preparazione dell'installazione di Anthos Service Mesh

    Linux

  1. Concedi il vincolo di contesto di sicurezza (SCC) anyuid al sistema istio con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    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 Opensl 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 tuo file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano Directory manifests/profiles.
  5. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  6. Per praticità, aggiungi gli strumenti della directory /bin al tuo PATH:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. Concedi il vincolo di contesto di sicurezza (SCC) anyuid al sistema istio con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    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 Opensl 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 del file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano Directory manifests/profiles.
  12. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  13. Per praticità, aggiungi gli strumenti della directory /bin al tuo PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Concedi la limitazione del contesto di sicurezza anyuid (SCC) a istio-system con il seguente comando OpenShift CLI (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro corrente:
    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 Opensl 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 del file system. Ad esempio: per estrarre il contenuto della directory di lavoro corrente:
    tar xzf istio-1.12.9-asm.3-win.zip

    Il comando crea una directory di installazione nella directory di lavoro corrente 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 Il mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano 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 della directory \bin al tuo PATH:
    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 istiod. Devi impostare lo stesso 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 di convalida del webhook:
    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 alla seguente:

    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 avere il seguente aspetto:

    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 Da istio.io/rev=1.8.6-asm.1 a istiod. L'etichetta di revisione viene utilizzata dal webhook dell'iniettore di sidecar automatico per associare i sidecar iniettati a una determinata revisione di Istio. Per abilitare l'inserimento automatico del file collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponde all'etichetta sullo standard.

  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 di hybrid 1.5.10

  1. Scarica il pacchetto della release per il tuo sistema operativo:

    Mac a 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 con il nome di una directory di backup. Ad esempio:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Estrai i contenuti del file gzip scaricato nella directory di base ibrida. Ad esempio:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd alla directory di base.
  5. Per impostazione predefinita, i contenuti del file tar vengono espansi in una directory con la versione e la piattaforma nel nome. Ad esempio: ./apigeectl_1.5.0-d591b23_linux_64. Rinomina la directory a 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 hybrid 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 apigeectl --dry-run 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 versione 1.18 e successive:

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

      Produzione

      Per gli ambienti di produzione, devi eseguire l'upgrade di ogni componente ibrida singolarmente e controllare lo stato del componente di cui è stato eseguito l'upgrade prima di procedere con il componente successivo.

      1. Applica le sostituzioni per eseguire l'upgrade di Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Controlla il completamento:
        apigeectl check-ready -f OVERRIDES.yaml

        Vai al passaggio successivo solo quando i pod sono pronti.

      3. Applica le sostituzioni 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. Visualizza i componenti Redis:
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Applica le sostituzioni per eseguire l'upgrade dei componenti a livello di organizzazione (MART, Watcher e Apigee Connect) e controlla il completamento:
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Applica gli override per eseguire l'upgrade degli ambienti. Hai a disposizione due opzioni:
        • Per ambiente: applica le sostituzioni a un ambiente alla volta e controlla 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 demo o sperimentali, puoi applicare le sostituzioni a tutti i componenti contemporaneamente. Se il tuo ambiente dimostrativo/sperimentale è ampio e complesso o imita da vicino una di produzione, ti consigliamo di utilizzare le istruzioni per eseguire l'upgrade 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:

  1. Esegui la pulizia dei job completati per lo spazio dei nomi del runtime ibrido, dove NAMESPACE è specificato nel file degli 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. Esegui la pulizia dei 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 principale dell'installazione a cui vuoi eseguire il rollback, esegui apigeectl apply, controlla lo stato dei pod, elimina il componente Redis (novità nella versione 1.5.0 di hybrid) e poi esegui apigeectl init. Assicurati di utilizzare il file di override originale per la versione vuoi eseguire il rollback a:
    • Corsa di apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Controlla lo stato dei tuoi pod:
      kubectl -n NAMESPACE get pods

      Dove NAMESPACE è il tuo spazio dei nomi ibrido Apigee.

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

    • Poiché Redis è un nuovo componente nella versione ibrida 1.5, esegui il seguente comando per eliminarlo:

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