Ce guide explique comment migrer d'Istio 1.6 vers Anthos Service Mesh 1.6.14 sur un cluster GKE. Si une version antérieure d'Istio est installée, vous devez d'abord mettre à niveau Istio vers la version 1.6.
Avant de commencer
Avant d'installer Anthos Service Mesh, assurez-vous de disposer des éléments suivants :
- Configurez votre environnement pour installer les outils dont vous avez besoin.
- Configurez votre projet pour activer les API requises et définir les autorisations.
- Configurez votre cluster pour activer les options de cluster requises.
- Consultez la page Préparer la migration depuis Istio.
Définir des identifiants et des autorisations
Initialisez votre projet afin de le préparer pour l'installation. Cette commande crée, entre autres, un compte de service pour permettre aux composants du plan de contrôle, tels que le proxy side-car, d'accéder en toute sécurité aux données et aux ressources du projet :
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"
La commande renvoie des accolades vides :
{}
.Obtenez des identifiants d'authentification pour interagir avec le cluster :
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
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 poursuivre avec le cluster-admin-binding existant.
Télécharger le fichier d'installation
-
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.14-asm.2-linux-amd64.tar.gz
-
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.14-asm.2-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
La sortie attendue est
Verified OK
. -
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.14-asm.2-linux-amd64.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
-
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.14-asm.2-osx.tar.gz
-
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.14-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
La sortie attendue est
Verified OK
. -
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.14-asm.2-osx.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
-
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.14-asm.2-win.zip
-
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.14-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
La sortie attendue est
Verified OK
. -
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.14-asm.2-win.zip
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
-
Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.
cd istio-1.6.14-asm.2
-
Pour plus de commodité, ajoutez les outils du répertoire
/bin
à votre variable PATH :export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Préparer les fichiers de configuration des ressources
Lorsque vous exécutez la commande istioctl install
, vous spécifiez -f istio-operator.yaml
sur la ligne de commande. Ce fichier contient des informations sur le projet et le cluster requis par Anthos Service Mesh. Vous devez télécharger un package contenant istio-operator.yaml
et d'autres fichiers de configuration des ressources afin de pouvoir définir les informations sur le projet et le cluster.
Pour commencer, choisissez un package à télécharger en fonction de l'autorité de certification que vous souhaitez utiliser :
asm
: thumb_up_alt Ce package active Mesh CA, que nous recommandons pour les nouvelles installations.asm-citadel
: vous pouvez éventuellement activer Citadel en tant qu'autorité de certification. Avant de choisir ce package, consultez la page Choisir une autorité de certification pour plus d'informations.
Pour préparer les fichiers de configuration des ressources, procédez comme suit :
Créez un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh. Nous vous recommandons d'utiliser le nom du cluster comme nom de répertoire.
Accédez au répertoire dans lequel vous souhaitez télécharger le package Anthos Service Mesh.
Téléchargez le package que vous souhaitez utiliser en fonction de l'autorité de certification :
Mesh CA
Téléchargez le package
asm
, qui active Mesh CA :kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
Citadel
Téléchargez le package
asm-citadel
, qui active Citadel en tant qu'autorité de certification :kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
Définissez l'ID du projet dans lequel le cluster a été créé :
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Définissez le numéro de projet du projet hôte du parc :
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
Définissez le nom du cluster :
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Définissez la zone ou la région par défaut :
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Définissez le profil de configuration que vous souhaitez utiliser :
Si tous vos clusters se trouvent dans le même projet, définissez le profil
asm-gcp
:kpt cfg set asm anthos.servicemesh.profile asm-gcp
Si votre maillage de services contient ou contiendra plusieurs clusters se trouvant dans des projets différents, définissez le profil
asm-gcp-multiproject
(version bêta) :kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
Si vous avez défini le profil
asm-gcp-multiproject
et téléchargé le packageasm
qui active Mesh CA, vous devez configurer les alias de domaine de confiance pour les autres projets qui formeront le maillage de services multicluster/multiprojet. Sinon, ignorez cette étape.Obtenez l'ID de projet de tous les clusters qui se trouveront dans le maillage multicluster/multiprojet.
Pour l'ID de projet de chaque cluster, définissez les alias de domaine de confiance. Par exemple, si vous avez des clusters dans trois projets, exécutez la commande suivante en remplaçant
PROJECT_ID_1
,PROJECT_ID_2
etPROJECT_ID_3
par l'ID de projet de chaque cluster.kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog
Lorsque vous configurez les clusters dans les autres projets, vous pouvez exécuter la même commande.
Les alias de domaine de confiance permettent à Mesh CA d'authentifier les charges de travail sur les clusters d'autres projets. En plus de définir les alias de domaine de confiance, vous devez activer l'équilibrage de charge interclusters après avoir installé Anthos Service Mesh.
Affichez les valeurs des setters
kpt
:kpt cfg list-setters asm
Dans le résultat de la commande, vérifiez que les valeurs des setters suivantes sont correctes :
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
Migrer vers Anthos Service Mesh
Pour effectuer une migration depuis Istio, 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 le libellé revision
qui identifie la version du nouveau 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.
Vous effectuez ensuite une migration vers la nouvelle version en définissant le même libellé revision
sur vos charges de travail de sorte qu'il pointe vers le nouveau plan de contrôle et en effectuant un redémarrage progressif pour réinjecter les proxys avec la nouvelle version d'Anthos Service Mesh. 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 immédiatement la version précédente.
Mettre à jour le plan de contrôle
Exécutez la commande suivante pour déployer le nouveau plan de contrôle à l'aide du profil de configuration que vous avez défini dans le fichier istio-operator.yaml
. Si vous souhaitez activer une fonctionnalité facultative compatible, incluez -f
et le nom du fichier YAML dans la ligne de commande suivante. Pour plus d'informations, consultez la page Activer les fonctionnalités facultatives.
istioctl install \ -f asm/cluster/istio-operator.yaml \ --set revision=asm-1614-2
L'argument --set revision
ajoute un libellé istio.io/rev
à istiod
. Après avoir exécuté la commande, deux déploiements de plan de contrôle et des services 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-asm-1614-2-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 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
.
Mettez à jour les charges de travail à injecter avec la nouvelle version d'Anthos Service Mesh :
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --overwrite
Le libellé
istio-injection
doit être supprimé, car il est prioritaire sur le libelléistio.io/rev
.Redémarrez les pods pour déclencher la réinjection :
kubectl rollout restart deployment -n NAMESPACE
Vérifiez que les pods sont configurés de sorte qu'ils pointent vers le plan de contrôle
istiod-asm-1614-2
:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2
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 précédentes pour chaque espace de noms.
Si vous êtes sûr que votre application fonctionne comme prévu, passez à la section Terminer la migration. Sinon, procédez comme suit pour effectuer un rollback vers la version précédente :
Pour effectuer un rollback :
Mettez à jour les charges de travail à injecter avec la version précédente du plan de contrôle :
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
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
Redéployez la version précédente du fichier
istio-ingressgateway
:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Supprimez le nouveau plan de contrôle :
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-1614-2 -n istio-system --ignore-not-found=true
Terminer la migration
Si vous êtes sûr que votre application fonctionne comme prévu, procédez comme suit pour terminer la migration vers Anthos Service Mesh :
Si vous effectuez une migration depuis le module complémentaire Istio sur GKE, désactivez ce module complémentaire :
gcloud beta container clusters update CLUSTER_NAME \ --project=CLUSTER_PROJECT_ID \ --update-addons=Istio=DISABLED
Exécutez la commande suivante pour déployer le contrôleur de service canonique :
kubectl apply -f asm/canonical-service/controller.yaml
La commande déploie le contrôleur de service canonique sur votre cluster. Le contrôleur de service canonique regroupe les charges de travail appartenant au même service logique. Il est nécessaire de débloquer les fonctionnalités supplémentaires du tableau de bord des services dans la console Google Cloud. Pour en savoir plus, consultez la page Activer et désactiver le contrôleur de service canonique.
Supprimez l'ancien plan de contrôle :
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Afficher les tableaux de bord Anthos Service Mesh
Cette section ne s'applique que si vous avez installé Anthos Service Mesh avec le profil de configuration asm-gcp
. Si vous avez utilisé le profil asm-gcp-multiproject
pour installer Anthos Service Mesh, les données de télémétrie ne seront pas disponibles sur les tableaux de bord Anthos Service Mesh dans la console Google Cloud.
Une fois que les charges de travail sont déployées sur votre cluster et que les proxys side-car ont été injectés, vous pouvez explorer les pages Anthos Service Mesh de la console Google Cloud pour consulter toutes les fonctionnalités d'observabilité offertes par Anthos Service Mesh. Notez qu'il faut environ une à deux minutes pour que les données de télémétrie soient affichées dans la console Google Cloud après le déploiement des charges de travail.
L'accès à Anthos Service Mesh dans la console Google Cloud est contrôlé par IAM (Identity and Access Management). Pour permettre l'accès aux pages Anthos Service Mesh, un propriétaire de projet doit accorder aux utilisateurs le rôle éditeur ou lecteur de projet, ou les rôles plus restrictifs décrits dans la section Contrôler l'accès à Anthos Service Mesh dans la console Google Cloud.
Dans Google Cloud Console, accédez à Anthos Service Mesh.
Sélectionnez le projet Google Cloud dans la liste déroulante de la barre de menu.
Si vous avez plusieurs maillages de services, sélectionnez le maillage dans la liste déroulante Maillage de services.
Pour en savoir plus, consultez la page Explorer Anthos Service Mesh dans la console Google Cloud.
Outre les pages Anthos Service Mesh, les métriques liées à vos services (telles que le nombre de requêtes reçues par un service particulier) sont envoyées à Cloud Monitoring, où elles apparaissent dans l'explorateur de métriques.
Pour afficher les métriques, procédez comme suit :
Dans Google Cloud Console, accédez à la page Monitoring :
Sélectionnez Ressources > Explorateur de métriques.
Pour obtenir la liste complète des métriques, consultez la section Métriques Istio dans la documentation Cloud Monitoring.
Enregistrer votre cluster
Vous devez enregistrer votre cluster auprès de l'Environ du projet pour accéder à l'interface utilisateur unifiée dans la console Google Cloud. Un parc constitue un moyen unifié d'afficher et de gérer les clusters et leurs charges de travail, y compris les clusters extérieurs à Google Cloud.
Consultez la section Enregistrer des clusters dans la Fleet pour en savoir plus sur l'enregistrement de votre cluster.