Migration Canary vers l'autorité de certification Cloud Service Mesh
La migration vers l'autorité de certification Cloud Service Mesh (Cloud Service Mesh CA) depuis l'autorité de certification Istio (également appelée Citadel) nécessite la migration de la racine de confiance. Avant la version 1.10 de Cloud Service Mesh, si vous vouliez migrer d'Istio sur Google Kubernetes Engine (GKE) vers Cloud Service Mesh avec l'autorité de certification Cloud Service Mesh, vous deviez planifier un temps d'arrêt, car Cloud Service Mesh ne pouvait pas charger plusieurs certificats racines. Par conséquent, lors de la migration, les charges de travail nouvellement déployées approuvent le nouveau certificat racine, tandis que d'autres font confiance à l'ancien certificat racine. Les charges de travail utilisant des certificats signés par des certificats racine différents ne peuvent pas s'authentifier entre elles. Cela signifie que le trafic TLS mutuel (mTLS) est interrompu pendant la migration. L'ensemble du cluster est récupéré lorsque le plan de contrôle et toutes les charges de travail dans tous les espaces de noms sont redéployé avec le certificat de l'autorité de certification de Cloud Service Mesh. Si votre maillage comporte plusieurs clusters avec des charges de travail qui envoient des requêtes aux charges de travail d'un autre cluster, toutes les charges de travail de ces clusters doivent également être mises à jour.
Suivez les étapes décrites dans ce guide pour les cas d'utilisation suivants :
- Migrer d'Istio sur GKE vers Plan de contrôle Cloud Service Mesh 1.19.10-asm.9 dans le cluster avec l'autorité de certification Cloud Service Mesh.
- Mise à niveau depuis Cloud Service Mesh 1.15 or a 1.16 patch release avec Istio CA vers la Plan de contrôle 1.19.10-asm.9 Cloud Service Mesh dans le cluster avec l'autorité de certification Cloud Service Mesh.
Limites
- Tous les clusters GKE doivent appartenir au même projet Google Cloud.
Prérequis
Suivez les étapes de la page Installer les outils dépendants et valider le cluster pour effectuer les opérations suivantes :- Installer les outils nécessaires
- Télécharger
asmcli
- Accorder des autorisations d'administrateur de cluster
- Valider votre projet et votre cluster
Outils requis
Pendant la migration, vous exécutez un outil fourni par Google, migrate_ca
, pour valider les éléments suivants pour chaque pod du cluster :
- Certificat racine de l'autorité de certification Istio et de l'autorité de certification Cloud Service Mesh.
- Le certificat mTLS de charge de travail émis par Istio CA et par l'autorité de certification Cloud Service Mesh.
- Domaines de confiance configurés par l'autorité de certification Istio et l'autorité de certification Cloud Service Mesh.
Cet outil comporte les dépendances suivantes :
awk
grep
istioctl
L'exécution deasmcli install
télécharge la version deistioctl
qui correspond à la version de Cloud Service Mesh que vous installez.jq
kubectl
openssl
Présentation de la migration
Pour migrer vers l'autorité de certification Cloud Service Mesh, suivez les basé sur les révisions (également appelé (appelée "mise à niveau Canary"). Avec une migration basée sur la révision, une nouvelle révision de plan de contrôle est déployée en même temps que le plan de contrôle existant. Vous transférez ensuite progressivement vos charges de travail vers la nouvelle révision, ce qui vous permet de surveiller l'effet de la migration tout au long du processus. Pendant le processus de migration, l'authentification et l'autorisation sont entièrement fonctionnelles entre les charges de travail l'autorité de certification Cloud Service Mesh et les charges de travail utilisant l'autorité de certification Istio.
Voici un aperçu de la migration vers l'autorité de certification Cloud Service Mesh :
Distribuez la racine de confiance de l'autorité de certification Cloud Service Mesh.
Installez une nouvelle révision du plan de contrôle qui utilise l'autorité de certification Istio avec une qui distribuera la racine de confiance de l'autorité de certification Cloud Service Mesh.
Migrez les charges de travail vers le nouveau plan de contrôle, espace de noms par espace de noms, et testez votre application. Lorsque toutes les charges de travail sont correctement transférées vers le nouveau plan de contrôle, supprimez l'ancien plan de contrôle.
Migrez vers l'autorité de certification Cloud Service Mesh. Maintenant que tous les proxys side-car sont configurés avec ancienne racine de confiance et racine de confiance de l'autorité de certification Cloud Service Mesh, vous pouvez migrer vers l'autorité de certification Cloud Service Mesh sans temps d'arrêt. Encore une fois, vous suivez le processus de migration basé sur la révision :
Installez une révision de plan de contrôle avec l'autorité de certification Cloud Service Mesh activée.
Migrez les charges de travail vers la nouvelle révision de plan de contrôle, espace de noms par espace de noms, et testez votre application. Lorsque toutes les charges de travail sont correctement transférées vers le nouveau plan de contrôle, supprimez l'ancien plan de contrôle.
Supprimez les secrets de l'autorité de certification dans le cluster qui sont associés à l'ancienne autorité de certification et redémarrez le nouveau plan de contrôle.
Distribuer la racine de confiance de l'autorité de certification Cloud Service Mesh
Pour que vous puissiez migrer vers l'autorité de certification Cloud Service Mesh, tous les clusters GKE du maillage vous devez disposer de Cloud Service Mesh 1.10 ou d'une version ultérieure, et tous les clusters doivent être configurés avec une option de plan de contrôle qui déclenche la racine de confiance pour l'autorité de certification de Cloud Service Mesh distribué aux proxys de toutes les charges de travail du cluster. Une fois le processus terminé, chaque proxy est configuré avec l'ancienne et la nouvelle racine de confiance. Avec ce schéma, lorsque vous effectuez une migration vers l'autorité de certification Cloud Service Mesh, les charges de travail utilisant l'autorité de certification Cloud Service Mesh peuvent s'authentifier auprès des charges de travail à l'aide de l'ancienne autorité de certification.
Installer une nouvelle révision de plan de contrôle
Installez une révision de plan de contrôle avec une option qui distribue la racine de confiance de l'autorité de certification Cloud Service Mesh.
Suivez les étapes de la section Installer les outils dépendants et valider le cluster pour vous préparer à utiliser un outil fourni par Google,
asmcli
, afin d'installer la nouvelle version du plan de contrôle.Assurez-vous de disposer de la version de
asmcli
qui installe Cloud Service Mesh 1.11 ou une version ultérieure :./asmcli --version
Exécutez
asmcli install
. Dans la commande suivante, remplacez les espaces réservés par vos valeurs../asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --enable_all \ --ca citadel \ --ca_cert CA_CERT_FILE_PATH \ --ca_key CA_KEY_FILE_PATH \ --root_cert ROOT_CERT_FILE_PATH \ --cert_chain CERT_CHAIN_FILE_PATH \ --option ca-migration-citadel \ --revision_name REVISION_1 \ --output_dir DIR_PATH
--fleet_id
: ID du projet du projet hôte du parc.--kubeconfig
: Chemin d'accès au fichierkubeconfig
. Vous pouvez spécifier un chemin d'accès relatif ou complet. La variable d'environnement$PWD
ne fonctionne pas ici.--output_dir
: incluez cette option pour spécifier un répertoire dans lequelasmcli
télécharge le packageanthos-service-mesh
et extrait le fichier d'installation, qui contientistioctl
, des exemples et des fichiers manifestes. Sinon,asmcli
télécharge les fichiers dans un répertoiretmp
. Vous pouvez spécifier un chemin d'accès relatif ou complet. La variable d'environnement$PWD
ne fonctionne pas ici.--enable_all
: autorise l'outil à effectuer les opérations suivantes :- Accorder les autorisations IAM requises.
- Activer les API Google requises.
- Définir un libellé sur le cluster qui identifie le réseau maillé.
- Enregistrer le cluster dans le parc si ce n'est déjà fait.
-ca citadel
: pour éviter les temps d'arrêt, spécifiez Istio CA (l'option "citadel" correspond à Istio CA). Ne passez pas à l'autorité de certification Cloud Service Mesh pour le moment.--ca_cert
: le certificat intermédiaire--ca_key
: la clé du certificat intermédiaire--root_cert
: le certificat racine--cert_chain
: la chaîne de certificats--option ca-migration-citadel
: lorsque vous redéployez vos charges de travail, cette option déclenche la nouvelle racine de confiance pour qu'elle soit distribuée aux proxys side-car des charges de travail.REVISION_1
: recommandé. A [libellé de révision](/service-mesh/docs/revisions-overview) est une paire clé-valeur définie sur le plan de contrôle. La clé de l'étiquette de révision est toujoursistio.io/rev
Par défaut, l'outil définit la valeur de l'attribut étiquette de révision en fonction de la version de Cloud Service Mesh, par exemple:asm-11910-9
Nous vous recommandons d'inclure cette option et de remplacerREVISION_1
par un nom qui décrit l'installation, tel queasm-11910-9-distribute-root
. Le nom doit être une étiquette DNS-1035 et doit être en minuscules Les caractères alphanumériques ou-
commencent par une lettre et se termine par un caractère alphanumérique (tel quemy-name
ouabc-123
).
Migrer les charges de travail vers le nouveau plan de contrôle
Pour terminer la distribution de la nouvelle racine de confiance, vous devez ajouter à vos espaces de noms le libellé de révision istio.io/rev=<var>REVISION_1</var>-distribute-root
et redémarrer vos charges de travail. Lorsque vous testez vos charges de travail après les avoir redémarrées, vous exécutez un outil pour vérifier que le proxy side-car est configuré avec l'ancienne et la nouvelle racine de confiance de l'autorité de certification Cloud Service Mesh.
Définissez le contexte actuel de
kubectl
. Dans la commande suivante, remplacez--region
par--zone
si vous disposez d'un cluster à zone unique.gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --region=CLUSTER_LOCATION
Téléchargez l'outil de validation :
curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/master/scripts/ca-migration/migrate_ca > migrate_ca
Définissez la partie exécutable sur l'outil :
chmod +x migrate_ca
L'outil
migrate_ca
appelleistioctl
, qui dépend de la version. L'outilasmcli
ajoute un lien symbolique àistioctl
dans le répertoire que vous avez spécifié pour--output_dir
. Assurez-vous que le répertoire se trouve au début de votre chemin. Dans la commande suivante, remplacezISTIOCTL_PATH
par le répertoire contenantistioctl
que l'outil a téléchargé.export PATH=ISTIOCTL_PATH:$PATH which istioctl echo $PATH
Obtenez le libellé de révision associé à
istiod
etistio-ingressgateway
.kubectl get pod -n istio-system -L istio.io/rev
Le résultat ressemble à ce qui suit :
NAME READY STATUS RESTARTS AGE REV istio-ingressgateway-5fd454f8ff-t7w9x 1/1 Running 0 36m default istio-ingressgateway-asm-195-2-distribute-root-c6ccfbdbd-z2s9p 1/1 Running 0 18m asm-195-2-distribute-root istio-ingressgateway-asm-195-2-distribute-root-c6ccfbdbd-zr2cs 1/1 Running 0 18m asm-195-2-distribute-root istiod-68bc495f77-shl2h 1/1 Running 0 36m default istiod-asm-195-2-distribute-root-6f764dbb7c-g9f8c 1/1 Running 0 18m asm-195-2-distribute-root istiod-asm-195-2-distribute-root-6f764dbb7c-z7z9s 1/1 Running 0 18m asm-195-2-distribute-root
Dans le résultat, sous la colonne
REV
, notez la valeur du libellé de révision de la nouvelle révision, qui correspond au libellé de révision que vous avez spécifié lors de l'exécution deasmcli install
. Dans cet exemple, la valeur estasm-11910-9-distribute-root
.Vous devez supprimer l'ancienne révision de
istiod
lorsque vous avez terminé de déplacer les charges de travail vers la nouvelle révision. Notez la valeur du libellé de révision pour l'ancienne révisionistiod
. L'exemple de résultat montre une migration à partir d'Istio, qui utilise la révisiondefault
.
Ajoutez le libellé de révision à un espace de noms et supprimez le libellé
istio-injection
(s'il existe). Dans la commande suivante, remplacezNAMESPACE
par l'espace de noms auquel ajouter un libellé.kubectl label namespace NAMESPACE istio.io/rev=REVISION_1 istio-injection- --overwrite
Si
"istio-injection not found"
apparaît dans le résultat, vous pouvez l'ignorer. Cela signifie que l'espace de noms n'avait pas auparavant l'étiquetteistio-injection
. Comme le comportement de l'injection automatique n'est pas défini lorsqu'un espace de noms possède à la foisistio-injection
et l'élément l'étiquette de révision, toutes les commandeskubectl label
de Cloud Service Mesh s'assurent explicitement qu'un seul est défini.Redémarrez les pods pour déclencher la réinjection :
kubectl rollout restart deployment -n NAMESPACE
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 pour leur ajouter des libellés et redémarrer les pods.
Vérifiez que les proxys side-car de toutes les charges de travail du cluster sont configurés avec les anciens et les nouveaux certificats racines :
./migrate_ca check-root-cert
Résultat attendu :
Namespace: foo httpbin-66cdbdb6c5-pmzps.foo trusts [CITADEL MESHCA] sleep-64d7d56698-6tmjm.foo trusts [CITADEL MESHCA]
Si vous devez migrer des passerelles, suivez les étapes décrites dans la section Mises à niveau Canary (avancées) pour installer de nouveaux déploiements de passerelle. Voici quelques points à retenir :
- Utilisez
REVISION_1
comme libellé de révision. - Déployez les ressources de passerelle dans le même espace de noms que la passerelle de l'ancienne installation pour effectuer une migration sans temps d'arrêt. Assurez-vous que les ressources de service pointant vers l'ancienne passerelle incluent également les déploiements les plus récents.
- Ne supprimez pas les anciens déploiements de passerelle tant que vous n'êtes pas sûr que votre application fonctionne correctement (après l'étape suivante).
- Utilisez
Si vous êtes sûr que votre application fonctionne comme prévu, continuez de suivre les étapes pour valider la transition vers la nouvelle version de
istiod
. Si vous rencontrez un problème avec votre application, suivez la procédure de rollback.Terminer la transition
Si vous êtes sûr que votre application fonctionne comme prévu, supprimez l'ancien plan de contrôle pour terminer la transition vers la nouvelle version.
Accédez au répertoire dans lequel se trouvent les fichiers du dépôt GitHub
anthos-service-mesh
.Configurez le webhook de validation pour utiliser le nouveau plan de contrôle.
kubectl apply -f asm/istio/istiod-service.yaml
Supprimez l'ancien déploiement
istio-ingressgateway
. La commande que vous exécutez varie selon que vous effectuez la migration depuis Istio ou une mise à niveau depuis une version précédente de Cloud Service Mesh :Migrer
Si vous avez effectué une migration depuis Istio, l'ancienne
istio-ingressgateway
ne comporte pas d'étiquette de révision.kubectl delete deploy/istio-ingressgateway -n istio-system
Mettre à niveau
Si vous avez effectué une mise à niveau à partir d'une version précédente de Cloud Service Mesh, commande suivante, remplacez
OLD_REVISION
par le libellé de révision de la version précédenteistio-ingressgateway
kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
Supprimez l'ancienne révision de
istiod
. La commande à utiliser dépend si vous effectuez une migration depuis Istio ou une mise à niveau à partir d'une Cloud Service Mesh.Migrer
Si vous avez effectué une migration depuis Istio, l'ancienne
istio-ingressgateway
ne comporte pas d'étiquette de révision.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Mettre à niveau
Si vous avez effectué une mise à niveau à partir d'une version précédente de Cloud Service Mesh, commande suivante, assurez-vous que
OLD_REVISION
correspond au libellé de révision de la version précédente deistiod
.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Supprimez la version précédente de la configuration
IstioOperator
.kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
Le résultat ressemble à ce qui suit :
istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted
Rollback
Si vous avez rencontré un problème lors du test de votre application avec la nouvelle version de
istiod
, procédez comme suit pour effectuer un rollback vers la version précédente :Supprimez les nouveaux déploiements de passerelle installés à l'étape 11.
Modifiez les libellés de votre espace de noms pour activer l'injection automatique avec la version précédente de
istiod
. La commande que vous utilisez varie selon que vous avez utilisé une étiquette de révision ouistio-injection=enabled
avec la version précédente.Si vous avez utilisé un libellé de révision pour l'injection automatique :
kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
Si vous avez utilisé
istio-injection=enabled
:kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Résultat attendu :
namespace/NAMESPACE labeled
Confirmez que le libellé de révision de l'espace de noms correspond au libellé de révision de la version précédente de
istiod
:kubectl get ns NAMESPACE --show-labels
Redémarrez les pods pour déclencher une réinjection afin que les proxys disposent de la version précédente :
kubectl rollout restart deployment -n NAMESPACE
Supprimez le nouveau déploiement
istio-ingressgateway
.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION_1 -n istio-system --ignore-not-found=true
Supprimez la nouvelle révision de
istiod
.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION_1 -n istio-system --ignore-not-found=true
Supprimez la nouvelle configuration
IstioOperator
.kubectl delete IstioOperator installed-state-asm-11910-9-distribute-root -n istio-system
Le résultat attendu ressemble à ce qui suit :
istiooperator.install.istio.io "installed-state-asm-11910-9-distribute-root" deleted
Migrer vers l'autorité de certification Cloud Service Mesh
Maintenant que les proxys side-car de toutes les charges de travail sont configurés avec l'ancienne racine de confiance et la nouvelle racine de confiance de l'autorité de certification Cloud Service Mesh, les étapes de migration vers l'autorité de certification Cloud Service Mesh sont similaires à celles que vous avez effectuées pour distribuer la racine de confiance de l'autorité de certification Cloud Service Mesh :
Installer un nouveau plan de contrôle avec l'autorité de certification Cloud Service Mesh activée
Vous utilisez asmcli install
pour installer une nouvelle révision du plan de contrôle pour laquelle Mesh CA est activé.
Si vous avez personnalisé l'installation précédente, vous devez spécifier les mêmes fichiers de superposition lorsque vous exécutez
asmcli install
.Exécutez
asmcli install
. Dans la commande suivante, remplacez les espaces réservés par vos valeurs../asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --enable_all \ --ca mesh_ca \ --root_cert ROOT_CERT_FILE_PATH \ --cert_chain CERT_CHAIN_FILE_PATH --option ca-migration-meshca \ --revision_name REVISION_2 \ --output_dir DIR_PATH \ OVERLAYS
--fleet_id
: ID du projet du projet hôte du parc.--kubeconfig
: chemin d'accès au fichierkubeconfig
. Vous pouvez spécifier un chemin d'accès relatif ou complet. La variable d'environnement$PWD
ne fonctionne pas ici.--output_dir
: incluez cette option pour spécifier un répertoire dans lequelasmcli
télécharge le packageanthos-service-mesh
et extrait le fichier d'installation, qui contientistioctl
, des exemples et des fichiers manifestes. Sinon,asmcli
télécharge les fichiers dans un répertoiretmp
. Vous pouvez spécifier un chemin d'accès relatif ou complet. La variable d'environnement$PWD
ne fonctionne pas ici.--enable_all
: autorise l'outil à effectuer les opérations suivantes :- Accorder les autorisations IAM requises.
- Activer les API Google requises.
- Définir un libellé sur le cluster qui identifie le réseau maillé.
- Enregistrer le cluster dans le parc si ce n'est déjà fait.
--ca mesh_ca
: vous pouvez maintenant passer à l'autorité de certification Cloud Service Mesh, car la racine de confiance de l'autorité de certification Cloud Service Mesh a été distribuée.REVISION_2
: recommandé. RemplacezREVISION_2
par un nom qui décrit l'installation, tel queasm-11910-9-meshca-ca-migration
. Le nom 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 exemplemy-name
ouabc-123
).--option ca-migration-migration
: lorsque vous [redéployez vos charges de travail](/service-mesh/docs/unified-install/install-anthos-service-mesh#deploy_and_redeploy_workloads), cette option configure les proxys pour qu'ils utilisent la racine de confiance de l'autorité de certification Cloud Service Mesh.
Migrer les charges de travail vers le nouveau plan de contrôle
Pour terminer l'installation, vous devez ajouter à vos espaces de noms le nouveau libellé de révision et redémarrer vos charges de travail.
Obtenez le libellé de révision associé à
istiod
etistio-ingressgateway
.kubectl get pod -n istio-system -L istio.io/rev
Le résultat ressemble à ce qui suit :
NAME READY STATUS RESTARTS AGE REV istio-ingressgateway-asm-11910-9-distribute-root-65d884685d-6hrdk 1/1 Running 0 67m asm-11910-9-distribute-root istio-ingressgateway-asm-11910-9-distribute-root65d884685d-94wgz 1/1 Running 0 67m asm-11910-9-distribute-root istio-ingressgateway-asm-11910-9-meshca-ca-migration-8b5fc8767-gk6hb 1/1 Running 0 5s asm-11910-9-meshca-ca-migration istio-ingressgateway-asm-11910-9-meshca-ca-migration-8b5fc8767-hn4w2 1/1 Running 0 20s asm-11910-9-meshca-ca-migration istiod-asm-11910-9-distribute-root-67998f4b55-lrzpz 1/1 Running 0 68m asm-11910-9-distribute-root istiod-asm-11910-9-distribute-root-67998f4b55-r76kr 1/1 Running 0 68m asm-11910-9-distribute-root istiod-asm-11910-9-meshca-ca-migration-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-11910-9-meshca-ca-migration istiod-asm-11910-9-meshca-ca-migration-5cd96f88f6-wm68b 1/1 Running 0 27s asm-11910-9-meshca-ca-migration
Dans le résultat, sous la colonne
REV
, notez la valeur du libellé de révision pour la nouvelle version. Dans cet exemple, la valeur estasm-11910-9-meshca-ca-migration
.Notez également la valeur du libellé de révision pour l'ancienne version de
istiod
. Vous en aurez besoin pour supprimer l'ancienne version deistiod
lorsque vous aurez terminé migrer des charges de travail vers la nouvelle version. Dans l'exemple, la valeur du libellé de révision pour la révision précédente estasm-11910-9-distribute-root
.
Ajoutez le nouveau libellé de révision à un espace de noms. Dans la commande suivante, remplacez
NAMESPACE
par l'espace de noms auquel ajouter un libellé.kubectl label namespace NAMESPACE istio.io/rev=REVISION_2 --overwrite
Redémarrez les pods pour déclencher la réinjection :
kubectl rollout restart deployment -n NAMESPACE
Testez votre application pour vérifier que les charges de travail fonctionnent correctement. Assurez-vous que la communication mTLS fonctionne entre les charges de travail de l'ancien espace de noms et celles du nouvel espace de noms.
Si vous avez des charges de travail dans d'autres espaces de noms, répétez les étapes pour leur ajouter des libellés et redémarrer les pods.
Suivez les étapes décrites dans Mises à niveau sur place pour mettre à niveau les anciens déploiements de passerelle installés à l'étape 11 de la section précédente vers la dernière révision
REVISION_2
.Si vous êtes sûr que votre application fonctionne comme prévu, continuez de suivre les étapes pour valider la transition vers le nouveau plan de contrôle. Si vous rencontrez un problème avec votre application, suivez la procédure de rollback.
Terminer la transition
Si vous êtes sûr que votre application fonctionne comme prévu, supprimez l'ancien plan de contrôle pour terminer la transition vers la nouvelle version.
Accédez au répertoire dans lequel se trouvent les fichiers du dépôt GitHub
anthos-service-mesh
.Configurez le webhook de validation pour utiliser le nouveau plan de contrôle.
kubectl apply -f asm/istio/istiod-service.yaml
Supprimez l'ancien déploiement
istio-ingressgateway
. Dans la commande suivante, remplacezOLD_REVISION
par le libellé de révision pour la version précédente deistio-ingressgateway
.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
Supprimez l'ancienne révision
istiod
. Dans la commande suivante, remplacezOLD_REVISION
par le libellé de révision pour la version précédente deistiod
.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Supprimez l'ancienne configuration
IstioOperator
.kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
Le résultat ressemble à ce qui suit :
istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted
Rollback
Si vous avez rencontré un problème lors du test de votre application avec la nouvelle révision
istiod
, procédez comme suit pour effectuer un rollback vers la révision précédente :Suivez les étapes décrites dans Mises à niveau sur place pour revenir aux versions de déploiements de passerelle précédemment mis à niveau à l'étape 6 de cette section vers l'ancienne révision
REVISION_1
.Modifiez le libellé de votre espace de noms pour activer l'injection automatique avec la révision
istiod
précédente.kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
Résultat attendu :
namespace/NAMESPACE labeled
Confirmez que le libellé de révision de l'espace de noms correspond au libellé de révision de la version précédente de
istiod
:kubectl get ns NAMESPACE --show-labels
Redémarrez les pods pour déclencher une réinjection afin que les proxys disposent de la version précédente :
kubectl rollout restart deployment -n NAMESPACE
Supprimez le nouveau déploiement
istio-ingressgateway
.kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION_2 -n istio-system --ignore-not-found=true
Supprimez la nouvelle version de
istiod
. Assurez-vous que le libellé de révision indiqué dans la commande suivante corresponde à la révision.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION_2 -n istio-system --ignore-not-found=true
Supprimez la nouvelle version de la configuration
IstioOperator
.kubectl delete IstioOperator installed-state-REVISION_2 -n istio-system
Le résultat attendu ressemble à ce qui suit :
istiooperator.install.istio.io "installed-state-REVISION_2" deleted
Supprimer les secrets de l'autorité de certification et redémarrer le nouveau plan de contrôle
Conservez les secrets au cas où vous en auriez besoin :
kubectl get secret/cacerts -n istio-system -o yaml > save_file_1 kubectl get secret/istio-ca-secret -n istio-system -o yaml > save_file_2
Supprimez les secrets de l'autorité de certification dans le cluster associé à l'ancienne autorité de certification :
kubectl delete secret cacerts istio-ca-secret -n istio-system --ignore-not-found
Redémarrez le plan de contrôle nouvellement installé. Cela permet de s'assurer que l'ancienne racine de confiance est supprimée de toutes les charges de travail exécutées dans le maillage.
kubectl rollout restart deployment -n istio-system