Anthos Service Mesh 1.6

Mettre à niveau Anthos Service Mesh sur site

Ce guide explique comment passer d'une version 1.5.4+ or 1.6.4+ d'Anthos Service Mesh à une version 1.6.8 sur GKE On-Prem. 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ésentation de la mise à niveau

Cette section décrit les étapes que vous devez suivre pour mettre à niveau Anthos Service Mesh.

Préparer

  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.

Mettre à niveau

  1. Suivez les étapes de ce guide pour préparer la mise à niveau d'Anthos Service Mesh.

  2. Mettez à niveau Anthos Service Mesh.

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.

  • Outil de ligne de commande curl
  • SDK Cloud (outil de ligne de commande gcloud)

Après avoir installé le SDK Cloud :

  1. Authentifiez-vous avec le SDK Cloud :

    gcloud auth login
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Installez kubectl :

    gcloud components install kubectl
    
  4. Si vous souhaitez déployer et tester votre installation avec l'exemple d'application Boutique en ligne, installez kpt :

    gcloud components install kpt
    
  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.8-asm.9-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.8-asm.9-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.8-asm.9-linux-amd64.tar.gz.1.sig istio-1.6.8-asm.9-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.8-asm.9-linux-amd64.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.6.8-asm.9, 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 install/kubernetes/operator/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.8-asm.9-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.8-asm.9-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.8-asm.9-osx.tar.gz.1.sig istio-1.6.8-asm.9-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.8-asm.9-osx.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.6.8-asm.9, 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 install/kubernetes/operator/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.8-asm.9-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.8-asm.9-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.8-asm.9-win.zip.1.sig istio-1.6.8-asm.9-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.8-asm.9-win.zip

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.6.8-asm.9, 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 install/kubernetes/operator/profiles

  12. Assurez-vous d'être dans le répertoire racine de l'installation d'Anthos Service Mesh.
    cd istio-1.6.8-asm.9
  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 une option d'installation revision pour ajouter un libellé au 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.

Ensuite, vous migrez vers la nouvelle version en définissant le même libellé de révision sur vos charges de travail de sorte qu'il pointe vers le nouveau plan de contrôle et effectue un redémarrage progressif. 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

  1. Créez une variable d'environnement pour le nom de la révision. Nous vous recommandons d'utiliser un nom tel que asm-168-9 pour la révision, car il identifie la version du plan de contrôle vers laquelle vous effectuez la mise à niveau.

    export REVISION=asm-168-9

    Le nom de la révision doit être un libellé DNS-1035. Il doit en outre contenir des caractères alphanumériques minuscules ou -, commencer par un caractère alphabétique et se terminer par un caractère alphanumérique (par exemple my-name' ou abc-123). L'expression régulière utilisée pour la validation est la suivante : '[a-z]([-a-z0-9]*[a-z0-9])?').

  2. Installez une nouvelle révision :

    istioctl install \
      --set profile=asm-multicloud \
      --revision=${REVISION}

    L'argument --revision ajoute un libellé istio.io/rev au déploiement du plan de contrôle. Après avoir exécuté la commande, deux services et déploiements de plan de contrôle 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-REVISION-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. Créez une variable d'environnement pour l'espace de noms des charges de travail que vous souhaitez redéployer :

    export NAMESPACE=YOUR_NAMESPACE
  2. Mettez à jour les charges de travail à injecter avec la nouvelle version d'Anthos Service Mesh :

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=${REVISION} --overwrite

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

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

    kubectl rollout restart deployment -n ${NAMESPACE}
  4. Vérifiez que les pods sont configurés de sorte qu'ils pointent vers le plan de contrôle istiod-${REVISION} :

    kubectl get pods -n ${NAMESPACE} -l istio.io/rev=${REVISION}
    
  5. Testez votre application pour vérifier que les charges de travail fonctionnent correctement.

    Si vous devez effectuer un rollback vers la version précédente :

    1. Mettez à jour les charges de travail à utiliser avec la version précédente d'Anthos Service Mesh :

      kubectl label namespace ${NAMESPACE} istio.io/rev- istio-injection=enabled --overwrite
    2. Redémarrez les pods pour déclencher la réinjection :

      kubectl rollout restart deployment -n ${NAMESPACE}

    Si vous êtes satisfait du fonctionnement de votre application, terminez la mise à niveau en supprimant l'ancien plan de contrôle :

    kubectl delete svc istiod -n istio-system

    kubectl delete deploy istiod -n istio-system