Mettre à niveau Apigee hybrid vers la version 1.6

Présentation de la mise à niveau vers la version 1.6.9

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. Installez la version 1.6.9 de l'environnement d'exécution hybride.
  4. Mettez à jour ASM.

Conditions préalables

Ces instructions de mise à niveau supposent que vous avez installé Apigee hybrid 1.5 et que vous souhaitez le mettre à jour vers la version 1.6.9. Si vous effectuez une mise à jour à partir d'une version antérieure, consultez les instructions figurant dans la section Mettre à niveau Apigee hybrid vers la version 1.5.

Mise à niveau vers la version 1.6

  1. Ces instructions utilisent la variable d'environnement $APIGEECTL_HOME pour le répertoire de votre système de fichiers dans lequel l'utilitaire apigeectl est installé. 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.5. Exemple :
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.5-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 Cassandra.
  4. Mettez à niveau votre plate-forme Kubernetes vers les versions compatibles avec hybrid en version 1.6. 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.5.4, vous devez la mettre à niveau vers la version 1.5.4.
    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.5.4
      image: quay.io/jetstack/cert-manager-cainjector:v1.5.4
      image: quay.io/jetstack/cert-manager-webhook:v1.5.4
      
    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.5.4 à l'aide de la commande suivante :
      $ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
      
  6. Créez le compte de service apigee-runtime requis pour une utilisation avec les jetons Google OAUTH. Utilisez l'outil create-service-account :
    1. Créez le compte de service :
      ./tools/create-service-account --env prod --profile apigee-runtime
    2. Ajouter le nouveau compte de service à votre fichier Apigeeoverrides.yaml :
      envs:
       - name: "environment-name"
         … … …
         serviceAccountPaths:
           runtime: "path-to-service-account-file"
         … … …
  7. Ajoutez la propriété udca.serviceAccountPath au niveau supérieur de votre fichier de remplacements, en plus de l'entrée figurant sous envs. udca doit apparaître deux fois dans vos remplacements, une fois au niveau de l'environnement et une fois au niveau de l'organisation, en parallèle avec connectAgent, logger, mart, metrics et watcher.

    Exemple :

    … … …
    
    metrics:
      serviceAccountPath: "metrics-service-account-file"
    
    udca:
      serviceAccountPath: "udca-service-account-file"
    
    watcher:
      serviceAccountPath: "watcher-service-account-file"
    … … …
  8. Facultatif: Si vous prévoyez d'utiliser Cloud Trace, assurez-vous que votre compte de service apigee-runtime dispose du rôle Google agent Cloud Trace (roles/cloudtrace.agent). Pour ce faire, accédez à l'interface utilisateur Google Cloud Platform > IAM et administration > Comptes de service ou utilisez les commandes suivantes :
    1. Récupérez l'adresse e-mail de votre compte de service apigee-runtime à l'aide de la commande suivante :
      gcloud iam service-accounts list --filter "apigee-runtime"

      Si elle correspond au modèle apigee-runtime@$ORG_NAME.iam.gserviceaccount.com, vous pouvez utiliser ce modèle à l'étape suivante.

    2. Attribuez le rôle Agent Cloud Trace au compte de service :
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/cloudtrace.agent"

      $PROJECT_ID est le nom du projet Google Cloud dans lequel Apigee hybrid est installé.

Installer l'environnement d'exécution hybride 1.6.9

  1. Vérifiez que vous êtes bien dans le répertoire de base pour hybrid (c'est-à-dire le répertoire parent du répertoire dans lequel se trouve le fichier exécutable apigeectl) :
    cd $APIGEECTL_HOME/..
  2. Téléchargez le package de la version correspondant à votre système d'exploitation à l'aide de la commande suivante : Veillez à sélectionner la bonne plate-forme dans le tableau suivant :

    Linux

    Linux 64 bits :

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

    macOS

    Mac 64 bits :

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

    Windows

    Windows 64 bits :

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_windows_64.zip
  3. Remplacez le nom du répertoire apigeectl/ actuel par un nom de répertoire de sauvegarde. Exemple :

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/

    macOS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.5 
  4. Extrayez le contenu du fichier gzip téléchargé dans votre répertoire de base hybride. Le répertoire de base hybrid est le répertoire dans lequel se trouve le répertoire apigeectl-v1.5 renommé :

    Linux

    tar xvzf filename.tar.gz -C ./

    macOS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  5. Par défaut, le contenu du fichier tar est décompressé dans un répertoire dont le nom contient la version et la plate-forme. Exemple : ./apigeectl_1.6.9-d591b23_linux_64. Changez le nom de ce répertoire en apigeectl à l'aide de la commande suivante :

    Linux

    mv directory-name-linux apigeectl

    macOS

    mv directory-name-mac apigeectl

    Windows

    rename directory-name-windows apigeectl
  6. Accédez au répertoire apigeectl :
    cd ./apigeectl

    L'exécutable apigeectl se trouve dans ce répertoire.

  7. Ces instructions utilisent la variable d'environnement $APIGEECTL_HOME pour le répertoire de votre système de fichiers dans lequel l'utilitaire apigeectl est installé. 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%
  8. Vérifiez la version de apigeectl à l'aide de la commande version :
    ./apigeectl version
    Version: 1.6.9
  9. Accédez au répertoire hybrid-base-directory/hybrid-files. Le répertoire hybrid-files correspond à l'emplacement où se trouvent les fichiers de configuration, tels que le fichier de remplacement, les certificats et les comptes de service. Exemple :
    cd $APIGEECTL_HOME/../hybrid-files
  10. Vérifiez que kubectl est défini sur le bon contexte à l'aide de la commande suivante. Le contexte actuel doit être défini sur le cluster dans lequel vous mettez à niveau Apigee hybrid.
    kubectl config get-contexts | grep \*
  11. Dans le répertoire hybrid-files :
    1. Mettez à jour les liens symboliques suivants de sorte qu'ils pointent vers $APIGEECTL_HOME. Ces liens vous permettent d'exécuter la commande apigeectl nouvellement installée à partir du répertoire hybrid-files :
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. Pour vérifier que les liens symboliques ont été créés correctement, exécutez la commande suivante et assurez-vous que les chemins d'accès aux liens pointent vers les emplacements appropriés :
      ls -l | grep ^l
    3. Effectuez une initialisation en test à blanc (dry run) pour rechercher d'éventuelles erreurs :
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml --dry-run=client

      OVERRIDES est le nom de votre fichier de remplacement.

    4. Si aucune erreur ne s'affiche, initialisez Apigee hybrid 1.6.9 :
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml
    5. Vérifiez l'état d'initialisation :
      ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
    6. Recherchez les erreurs à l'aide d'un dry run de la commande apply :
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --dry-run=client
    7. Si aucune erreur ne s'affiche, 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. Assurez-vous d'être dans le répertoire hybrid-files.
      2. Appliquez vos remplacements pour mettre à niveau Cassandra :
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --datastore
      3. Vérifiez que l'opération est terminée :
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

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

      4. Appliquez vos remplacements pour mettre à niveau les composants Telemetry, puis vérifiez que l'opération est terminée :
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --telemetry
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      5. Afficher les composants Redis :
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --redis
      6. 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_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --org
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      7. 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_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --env ENV_NAME
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/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_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --all-envs
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/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. Assurez-vous d'être dans le répertoire hybrid-files.
      2. ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml
      3. Vérifiez l'état :
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

Mettre à niveau ASM vers la version 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 ASM 1.12.9 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 à la version 1.12.9 d'ASM pour hybrid sur GKE, procédez comme suit :

  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
.

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

  1. Anticiper la mise à niveau
  2. Installer la nouvelle version d'ASM
  3. Supprimez le webhook de mutation et validez le webhook de votre installation actuelle.
  4. Mettre à niveau vos passerelles et configurer les nouveaux webhooks
  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

  1. 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
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl apply -f ASMCLI_OUTPUT_DIR/asm/istio/istiod-service.yaml ASMCLI_OUTPUT_DIR/istioctl tag set default --revision ${UPGRADE_REV}
      
        kubectl delete deploy -l app=istio-ingressgateway,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.
  2. Linux

  3. 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
  4. 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
    
  5. 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
  6. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  7. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  8. macOS

  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. 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
  16. 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
    
  17. 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
  18. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  19. Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
    set PATH=%CD%\bin:%PATH%
  20. Maintenant qu'ASM Istio est installé, vérifiez la version d'istioctl :
    istioctl version
  21. Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
    kubectl create namespace istio-system

Installer Anthos Service Mesh

  1. Modifiez votre fichier overlay.yaml ou créez-en un avec le contenu suivant :
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        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)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. Installez Anthos Service Mesh avec istioctl à l'aide du profil asm-multicloud :
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3" \
        --filename overlayfile.yaml

    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.

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

  1. 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
      
      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
      
      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.
  2. Linux

  3. 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
  4. 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
  5. 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
    
  6. 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
  7. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  8. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  9. macOS

  10. 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
  11. 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
  12. 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
    
  13. 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
  14. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  15. Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. 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
  18. 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
  19. 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
    
  20. 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
  21. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
    cd istio-1.12.9-asm.3
  22. Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
    set PATH=%CD%\bin:%PATH%
  23. Maintenant qu'ASM Istio est installé, vérifiez la version d'istioctl :
    istioctl version
  24. Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
    kubectl create namespace istio-system

Installer Anthos Service Mesh

  1. Modifiez votre fichier overlay.yaml ou créez-en un avec le contenu suivant :
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        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)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. Installez Anthos Service Mesh avec istioctl à l'aide du profil asm-multicloud :
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3" \
        --filename overlayfile.yaml

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

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

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. Par exemple :
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. Dans le répertoire racine de l'installation à restaurer, exécutez ${APIGEECTL_HOME}/apigeectl apply, vérifiez l'état de vos pods, puis exécutez ${APIGEECTL_HOME}/apigeectl init. Veillez à utiliser le fichier de remplacement d'origine pour la version vers laquelle vous souhaitez effectuer un rollback :
    1. Dans le répertoire hybrid-files, exécutez ${APIGEECTL_HOME}/apigeectl apply :
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/ORIGINAL_OVERRIDES.yaml
    2. Vérifiez l'état des pods :
      kubectl -n NAMESPACE get pods

      NAMESPACE est votre espace de noms Apigee hybrid.

    3. Vérifiez l'état de apigeeds :
      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
      

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

    4. Exécutez apigeectl init :
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml