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 objetServiceMeshFeatureSpec
à 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 champconfig.configRef
de l'objetServiceMeshBinding
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
- Dans la console du centre de gestion, accédez au menu Tableau de bord.
- Cliquez sur l'onglet Mises à niveau pour afficher toutes les mises à niveau disponibles.
- Cliquez sur Afficher les mises à niveau pour le cluster que vous souhaitez mettre à niveau.
- 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.
- 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.
- 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.
- 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 :
Créez un objet
ServiceMeshFeatureSpec
pour la nouvelle version. Voici un exemple d'objet pour la version1.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
Mettez à jour l'objet
ServiceMeshBinding
existant pour insérer une nouvelle entrée pour lier la nouvelleServiceMeshFeatureSpec
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
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
etNEW_SERVICE_MESH_SPEC
par les valeurs configurées dans l'objetServiceMeshBinding
.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 conditionReady
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 :
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
- Dans la console du Centre de gestion, accédez au menu Service Mesh.
- 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.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
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
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
Testez votre application pour vérifier que les charges de travail fonctionnent correctement.
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
- Dans la console du Centre de gestion, accédez au menu Service Mesh.
- Dans la colonne Versions, cliquez sur le lien de la version précédente d'Anthos Service Mesh.
- Sur la page Modifier le maillage de services, cliquez sur Supprimer le maillage de services.
- 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. - 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
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.
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.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.
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'objetServiceMeshBinding
après la suppression de l'entréePREVIOUS_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
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.