Mettre à niveau Anthos Service Mesh sur GKE

Ce guide explique effectuer une mise à niveau d'Anthos Service Mesh de la version 1.4.5+ or 1.5.4+ vers la version 1.5.10 sur Google Kubernetes Engine.

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 que vous devez suivre pour mettre à niveau 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 apply.

    Si vous effectuez une mise à niveau depuis la version 1.4.5 ou une version ultérieure d'Anthos Service Mesh, et que vous avez activé des fonctionnalités facultatives dans un fichier YAML, vous devez convertir ce fichier YAML de l'API IstioControlPlane vers l'API IstioOperator.

  3. Si vous mettez à niveau Anthos Service Mesh sur un cluster privé et que vous souhaitez utiliser l'injection side-car automatique, vous devez ajouter une règle de pare-feu pour ouvrir le port 15017. 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.

  4. Planifiez un temps d'arrêt. La mise à niveau peut prendre jusqu'à une heure en fonction de l'échelle du cluster. Notez que cela n'inclut pas le temps nécessaire au redéploiement des charges de travail afin de mettre à jour les proxys side-car.

Élaguer les ressources de la version 1.4

Si vous avez installé Anthos Service Mesh 1.4 à l'aide de la version alpha de la CLI GKE Enterprise, vous devrez peut-être élaguer les ressources 1.4 avant de passer à la version 1.5.10.

Vérifiez si les ressources Anthos Service Mesh possèdent des étiquettes operator.istio.io/component.

kubectl get all -n istio-system --selector operator.istio.io/component

Si la commande renvoie No resources found in istio-system namespace, utilisez les commandes suivantes pour supprimer les ressources Anthos Service Mesh 1.4.

kubectl delete deploy -n istio-system promsd
kubectl delete all -n istio-system --selector 'app in (galley, istio-ingressgateway, istio-nodeagent, sidecarInjectorWebhook, promsd, pilot)'

Définir les valeurs par défaut du projet et du cluster

  1. Obtenez l'ID du projet dans lequel le cluster a été créé :

    gcloud

    gcloud projects list

    Console

    1. Dans la console Google Cloud, accédez à la page Tableau de bord :

      Accéder à la page "Tableau de bord"

    2. Cliquez sur la liste déroulante Sélectionner située en haut de la page. Sélectionnez votre projet dans la fenêtre Sélectionner 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 de projet :

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Définissez l'ID de projet par défaut pour Google Cloud CLI :

    gcloud config set project ${PROJECT_ID}
    
  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
  5. Définissez la zone ou la région par défaut pour Google Cloud CLI.

    • Si vous disposez d'un cluster à zone unique, définissez la zone par défaut :

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Si vous disposez d'un cluster régional, définissez la région par défaut :

      gcloud config set compute/region ${CLUSTER_LOCATION}

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}
  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 continuer 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 - -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'application dans samples
    • Les outils suivants dans le répertoire bin :
      • istioctl : utilisez istioctl pour installer Anthos Service Mesh.
      • asmctl : utilisez asmctl pour valider votre configuration de sécurité après avoir installé Anthos Service Mesh. (Actuellement, asmctl n'est pas compatible avec GKE sur VMware.)

  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'application dans samples
    • Les outils suivants dans le répertoire bin :
      • istioctl : utilisez istioctl pour installer Anthos Service Mesh.
      • asmctl : utilisez asmctl pour valider votre configuration de sécurité après avoir installé Anthos Service Mesh. (Actuellement, asmctl n'est pas compatible avec GKE sur VMware.)

  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'application dans samples
    • Les outils suivants dans le répertoire bin :
      • istioctl : utilisez istioctl pour installer Anthos Service Mesh.
      • asmctl : utilisez asmctl pour valider votre configuration de sécurité après avoir installé Anthos Service Mesh. (Actuellement, asmctl n'est pas compatible avec GKE sur VMware.)

  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 istioctl apply command pour mettre à niveau Anthos Service Mesh, vous spécifiez -f istio-operator.yaml sur la ligne de commande. Ce fichier contient des informations sur le projet et le cluster nécessaires à l'activation des fonctionnalités de télémétrie et de sécurité de Service Mesh. Vous devez télécharger le fichier istio-operator.yaml et d'autres fichiers de configuration des ressources, et définir les informations sur le projet et le cluster.

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

  1. Si ce n'est pas déjà fait, installez kpt :

    gcloud components install kpt
    
  2. Vous pouvez créer un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh (facultatif). Si vous envisagez de configurer plusieurs clusters, vous pouvez utiliser le nom du cluster comme nom de répertoire.

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

  4. Téléchargez le package Anthos Service Mesh dans le répertoire de travail actuel :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
    

  5. Définissez le nom du cluster :

      kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}

  6. Vous pouvez éventuellement personnaliser les fichiers de configuration des ressources à l'aide de setters kpt. Par défaut, ces setters utilisent les valeurs par défaut pour gcloud config. Si vous définissez les valeurs gcloud config par défaut ou si vous souhaitez modifier les valeurs, exécutez les commande "setter" suivantes :

    • Définissez l'ID du projet :

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Définissez la zone ou la région par défaut :

      kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
  7. Vous pouvez éventuellement vérifier les fichiers de configuration des ressources dans votre propre système de contrôle des sources, tel que Cloud Source Repositories, pour pouvoir suivre les modifications apportées aux fichiers.

Mettre à niveau Anthos Service Mesh

Cette section explique comment mettre à niveau Anthos Service Mesh et activer :

  • Fonctionnalités par défaut compatibles répertoriées sur la page Fonctionnalités compatibles.
  • l'autorité de certification Anthos Service Mesh (Mesh CA) ;
  • Pipeline de données de télémétrie qui alimente les tableaux de bord Anthos Service Mesh dans la console Google Cloud.

Pour plus d'informations sur l'activation des fonctionnalités facultatives compatibles, consultez Activer des fonctionnalités facultatives.

Pour installer Anthos Service Mesh, procédez comme suit :

Choisissez l'une des commandes suivantes pour configurer Anthos Service Mesh en mode d'authentification TLS mutuel (mTLS) PERMISSIVE ou en mode mTLS STRICT.

mTLS en mode PERMISSIVE

istioctl manifest apply --set profile=asm \
  -f asm/cluster/istio-operator.yaml

mTLS en mode STRICT

istioctl manifest apply --set profile=asm \
  -f asm/cluster/istio-operator.yaml \
  --set values.global.mtls.enabled=true

Vérifier les composants du plan de contrôle

La mise à niveau nécessite de 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.

Valider l'installation

Nous vous recommandons d'utiliser l'outil d'analyse asmctl pour valider la configuration de base de votre projet, de votre cluster et de vos charges de travail. Si un test asmctl échoue, asmctl recommande des solutions, si possible. La commande asmctl validate exécute des tests de base qui vérifient :

  1. que les API requises par Anthos Service Mesh sont activées sur le projet ;
  2. que la passerelle Istio-Ingress est correctement configurée pour appeler Mesh CA ;
  3. l'état général d'Istiod et de la passerelle Istio-Ingress.

Si vous exécutez la commande asmctl validate avec l'option facultative --with-testing-workloads, en plus des tests de base, asmctl exécute les tests de sécurité qui vérifient que :

  1. la communication TLS mutuelle (mTLS) est correctement configurée ;
  2. Mesh CA peut émettre des certificats.

Pour exécuter les tests de sécurité, asmctl déploie des charges de travail sur votre cluster dans un espace de noms de test, exécute les tests de communication mTLS, fournit les résultats et supprime l'espace de noms de test.

Pour exécuter asmctl, procédez comme suit :

  1. Assurez-vous que les identifiants gcloud application-default sont définis :

     gcloud auth application-default login
    
  2. Si vous ne l'avez pas déjà fait, obtenez des identifiants d'authentification pour interagir avec le cluster :

     gcloud container clusters get-credentials ${CLUSTER_NAME}
    
  3. Pour exécuter à la fois les tests de base et de sécurité (en supposant que istio-1.5.10-asm.2/bin) se trouve dans votre PATH), procédez comme suit :

    asmctl validate --with-testing-workloads
    

    Si l'opération réussit, la commande renvoie une sortie semblable à ce qui suit :

    [asmctl version 0.3.0]
    Using Kubernetes context: example-project_us-central1-example-cluster
    To change the context, use the --context flag
    Validating enabled APIs
    OK
    Validating ingressgateway configuration
    OK
    Validating istio system
    OK
    Validating sample traffic
    Launching example services...
    Sent traffic to example service http code: 200
    verified mTLS configuration
    OK
    Validating issued certs
    OK
    

Mettre à jour des proxys side-car

Vous devez injecter ou mettre à jour le proxy side-car pour toutes les charges de travail qui s'exécutaient sur votre cluster avant la mise à niveau d'Anthos Service Mesh afin qu'elles disposent de la version actuelle de cet outil.

Avec l'injection automatique de side-car, 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 YOUR_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 --all

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