Mettre à niveau Apigee hybrid vers la version 1.5

Présentation de la mise à niveau vers la version 1.5.10.

Les procédures de mise à niveau d'Apigee hybrid sont organisées dans les sections suivantes :

  1. Sauvegardez votre installation hybride.
  2. Vérifiez votre version de Kubernetes et effectuez la mise à niveau si nécessaire.
  3. Mettez à jour ASM.
  4. Installez la version 1.5 de l'environnement d'exécution hybride.

Conditions préalables

Mise à niveau vers la version 1.5

  1. Ces instructions utilisent la variable d'environnement APIGEECTL_HOME pour le répertoire de votre système de fichiers sur lequel vous avez installé apigeectl. Si nécessaire, cd dans votre répertoire apigeectl et définissez la variable à l'aide de la commande suivante :

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    macOS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (Recommandé) Créez une copie de sauvegarde du répertoire $APIGEECTL_HOME/ de la version 1.4. Exemple :
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (Recommandé) Sauvegardez votre base de données Cassandra en suivant les instructions figurant sur la page Sauvegarde et récupération de Cassandra.
  4. Mettez à niveau votre plate-forme Kubernetes vers les versions compatibles avec hybrid en version 1.5. Si vous avez besoin d'aide, consultez la documentation de votre plate-forme.
  5. Si vous exécutez une version de cert-manager antérieure à la version 1.2.0, vous devez la mettre à niveau vers la version 1.2.0.
    1. Vérifiez la version actuelle de cert-manager à l'aide de la commande suivante :

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

      Un résultat semblable au suivant s'affiche :

      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. Supprimez les déploiements à l'aide de la commande suivante :
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Mettez à niveau cert-manager vers la version 1.2.0 à l'aide de la commande suivante :
      kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
      

Mettre à niveau ASM 1.12

Effectuez la mise à niveau à l'aide de la documentation ASM correspondant à votre plate-forme :

Les instructions d'installation et de configuration d'ASM varient en fonction de votre plate-forme. Les plates-formes sont réparties dans les catégories suivantes :

  • GKE : clusters Google Kubernetes Engine s'exécutant sur Google Cloud.
  • En dehors de Google Cloud : clusters Anthos s'exécutant sur :
    • Anthos clusters on VMware (GKE On-Prem)
    • Anthos sur solution Bare Metal
    • Anthos clusters on AWS
    • Amazon EKS
  • Autres plates-formes Kubernetes : clusters conformes, créés et exécutés sur :
    • AKS
    • EKS
    • OpenShift

GKE

Pour l'installation hybride, la séquence de mise à niveau vers la version 1.8.x d'ASM est la suivante :

  1. Anticiper la mise à niveau
  2. Installer la nouvelle version d'ASM
  3. Supprimer les déploiements, les services et les webhooks de la version précédente ASM de votre installation actuelle
  4. Mettre à niveau vos passerelles et configurer les nouveaux webhooks

Pour passer à ASM version 1.8.x pour hybrid sur GKE :

  1. Passez en revue les exigences de la section Mettre à niveau Anthos Service Mesh, mais n'effectuez pas encore la mise à niveau.
  2. Avant d'installer la nouvelle version, déterminez la révision actuelle. Vous aurez besoin de ces informations pour supprimer les déploiements, les services et les webhooks de la version ASM précédente de votre installation actuelle. Utilisez la commande suivante pour stocker la révision Istiod actuelle dans une variable d'environnement :
    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. Créez un fichier overlay.yaml ou vérifiez que votre overlay.yaml existant contient les éléments suivants :
    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. Suivez les instructions des sections suivantes de la documentation ASM :
    1. Téléchargez asmcli
    2. Accordez des autorisations d'administrateur de cluster.
    3. Validez le projet et le cluster
    4. Passez à une édition supérieure avec des fonctionnalités facultatives Arrêtez avant de commencer la section "Mettre à niveau les passerelles"
  5. Supprimez le webhook de mutation et validez le webhook :
    1. Exécutez la commande cd dans le répertoire dans lequel vous avez installé asmcli.
    2. Stockez la nouvelle révision actuelle dans une variable d'environnement à utiliser dans le script pour supprimer les webhooks :
      UPGRADE_REV="asm-1129-3"
    3. Créez un script shell contenant les commandes suivantes :
      #!/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. Exécutez le script pour supprimer les webhooks actuels.
  6. Suivez les étapes décrites dans la section Mettre à niveau des passerelles pour créer les webhooks et basculer le trafic vers les nouvelles passerelles.

Exécution en dehors de Google Cloud

Ces instructions concernent la mise à niveau d'ASM sur :

  • Anthos clusters on VMware (GKE On-Prem)
  • Anthos sur solution Bare Metal
  • Anthos clusters on AWS
  • Amazon EKS
  1. Passez en revue les exigences de la section Mettre à niveau Anthos Service Mesh, mais n'effectuez pas encore la mise à niveau.
  2. Avant d'installer la nouvelle version, déterminez la révision actuelle. Vous aurez besoin de ces informations pour supprimer le webhook de validation et le webhook en mutation de votre installation ASM actuelle. Utilisez la commande suivante pour stocker la révision Istiod actuelle dans une variable d'environnement :
    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. Créez un fichier overlay.yaml ou vérifiez que votre overlay.yaml existant contient les éléments suivants :
    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. Suivez les instructions des sections suivantes de la documentation ASM :
    1. Téléchargez asmcli
    2. Accordez des autorisations d'administrateur de cluster.
    3. Validez le projet et le cluster
    4. Passez à une édition supérieure avec des fonctionnalités facultatives Arrêtez avant de commencer la section "Mettre à niveau les passerelles"
  5. Supprimez le webhook de mutation et validez le webhook :
    1. Exécutez la commande cd dans le répertoire dans lequel vous avez installé asmcli.
    2. Stockez la nouvelle révision actuelle dans une variable d'environnement à utiliser dans le script pour supprimer les webhooks :
      UPGRADE_REV="asm-1129-3"
    3. Créez un script shell contenant les commandes suivantes :
      #!/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. Exécutez le script pour supprimer les webhooks actuels.
  6. Suivez les étapes décrites dans la section Mettre à niveau les passerelles pour créer les webhooks et basculer le trafic vers les nouvelles passerelles.

AKS / EKS

Dans ces instructions, la procédure de mise à niveau d'Anthos Service Mesh (ASM) en version istio-1.12.9-asm.3 sur des clusters associés à Anthos est la même que pour effectuer une nouvelle installation.

Préparer l'installation d'Anthos Service Mesh

    Linux

  1. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  4. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  5. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  6. macOS

  7. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  10. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  11. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-win.zip

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests\profiles
  16. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  17. Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
    set PATH=%CD%\bin:%PATH%
  18. Maintenant qu'ASM Istio est installé, vérifiez la version d'istioctl :
    istioctl version
  19. Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
    kubectl create namespace istio-system

Configurer le webhook de validation

Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.

  1. Créez un fichier nommé istiod-service.yaml avec le contenu suivant :
    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. Utilisez kubectl pour appliquer la configuration du webhook de validation :
    kubectl apply -f istiod-service.yaml
  3. Vérifiez que la configuration a bien été appliquée :
    kubectl get svc -n istio-system

    La réponse devrait ressembler à ceci :

    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
    

Installer Anthos Service Mesh

  1. Installez Anthos Service Mesh avec istioctl à l'aide du profil asm-multicloud :
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    Le résultat doit se présenter sous la forme suivante :

    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'argument --set revision ajoute un libellé de révision au format istio.io/rev=asm-1129-3 à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision particulière d'istiod. Pour activer l'injection automatique side-car pour un espace de noms, vous devez lui attribuer un libellé de révision correspondant au libellé d'istiod.

  2. Vérifiez que votre installation est terminée :
    kubectl get svc -n istio-system

    Le résultat doit se présenter sous la forme suivante :

    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

Dans ces instructions, la procédure de mise à niveau d'Anthos Service Mesh (ASM) en version istio-1.12.9-asm.3 sur des clusters associés à Anthos est la même que pour effectuer une nouvelle installation.

Préparer l'installation d'Anthos Service Mesh

    Linux

  1. Attribuez la contrainte de contexte de sécurité (SCC) anyuid au système istio avec la commande suivante de la CLI OpenShift (oc) :
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  5. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  6. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  7. macOS

  8. Attribuez la contrainte de contexte de sécurité (SCC) anyuid au système istio avec la commande suivante de la CLI OpenShift (oc) :
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  12. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  13. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Attribuez la contrainte de contexte de sécurité (SCC) anyuid au système istio avec la commande suivante de la CLI OpenShift (oc) :
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
    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. Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
    tar xzf istio-1.12.9-asm.3-win.zip

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.12.9-asm.3, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests\profiles
  19. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  20. Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
    set PATH=%CD%\bin:%PATH%
  21. Maintenant qu'ASM Istio est installé, vérifiez la version d'istioctl :
    istioctl version
  22. Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
    kubectl create namespace istio-system

Configurer le webhook de validation

Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.

  1. Créez un fichier nommé istiod-service.yaml avec le contenu suivant :
    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. Utilisez kubectl pour appliquer la configuration du webhook de validation :
    kubectl apply -f istiod-service.yaml
  3. Vérifiez que la configuration a bien été appliquée :
    kubectl get svc -n istio-system

    La réponse devrait ressembler à ceci :

    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
    

Installer Anthos Service Mesh

  1. Installez Anthos Service Mesh avec istioctl à l'aide du profil asm-multicloud :
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.12.9-asm.3

    Le résultat doit se présenter sous la forme suivante :

    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'argument --set revision ajoute un libellé de révision au format istio.io/rev=1.8.6-asm.1 à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision particulière d'istiod. Pour activer l'injection automatique side-car pour un espace de noms, vous devez lui attribuer un libellé de révision correspondant au libellé d'istiod.

  2. Vérifiez que votre installation est terminée :
    kubectl get svc -n istio-system

    Le résultat doit se présenter sous la forme suivante :

    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
    

Installer l'environnement d'exécution hybride 1.5.10

  1. Téléchargez le package de version pour votre système d'exploitation :

    Mac 64 bits :

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

    Linux 64 bits :

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

    Mac 32 bits :

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

    Linux 32 bits :

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
  2. Remplacez le nom du répertoire apigeectl/ actuel par un nom de répertoire de sauvegarde. Exemple :
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Extrayez le contenu du fichier gzip téléchargé dans votre répertoire de base hybride. Exemple :

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd dans le répertoire de base.
  5. Le contenu du fichier tar est, par défaut, développé dans un répertoire dont le nom contient la version et la plate-forme. Exemple : ./apigeectl_1.5.0-d591b23_linux_64. Renommez ce répertoire en apigeectl :

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. Dans le nouveau répertoire apigeectl/, exécutez apigeectl init, apigeectl apply et apigeectl check-ready :
    1. Initialisez Apigee hybrid 1.5.10 :
      apigeectl init -f OVERRIDES.yaml

      OVERRIDES.yaml est votre fichier overrides.yaml modifié.

    2. Vérifiez qu'il s'est initialisé correctement à l'aide des commandes suivantes :
      apigeectl check-ready -f OVERRIDES.yaml
      kubectl describe apigeeds -n apigee

      Le résultat doit se présenter sous la forme suivante :

      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 syntaxe de l'option apigeectl --dry-run dépend de la version de kubectl que vous exécutez. Vérifiez la version de kubectl :
      gcloud version
    4. Recherchez les erreurs à l'aide d'une simulation en utilisant la commande adaptée à votre version de kubectl :

      kubectl version 1.17 et antérieure :

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

      kubectl version 1.18 et ultérieure :

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. Appliquez vos remplacements. Sélectionnez et suivez les instructions pour les environnements de production ou les environnements de démonstration/expérimentaux, selon votre installation.

      Production

      Pour les environnements de production, vous devez mettre à niveau chaque composant Apigee hybrid individuellement, puis vérifier l'état du composant mis à niveau avant de passer au composant suivant.

      1. Appliquez vos remplacements pour mettre à niveau Cassandra :
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Vérifiez que l'opération est terminée :
        apigeectl check-ready -f OVERRIDES.yaml

        Ne passez à l'étape suivante que lorsque les pods sont prêts.

      3. Appliquez vos remplacements pour mettre à niveau les composants Telemetry, puis vérifiez que l'opération est terminée :
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Afficher les composants Redis :
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Appliquez vos remplacements pour mettre à niveau les composants au niveau de l'organisation (MART, Watcher et Apigee Connect), puis vérifiez que l'opération est terminée :
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Appliquez vos remplacements pour mettre à niveau vos environnements. Deux possibilités s'offrent à vous :
        • Environnement par environnement : appliquez vos remplacements à un environnement à la fois et vérifiez que l'opération est terminée. Répétez cette étape pour chaque environnement :
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          ENV_NAME est le nom de l'environnement que vous mettez à niveau.

        • Tous les environnements à la fois : appliquez vos remplacements à tous les environnements en même temps et vérifiez que l'opération est terminée :
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      Démo/Expérimental

      Dans la plupart des environnements de démonstration ou expérimentaux, vous pouvez appliquer les remplacements à tous les composants en une seule fois. Si votre environnement de démonstration/expérimental est volumineux et complexe, ou s'il imite fidèlement un environnement de production, vous pouvez suivre les instructions de mise à niveau des environnements de production.

      1. apigeectl apply -f OVERRIDES.yaml
      2. Vérifiez l'état :
        apigeectl check-ready -f OVERRIDES.yaml

Effectuer un rollback de la mise à niveau

Suivez ces étapes ci-dessous pour effectuer le rollback vers une mise à niveau précédente :

  1. Nettoyez les tâches terminées pour l'espace de noms d'exécution hybride, où NAMESPACE correspond à l'espace de noms spécifié dans votre fichier de remplacement, si vous avez spécifié un espace de noms. Si ce n'est pas le cas, l'espace de noms par défaut est apigee :
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Nettoyez les tâches terminées pour l'espace de noms apigee-system :
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Modifiez la variable APIGEECTL_HOME pour qu'elle pointe en direction du répertoire contenant la version précédente de apigeectl. Exemple :
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. Dans le répertoire racine de l'installation à restaurer, exécutez la commande apigeectl apply, vérifiez l'état de vos pods, supprimez le composant Redis (nouveau dans la version v1.5.0 hybride), puis exécutez la commande apigeectl init. Veillez à utiliser le fichier de remplacement d'origine pour la version vers laquelle vous souhaitez effectuer un rollback :
    • Exécutez apigeectl apply :
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Vérifiez l'état des pods :
      kubectl -n NAMESPACE get pods

      NAMESPACE est votre espace de noms Apigee hybrid.

      Ne passez à l'étape suivante que lorsque le pod apigeeds est en cours d'exécution.

    • Comme Redis est un nouveau composant de la version 1.5 hybride, exécutez la commande suivante pour le supprimer :

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