Mettre à niveau Anthos Service Mesh

Cette page explique comment mettre à niveau Anthos Service Mesh.

Les administrateurs de plate-forme peuvent mettre à niveau Anthos Service Mesh. Mettre à niveau Anthos Service Mesh est une mise à niveau basée sur la révision ou Canary, dans laquelle les nouvelles versions et les versions précédentes du plan de contrôle sont exécutées lorsque vous testez la nouvelle version avec un petit le 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.

Le redéploiement des composants du plan de contrôle d'Anthos Service Mesh prend environ 5 à 10 minutes. Vous devez également 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 peut être d'environ 100 pods par minute, mais cela dépend de nombreux facteurs, tels que le nombre de pods, le nombre de nœuds, les paramètres de scaling des déploiements, les budgets d'interruption des pods, et d'autres paramètres de configuration.

Prerequisites

Assurez-vous de remplir les conditions suivantes avant de procéder à la mise à niveau :

  • Vous disposez d'un cluster d'utilisateur cible géré par le cluster d'administrateur.
  • Votre cluster d'utilisateur cible possède une installation Anthos Service Mesh existante qui propose des mises à niveau.

Afficher votre installation existante

Vérifiez qu'Anthos Service Mesh est installé sur votre cluster.

Console

Dans la console du centre de gestion, accédez au menu Service Mesh pour afficher la liste des clusters sur lesquels Anthos Service Mesh est installé.

API

Vous trouverez les ressources personnalisées suivantes sur un cluster d'administrateur décrivant votre installation Anthos Service Mesh actuelle :

  • Un objet ServiceMeshBinding qui lie un objet ServiceMeshFeatureSpec à l'ID de votre cluster d'utilisateur Exécutez la commande suivante pour rechercher l'objet. Comme cette commande peut renvoyer plusieurs objets, vous devez trouver l'objet avec l'ID du cluster cible dans ses spécifications.

    KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center
    

    Voici un exemple de contenu de l'objet :

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshBinding
    metadata:
     name: service-mesh-binding-sample
     namespace: anthos-management-center
    spec:
     configs:
     - configRef:
         name: PREVIOUS_SERVICE_MESH_SPEC
         namespace: anthos-management-center
       placement:
         clusterIDs:
         - TARGET_CLUSTER_ID
    
  • Un objet ServiceMeshFeatureSpec qui définit les spécifications de votre installation Anthos Service Mesh. Son espace de noms et son nom sont référencés dans le champ config.configRef de l'objet ServiceMeshBinding décrit dans l'exemple précédent. Exécutez la commande suivante pour afficher l'objet.

    KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshfeaturespec PREVIOUS_SERVICE_MESH_SPEC -n anthos-management-center -o yaml
    

    Voici un exemple de contenu de l'objet :

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshFeatureSpec
    metadata:
     name:PREVIOUS_SERVICE_MESH_SPEC
     namespace: anthos-management-center
    spec:
     version: 1.7.3-asm.6
    

Installer une version plus récente d'Anthos Service Mesh

Vous pouvez passer à une version plus récente d'Anthos Service Mesh à l'aide de la console du centre de gestion ou de l'API.

Console

  1. Dans la console du centre de gestion, accédez au menu Tableau de bord.
  2. Cliquez sur l'onglet Mises à niveau pour afficher toutes les mises à niveau disponibles.
  3. Cliquez sur Afficher les mises à niveau pour le cluster que vous souhaitez mettre à niveau.
  4. Dans la liste "Mises à niveau disponibles", recherchez la version cible d'Anthos Service Mesh vers laquelle vous souhaitez effectuer la mise à niveau, puis cliquez surPassage à une édition supérieure pour ouvrir la page de mise à niveau d'Anthos Service Mesh.Page des mises à niveau disponibles
  5. Confirmez les informations de la version cible, telles que la version, la description et un lien vers les notes de version, puis cliquez sur Continuer.
  6. Dans la boîte de dialogue pop-up, cliquez sur Mettre à niveau pour commencer à installer la version cible d'Anthos Service Mesh sur le cluster cible.
  7. La page Service Mesh s'ouvre. Elle indique que la version cible est en cours d'installation.

API

Procédez comme suit à l'aide des commandes kubectl sur le cluster d'administrateur pour installer une version plus récente d'Anthos Service Mesh :

  1. Créez un objet ServiceMeshFeatureSpec pour la nouvelle version. Voici un exemple d'objet pour la version 1.8.3-asm.2 :

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshFeatureSpec
    metadata:
     name: NEW_SERVICE_MESH_SPEC
     namespace: anthos-management-center
    spec:
     version: 1.8.3-asm.2
    
  2. Mettez à jour l'objet ServiceMeshBinding existant pour insérer une nouvelle entrée pour lier la nouvelle ServiceMeshFeatureSpec au cluster :

     apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
     kind: ServiceMeshBinding
     metadata:
      name: service-mesh-binding-sample
      namespace: anthos-management-center
     spec:
      configs:
      - configRef:
          name: PREVIOUS_SERVICE_MESH_SPEC
          namespace: anthos-management-center
        placement:
          clusterIDs:
          - TARGET_CLUSTER_ID
      - configRef:
          name: NEW_SERVICE_MESH_SPEC
          namespace: anthos-management-center
        placement:
          clusterIDs:
          - TARGET_CLUSTER_ID
    
  3. La nouvelle version d'Anthos Service Mesh est installée sur le cluster d'administrateur. Vous pouvez vérifier si l'installation est prête à l'aide de la commande suivante :

     KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center -o jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" | grep NEW_SERVICE_MESH_SPEC | grep TARGET_CLUSTER_ID
    

    Remplacez TARGET_CLUSTER_ID et NEW_SERVICE_MESH_SPEC par les valeurs configurées dans l'objet ServiceMeshBinding.

    Voici un exemple de résultat :

    target-user-cluster-1 {"name":"new-spec-q64x7","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]
    

    Le status: true de la condition Ready indique que l'installation est terminée.

La version précédente d'Anthos Service Mesh n'est pas supprimée automatiquement. Vous devez migrer manuellement vos charges de travail vers la nouvelle version d'Anthos Service Mesh et désinstaller la version précédente.

Migrez vos charges de travail

Pour migrer vos charges de travail, procédez comme suit sur votre cluster d'utilisateur :

  1. Obtenez le libellé de révision de la version précédente et de la nouvelle version d'Anthos Service Mesh. Pour trouver ces valeurs, procédez comme suit :

    Console

    1. Dans la console du Centre de gestion, accédez au menu Service Mesh.
    2. Dans la liste des clusters, recherchez le libellé de révision dans la colonne "Révision" du cluster.

    API

    Exécutez la commande suivante :

     KUBECONFIG=USER_KUBECONFIG kubectl get pod -n istio-system -l app=istiod -L istio.io/rev
    

    Voici un exemple de résultat :

    NAME                                READY   STATUS    RESTARTS   AGE   REV
    istiod-asm-173-6-756d989c58-p84b9   1/1     Running   0          13h   asm-173-6
    istiod-asm-173-6-756d989c58-t6vh8   1/1     Running   0          13h   asm-173-6
    istiod-asm-183-2-76f64c6bc7-2qnxq   1/1     Running   0          17h   asm-183-2
    istiod-asm-183-2-76f64c6bc7-8nrpz   1/1     Running   0          17h   asm-183-2
    

    Dans le résultat, le libellé de la révision se trouve dans la colonne "REV". Dans cet exemple, la valeur est asm-183-2. Ce libellé sera utilisé ultérieurement pour déclencher l'injection side-car pour la nouvelle version d'Anthos Service Mesh.

  2. Ajoutez le libellé de révision à un espace de noms : Dans la commande suivante, remplacez REVISION par la valeur correspondant au libellé de révision de la nouvelle version d'Anthos Service Mesh.

    KUBECONFIG=USER_KUBECONFIG kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
    
  3. Redémarrez les charges de travail pour déclencher la réinjection, par exemple pour redémarrer tous les déploiements d'un espace de noms :

    KUBECONFIG=USER_KUBECONFIG kubectl rollout restart deployment -n NAMESPACE
    
  4. Vérifiez que vos pods sont configurés pour pointer vers la nouvelle version de istiod.

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

  6. Si vous avez des charges de travail dans d'autres espaces de noms, répétez les étapes 2 à 5 pour étiqueter l'espace de noms et redémarrer les charges de travail.

Supprimez la version précédente d'Anthos Service Mesh

Si votre application fonctionne comme prévu, vous pouvez désinstaller la version précédente d'Anthos Service Mesh à l'aide du centre de gestion ou de l'API.

Console

  1. Dans la console du Centre de gestion, accédez au menu Service Mesh.
  2. Dans la colonne Versions, cliquez sur le lien de la version précédente d'Anthos Service Mesh.
  3. Sur la page Modifier le maillage de services, cliquez sur Supprimer le maillage de services.
  4. Une boîte de dialogue pop-up affiche le résultat d'une vérification de confiance avant sa suppression. La boîte de dialogue répertorie tous les espaces de noms et pods qui dépendent toujours de la version précédente d'Anthos Service Mesh en vérifiant le libellé istio.io/rev sur les espaces de noms et les pods. Si la vérification détecte l'une de ces dépendances, vous ne pouvez pas continuer tant que vous n'avez pas migré ces pods ou espaces de noms.
  5. Si le contrôle de confiance réussit, cliquez sur Remove (Supprimer) pour lancer la désinstallation d'Anthos Service Mesh sur le cluster cible.

Une fois la demande de suppression envoyée, la page Service Mesh s'ouvre, et la version précédente d'Anthos Service Mesh n'est plus visible. La désinstallation des ressources Anthos Service Mesh précédentes peut prendre plusieurs minutes.

API

  1. Avant de supprimer la version précédente d'Anthos Service Mesh, vérifiez qu'aucun pod ni aucun espace de noms ne dépend de cette version.

    1. Exécutez la commande suivante pour vérifier les dépendances d'espace de noms.

      KUBECONFIG=USER_KUBECONFIG kubectl get namespace -l istio.io/rev=PREVIOUS_REVISION  
      

      Remplacez PREVIOUS_REVISION par le libellé de révision de la version précédente d'Anthos Service Mesh.

    2. Exécutez la commande suivante pour vérifier les dépendances des pods.

      KUBECONFIG=USER_KUBECONFIG kubectl get pod -l istio.io/rev=PREVIOUS_REVISION --field-selector metadata.namespace!=istio-system --all-namespaces
      

    Si les requêtes renvoient des résultats vides, passez à l'étape suivante. Sinon, migrez la charge de travail avant de continuer.

  2. Mettez à jour l'objet ServiceMeshBinding du cluster d'administrateur pour annuler la liaison de la spécification de fonctionnalité précédente au cluster cible. Voici un exemple de l'objet ServiceMeshBinding après la suppression de l'entrée PREVIOUS_SERVICE_MESH_SPEC :

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshBinding
    metadata:
     name: service-mesh-binding-sample
     namespace: anthos-management-center
    spec:
     configs:
     - configRef:
         name: NEW_SERVICE_MESH_SPEC
         namespace: anthos-management-center
       placement:
         clusterIDs:
         -  TARGET_CLUSTER_ID
    
  3. Une fois la ServiceMeshBinding mise à jour, la suppression de la version précédente d'Anthos Service Mesh démarre. La désinstallation peut prendre plusieurs minutes. Exécutez la commande suivante pour vérifier que la version précédente est supprimée.

    KUBECONFIG=USER_KUBECONFIG kubectl get deployment -n istio-system -l istio.io/rev=PREVIOUS_REVISION
    

    Cette commande renvoie un résultat vide si la désinstallation est terminée.