Mettre à niveau Anthos Service Mesh sur site

Ce guide explique comment mettre à niveau Anthos Service Mesh de la version 1.5.4+ or 1.6.4+ vers la version 1.6.14 sur GKE sur VMware. Pour mettre à niveau Anthos Service Mesh 1.4.5 ou version ultérieure, vous devez d'abord passer à Anthos Service Mesh 1.5. Il n'est pas possible de mettre à niveau Anthos Service Mesh 1.4 directement vers 1.6.

Lors de la mise à niveau, nous vous recommandons d'effectuer une mise à niveau du plan de contrôle double (également appelée mise à niveau Canary), où les versions nouvelle et précédente du plan de contrôle sont exécutées lorsque vous testez la nouvelle version avec un faible pourcentage de vos charges de travail. Cette approche est plus sûre qu'une mise à niveau sur place, où la nouvelle version du plan de contrôle remplace la version précédente. Notez que le service istio-ingressgateway est mis à niveau. Vous devez donc prévoir certaines interruptions sur votre cluster.

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éparer la mise à niveau

Cette section décrit les étapes à suivre pour préparer la mise à niveau d'Anthos Service Mesh.

  1. Consultez la page Fonctionnalités compatibles et ce guide pour vous familiariser avec les fonctionnalités et le processus de mise à niveau.

  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 lors de la mise à niveau. 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 effectuez une mise à niveau à partir de Anthos Service Mesh 1.5, procédez comme suit au cas où vous auriez besoin d'effectuer un rollback :

    1. Créez un répertoire appelé asm-1-5.

    2. Téléchargez le fichier d'installation 1.5 dans le répertoire asm-1-5.

    3. Extrayez le contenu du fichier vers le répertoire asm-1-5.

Configurer votre environnement

Vous devez disposer des outils suivants sur la machine à partir de laquelle vous souhaitez installer Anthos Service Mesh. Notez que vous ne pouvez installer Anthos Service Mesh que sur un cluster d'utilisateur, et non sur un cluster d'administrateur.

Après avoir installé Google Cloud CLI :

  1. Authentifiez-vous avec Google Cloud CLI :

    gcloud auth login
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Installez kubectl :

    gcloud components install kubectl
    
  4. Installez la version requise de kpt :

       curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2
       chmod +x kpt_0_39_2
       alias kpt="$(readlink -f kpt_0_39_2)"
    
  5. Basculez le contexte vers votre cluster d'utilisateur :

    kubectl config use-context CLUSTER_NAME
  6. Accordez des autorisations d'administrateur de cluster à votre compte utilisateur (votre adresse e-mail de connexion Google Cloud). 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=USER_ACCOUNT

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.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz

    La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.6.14-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.6.14-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.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-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.6.14-asm.2-osx.tar.gz

    La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.6.14-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.6.14-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.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-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.6.14-asm.2-win.zip

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

Mettre à niveau Anthos Service Mesh

Pour installer une nouvelle version d'Anthos Service Mesh, nous vous recommandons de suivre le processus de mise à niveau du plan de contrôle double (appelé mise à niveau Canary dans la documentation d'Istio). Avec une mise à niveau du plan de contrôle double, vous installez une nouvelle version du plan de contrôle à côté du plan de contrôle existant. Lors de l'installation de la nouvelle version, vous incluez le libellé revision qui identifie la version du nouveau plan de contrôle. Chaque révision est une mise en œuvre complète du plan de contrôle d'Anthos Service Mesh avec ses propres déploiement et service.

Vous effectuez ensuite une migration vers la nouvelle version en définissant le même libellé revision sur vos charges de travail de sorte qu'il pointe vers le nouveau plan de contrôle et en effectuant un redémarrage progressif pour réinjecter les proxys avec la nouvelle version d'Anthos Service Mesh. Avec cette approche, vous pouvez surveiller l'effet de la mise à niveau sur un petit pourcentage de vos charges de travail. Après avoir testé votre application, vous pouvez migrer tout le trafic vers la nouvelle version. Cette approche est beaucoup plus sûre qu'une mise à niveau sur place, où un nouveau plan de contrôle remplace la version précédente.

Mettre à jour le plan de contrôle

Exécutez la commande suivante pour déployer le nouveau plan de contrôle. Si vous souhaitez activer une fonctionnalité facultative compatible, incluez -f et le nom de fichier YAML dans la ligne de commande suivante. Pour en savoir plus, consultez la page Activer les fonctionnalités facultatives.

istioctl install \
  --set profile=asm-multicloud \
  --set revision=asm-1614-2

L'argument --set revision ajoute un libellé istio.io/rev à istiod. Après avoir exécuté la commande, deux déploiements de plan de contrôle et des services s'exécutent côte à côte :

kubectl get pods -n istio-system

Exemple de résultat :

NAME                                        READY   STATUS    RESTARTS   AGE
istio-ingressgateway-c56675fcd-86zdn        1/1     Running   0          2m9s
istio-ingressgateway-c56675fcd-vn4nv        1/1     Running   0          2m21s
istiod-asm-1614-2-6d5cfd4b89-xztlr       1/1     Running   0          3m44s
istiod-fb7f746f4-wcntn                      1/1     Running   0          50m
promsd-579f9f9bf4-m65nc                     2/2     Running   1          50m

Redéployer des charges de travail

L'installation de la nouvelle révision n'a aucune incidence sur les proxys side-car existants. Pour les mettre à niveau, vous devez les configurer de sorte qu'ils pointent vers le nouveau plan de contrôle. Cette opération est contrôlée lors de l'injection side-car en fonction du libellé d'espace de noms istio.io/rev.

  1. Mettez à jour les charges de travail à injecter avec la nouvelle version d'Anthos Service Mesh :

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --overwrite

    Le libellé istio-injection doit être supprimé, car il est prioritaire sur le libellé istio.io/rev.

  2. Redémarrez les pods pour déclencher la réinjection :

    kubectl rollout restart deployment -n NAMESPACE
  3. Vérifiez que les pods sont configurés de sorte qu'ils pointent vers le plan de contrôle istiod-asm-1614-2 :

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2

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

  5. Si vous avez des charges de travail dans d'autres espaces de noms, répétez les étapes précédentes pour chaque espace de noms.

  6. Si vous êtes sûr que votre application fonctionne comme prévu, passez à la section Terminer la mise à niveau. Sinon, procédez comme suit pour effectuer un rollback vers la version précédente :

    1. Mettez à jour les charges de travail à injecter avec la version précédente du plan de contrôle :

       kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite

    2. Redémarrez les pods pour déclencher une réinjection afin que les proxys aient la version précédente :

       kubectl rollout restart deployment -n NAMESPACE

    3. Effectuer un rollback des composants du plan de contrôle :

      Revenir à la version 1.6 précédente

      1. Redéployez la version précédente du fichier istio-ingressgateway :

        kubectl -n istio-system rollout undo deploy istio-ingressgateway
        
      2. Supprimez le nouveau plan de contrôle :

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-1614-2 -n istio-system --ignore-not-found=true
        

      Rollback vers la version 1.5

      1. Accédez au répertoire dans lequel vous avez téléchargé le fichier d'installation 1.5 d'Anthos Service Mesh.

      2. Réinstallez la version précédente d'Anthos Service Mesh. Dans la commande suivante, si vous avez activé les fonctionnalités facultatives, veillez à inclure les options --set values applicables ou l'option -f avec le nom du fichier YAML.

        bin/istioctl install \
        --set profile=asm-multicloud \

Terminer la mise à niveau

Si vous êtes sûr que votre application fonctionne comme prévu, supprimez l'ancien plan de contrôle pour terminer la mise à niveau :

kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true