Revenir à une version antérieure d'Anthos Service Mesh sur GKE

Ce guide explique comment revenir à une version antérieure d'Anthos Service Mesh de 1.6.14 à 1.5.10 sur des clusters GKE sur Google Cloud.

Le redéploiement des composants du plan de contrôle d'Anthos Service Mesh prend environ 5 à 10 minutes. En outre, vous devez injecter de nouveaux proxys side-car dans toutes vos charges de travail afin qu'elles soient mises à jour avec la version actuelle d'Anthos Service Mesh. Le temps nécessaire à la mise à jour des proxys side-car dépend de nombreux facteurs, tels que le nombre de pods, le nombre de nœuds, les paramètres de scaling du déploiement, les budgets d'interruption de pod et d'autres paramètres de configuration. Une estimation approximative du temps nécessaire à la mise à jour des proxys side-car est de 100 pods par minute.

Présentation du retour à une version antérieure

Cette section décrit les étapes que vous devez suivre pour revenir à une version antérieure d'Anthos Service Mesh.

Préparer

  1. Consultez les fonctionnalités compatibles et ce guide pour vous familiariser avec les fonctionnalités et le processus de retour à une version antérieure.

  2. Si vous avez activé des fonctionnalités facultatives lors de l'installation de la version précédente d'Anthos Service Mesh, vous devez activer les mêmes fonctionnalités lorsque vous revenez à une version antérieure. Vous activez des fonctionnalités facultatives en ajoutant des options --set values ou en spécifiant l'option -f avec un fichier YAML lorsque vous exécutez la commande istioctl install.

  3. Si vous revenez à une version antérieure d'Anthos Service Mesh sur un cluster privé, vous devez ajouter une règle de pare-feu pour ouvrir le port 15017 si vous souhaitez utiliser l'injection side-car automatique. Si vous n'ajoutez pas la règle de pare-feu et que l'injection side-car automatique est activée, le déploiement des charges de travail génère une erreur. Pour plus d'informations sur l'ajout d'une règle de pare-feu, consultez la section Ajouter des règles de pare-feu pour des cas d'utilisation spécifiques.

Rétrograder

  1. Suivez les étapes de ce guide pour préparer le retour à une version antérieure d'Anthos Service Mesh.

  2. Passez à une version antérieure d'Anthos Service Mesh.

  3. Mettez à jour les proxys side-car.

  4. Testez votre application pour vérifier que les charges de travail fonctionnent correctement.

Configurer votre environnement

Pour les installations sur Google Kubernetes Engine, vous pouvez suivre les guides d'installation via Cloud Shell, une interface de ligne de commande intégrée au navigateur vers vos ressources Google Cloud, ou votre propre ordinateur fonctionnant sous Linux ou macOS.

Option A : Utiliser Cloud Shell

Cloud Shell provisionne une machine virtuelle (VM) g1-small Compute Engine exécutant un système d'exploitation Linux basé sur Debian. Les avantages liés à l'utilisation de Cloud Shell sont les suivants :

  • Il comprend, entre autres, les outils de ligne de commande gcloud, kubectl et helm.

  • Votre répertoire Cloud Shell $HOME dispose d'un espace de stockage persistant de 5 Go.

  • Nous vous proposons plusieurs éditeurs de texte :

    • Éditeur de code, auquel vous accédez en cliquant sur en haut de la fenêtre Cloud Shell.

    • Emacs, Vim ou Nano, auxquels vous accédez depuis la ligne de commande dans Cloud Shell.

Pour utiliser Cloud Shell, procédez comme suit :

  1. Accédez à Google Cloud Console.
  2. Sélectionnez votre projet Google Cloud.
  3. Cliquez sur le bouton Activer Cloud Shell en haut de la fenêtre de la console Google Cloud.

    Console Google Cloud Platform

    Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console Google Cloud et affiche une invite de ligne de commande.

    Session Cloud Shell

  4. Mettez à jour les composants :

    gcloud components update
    

    La commande renvoie un résultat semblable à celui-ci :

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. Copiez la commande longue, puis collez-la pour mettre à jour les composants.

  6. Assurez-vous que Git se trouve dans votre chemin pour que kpt puisse le trouver.

Option B : Utiliser des outils de ligne de commande localement

Sur votre ordinateur local, installez et initialisez gcloud CLI.

Si gcloud CLI est déjà installé :

  1. Authentifiez-vous en utilisant gcloud CLI :

    gcloud auth login
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Installez kubectl :

    gcloud components install kubectl
    
  4. Installez kpt :

    gcloud components install kpt
    
  5. Assurez-vous que Git se trouve dans votre chemin pour que kpt puisse le trouver.

Définir des variables d'environnement

  1. Obtenez l'ID du projet dans lequel le cluster a été créé et le numéro du projet hôte du parc.

    gcloud

    Exécutez la commande suivante :

    gcloud projects list
    

    Console

    1. Accédez à la page Tableau de bord de la console Google Cloud.

      Accéder à la page "Tableau de bord"

    2. Cliquez sur la liste déroulante de sélection du projet située en haut de la page. Sélectionnez votre projet dans la fenêtre Sélectionnez une organisation qui vous est présentée.

      L'ID du projet est affiché sur la fiche Informations sur le projet du tableau de bord du projet.

  2. Créez une variable d'environnement pour l'ID du projet dans lequel le cluster a été créé:

    export PROJECT_ID=YOUR_PROJECT_ID

  3. Créez une variable d'environnement pour le numéro de projet du projet hôte du parc.

    export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER

  4. Créez les variables d'environnement suivantes :

    • Définissez le nom du cluster :

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Définissez le paramètre CLUSTER_LOCATION sur la zone ou la région de votre cluster :

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION

Définir des identifiants et des autorisations

  1. Obtenez des identifiants d'authentification pour interagir avec le cluster :

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  2. Accordez des autorisations d'administrateur de cluster à l'utilisateur actuel. Vous avez besoin de ces autorisations pour créer les règles de contrôle d'accès basé sur les rôles (RBAC) nécessaires pour Anthos Service Mesh :

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

Si l'erreur "cluster-admin-binding" already exists s'affiche, vous pouvez l'ignorer en toute sécurité et poursuivre avec le cluster-admin-binding existant.

Télécharger le fichier d'installation

    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.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  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.5.10-asm.2-linux.tar.gz

    La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.5.10-asm.2, et 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 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. macOS

  5. 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.5.10-asm.2-osx.tar.gz
  6. 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.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  7. 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.5.10-asm.2-osx.tar.gz

    La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.5.10-asm.2, et 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 se trouve dans le répertoire bin.
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles

  8. Windows

  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.5.10-asm.2-win.zip
  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.5.10-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  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.5.10-asm.2-win.zip

    La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.5.10-asm.2, et 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 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.5.10-asm.2
  13. Pour plus de commodité, ajoutez les outils du répertoire /bin à votre variable PATH :
    export PATH=$PWD/bin:$PATH

Préparer les fichiers de configuration des ressources

Lorsque vous exécutez la commande istioctl install, vous spécifiez -f istio-operator.yaml sur la ligne de commande. Ce fichier contient des informations sur le projet et le cluster requis par Anthos Service Mesh. Vous devez télécharger un package contenant istio-operator.yaml et d'autres fichiers de configuration des ressources afin de pouvoir définir les informations sur le projet et le cluster.

Pour commencer, choisissez un package à télécharger en fonction de l'autorité de certification que vous souhaitez utiliser :

  • asm : Ce package active Mesh CA, que nous recommandons pour les nouvelles installations.

  • asm-citadel : vous pouvez éventuellement activer Citadel en tant qu'autorité de certification. Avant de choisir ce package, consultez la page Choisir une autorité de certification pour plus d'informations.

Pour préparer les fichiers de configuration des ressources, procédez comme suit :

  1. Créez un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh. Nous vous recommandons d'utiliser le nom du cluster comme nom de répertoire.

  2. Accédez au répertoire dans lequel vous souhaitez télécharger le package Anthos Service Mesh.

  3. Téléchargez le package asm :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm asm
    
  4. Définissez l'ID du projet dans lequel le cluster a été créé :

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Définissez le nom du cluster :

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  6. Définissez la zone ou la région par défaut :

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    

Revenir à une version antérieure d'Anthos Service Mesh

Pour revenir à une version antérieure d'Anthos Service Mesh :

istioctl install \
  -f asm/cluster/istio-operator.yaml \
  --set profile=asm-gcp

Vérifier les composants du plan de contrôle

Pour revenir à une version antérieure, vous devez réinstaller les composants du plan de contrôle. L'exécution de l'opération prend environ cinq à dix minutes. Les anciens composants du plan de contrôle sont arrêtés, puis supprimés à mesure que les nouveaux sont installés. Vous pouvez vérifier la progression en consultant la valeur de la colonne AGE des charges de travail.

kubectl get pod -n istio-system

Exemple de résultat :

NAME                                     READY   STATUS        RESTARTS   AGE
istio-ingressgateway-5bfdf7c586-v6wxx    2/2     Terminating   0          25m
istio-ingressgateway-7b598c5557-b88md    2/2     Running       0          5m44s
istiod-78cdbbbdb-d7tps                   1/1     Running       0          5m16s
promsd-576b8db4d6-lqf64                  2/2     Running       1          5m26s

Dans cet exemple, il existe deux instances de istio-ingressgateway. L'instance contenant 25m dans la colonne AGE est en cours d'arrêt. Tous les autres composants sont installés.

Mettre à jour des proxys side-car

Vous devez injecter à nouveau le proxy side-car à toutes les charges de travail qui s'exécutaient sur votre cluster avant le retour à une version antérieure afin qu'elles disposent de la version actuelle d'Anthos Service Mesh.

Avec l'injection side-car automatique, vous pouvez mettre à jour les side-cars pour les pods existants avec un redémarrage du pod. Le redémarrage des pods varie selon qu'ils ont été créés dans le cadre d'un déploiement ou non.

  1. Si vous avez utilisé un déploiement, redémarrez le déploiement pour redémarrer tous les pods avec des side-cars :

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Si vous n'avez pas utilisé de déploiement, supprimez les pods. Ils sont automatiquement recréés avec les side-cars :

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Vérifiez que tous les pods de l'espace de noms disposent de side-cars injectés :

    kubectl get pod -n YOUR_NAMESPACE

    Dans l'exemple de résultat suivant de la commande précédente, la colonne READY indique qu'il existe deux conteneurs pour chacune de vos charges de travail : le conteneur principal et le conteneur du proxy side-car.

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...