Ce guide explique comment effectuer une installation correcte d'Anthos Service Mesh version 1.5.10-asm.2 sur un cluster GKE Google Cloud existant à l'aide de l'interface de ligne de commande (CLI) de GKE Enterprise. Notez les limites suivantes avec cette version bêta de la CLI GKE Enterprise:
- Les mises à niveau ne sont pas acceptées. Si une version précédente d'Anthos Service Mesh est installée sur votre cluster, consultez la page Mettre à niveau Anthos Service Mesh sur GKE.
- Les installations sur GKE sur VMware ne sont pas acceptées. Pour installer Anthos Service Mesh sur un cluster GKE sur VMware existant, consultez la page Installer Anthos Service Mesh sur site.
L'installation active les fonctionnalités suivantes :
- Télémétrie du réseau maillé.
- Sécurité du réseau maillé, y compris l'autorité de certification d'Anthos Service Mesh (Mesh CA).
- Fonctionnalités par défaut compatibles répertoriées sur la page Fonctionnalités compatibles.
Ce guide explique également comment enregistrer votre cluster dans le parc se trouvant dans le même projet Google Cloud que le cluster. Un parc vous permet d'organiser les clusters pour faciliter la gestion multicluster. En enregistrant vos clusters dans un parc, vous pouvez regrouper des services et d'autres infrastructures selon vos besoins pour appliquer des stratégies cohérentes.
Avant de commencer
Avant de commencer l'installation :
- Configurez votre environnement.
- Installez la CLI GKE Enterprise.
- Lisez les informations importantes suivantes.
Conditions requises
Vous devez disposer d'une licence d'essai ou d'un abonnement GKE Enterprise. Pour en savoir plus, consultez le guide des tarifs de GKE Enterprise.
Votre cluster GKE doit répondre aux exigences suivantes :
- Au moins quatre nœuds.
- Le type de machine minimal est
e2-standard-4
, qui comporte quatre processeurs virtuels. - Utilisez une version disponible plutôt qu'une version statique de GKE.
Pour être inclus dans le maillage de services, les ports de service doivent être nommés et le nom de protocole du port doit respecter la syntaxe suivante :
name: protocol[-suffix]
, où les crochets indiquent un suffixe facultatif qui doit commencer par un tiret. Pour en savoir plus, consultez la section Attribuer des noms aux ports du service.Si vous installez 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.
Si vous avez créé un périmètre de service dans votre organisation, vous devrez peut-être ajouter le service Mesh CA au périmètre. Pour en savoir plus, consultez la section Ajouter l'autorité de certification Mesh CA à un périmètre de service.
Restrictions
Une seule installation d'Anthos Service Mesh par projet Google Cloud est acceptée. Les déploiements de plusieurs réseaux maillés dans un seul projet ne sont pas acceptés.
Données de certificat
Les certificats émis par l'autorité de certification d'Anthos Service Mesh (Mesh CA) incluent les données suivantes sur les services de votre application :
- L'ID de projet Google Cloud
- L'espace de noms GKE
- Le nom du compte de service GKE
Définir les valeurs par défaut du projet et du cluster
Obtenez l'ID du projet dans lequel le cluster a été créé :
gcloud
gcloud projects list
Console
Dans la console Google Cloud, accédez à la page Tableau de bord :
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.
Créez une variable d'environnement pour l'ID de projet :
export PROJECT_ID=
YOUR_PROJECT_ID
Définissez l'ID de projet par défaut pour Google Cloud CLI :
gcloud config set project ${PROJECT_ID}
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
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}
Préparer les fichiers de configuration des ressources
Vous utilisez la CLI GKE Enterprise et kustomize
pour exporter et corriger les fichiers de ressources Config Connector que vous utiliserez pour mettre à jour un cluster existant avec les options requises par Anthos Service Mesh. La ressource Config connector est la représentation Kubernetes des ressources Google Cloud.
Exporter les fichiers de configuration des ressources
Vous pouvez utiliser la commande gcloud beta anthos export
pour générer les fichiers de configuration des ressources d'un cluster existant.
Créez un répertoire pour les ressources Anthos Service Mesh. Pour plus de commodité, les étapes suivantes font référence au répertoire que vous créez en tant que ASM_RESOURCES.
Accédez au répertoire ASM_RESOURCES.
Téléchargez le package
asm-patch
dans le répertoire de travail actuel :kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.5-asm .
La commande crée un sous-répertoire appelé
asm-patch/
.Ajoutez un nom de répertoire dans une variable d'environnement appelée
BASE_DIR
. Lorsque vous exécutez la commandegcloud beta anthos export
sur un cluster existant, la CLI GKE Enterprise crée un répertoire portant le nom spécifié dansBASE_DIR
et génère les fichiers de ressources Config Connector dans le répertoire.export BASE_DIR=YOUR_BASE_DIR
Si vous souhaitez configurer plusieurs clusters, nous vous recommandons d'utiliser le nom du cluster comme nom de répertoire. Par exemple, si vous préparez les fichiers de configuration des ressources correspondant à deux clusters, après avoir exécuté la commande
gcloud beta anthos export
pourcluster-1
etcluster-2
, la structure de votre répertoire doit ressembler à ce qui suit :Dans ce schéma,
cluster-1
etcluster-2
sont les répertoires contenant les fichiers de configuration des ressources Config Connector associées à des clusters nommés respectivementcluster-1
etcluster-2
.Exportez les fichiers de configuration des ressources Config Connector :
gcloud beta anthos export ${CLUSTER_NAME} --output-directory ${BASE_DIR}
La commande
export
renseigne l'ID du projet et la zone ou région de votre cluster dans le fichier de configuration pour qu'ils correspondent aux paramètresgcloud config
actuels. Si vous souhaitez exporter des fichiers de configuration de ressources pour un cluster qui ne correspond pas à vos paramètresgcloud config
actuels, vous pouvez spécifier les options de ligne de commande suivantes :-p PROJECT_ID
-l YOUR_ZONE_OR_REGION
Exécutez la commande
gcloud beta anthos export --help
pour en savoir plus.
Appliquer un correctif aux fichiers de configuration des ressources
Utilisez les setters kpt
et kustomize
de GKE Enterprise pour mettre à jour les fichiers de configuration des ressources.
Répertoriez les ensembles de configuration disponibles dans le package
asm-patch
:kpt cfg list-setters asm-patch/
Le résultat ressemble à ce qui suit :
NAME VALUE SET BY DESCRIPTION COUNT base-dir base 1 gcloud.compute.location your_zone_or_region 1 gcloud.container.cluster your_cluster_name 3 gcloud.core.project your_project_id kpt 11 gcloud.project.projectNumber your_project_number kpt 1
Définissez le chemin relatif entre les répertoires
${BASE_DIR}
etasm-patch
:kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
Définissez le nom du cluster :
kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
Si vous n'avez pas défini les valeurs par défaut
gcloud config
, ou si vous souhaitez modifier les valeurs, exécutez les setters suivants :kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
Appliquez les correctifs Anthos Service Mesh aux fichiers de configuration de ressources du cluster :
pushd ${BASE_DIR} && kustomize create --autodetect \ --namespace ${PROJECT_ID} && popd
pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd
Validez les configurations finales des ressources :
kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0
En cas d'erreurs, corrigez celles-ci et validez à nouveau les configurations des ressources.
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 à jour le cluster et installer Anthos Service Mesh
La CLI GKE Enterprise met à jour votre cluster avec les options suivantes, requises par Anthos Service Mesh:
Elle ajoute un libellé
mesh_id
au cluster au formatproj-PROJECT_NUMBER
, oùPROJECT_NUMBER
correspond au numéro du projet dans lequel le cluster sera créé. Le libellémesh_id
est nécessaire pour que les métriques s'affichent dans le tableau de bord Anthos Service Mesh de la console Google Cloud. Si votre cluster possède des étiquettes existantes, la CLI GKE Enterprise les conserve.Elle active Workload Identity.
Active la surveillance Kubernetes Engine Monitoring.
Elle enregistre le cluster dans une présentation de la version disponible.
Exécutez la commande suivante pour mettre à jour le cluster et installer Anthos Service Mesh :
gcloud beta anthos apply ${BASE_DIR}
La commande met à jour votre cluster avec les options requises, puis déploie Anthos Service Mesh. Ce processus prend environ 30 minutes.
Vérifier les composants du plan de contrôle
Vérifiez que les pods du plan de contrôle dans istio-system
sont opérationnels :
kubectl get pod -n istio-system
Le résultat attendu ressemble à ce qui suit :
NAME READY STATUS RESTARTS AGE istio-ingressgateway-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
Enregistrer votre cluster
Vous devez enregistrer votre cluster auprès du parc 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.
Créer un compte de service et un fichier de clé Google Cloud
Un fichier JSON contenant des identifiants de compte de service est requis pour enregistrer un cluster. Pour respecter le principe du moindre privilège, nous vous recommandons de créer un compte de service distinct pour chaque cluster que vous enregistrez.
Pour créer un compte de service et un fichier de clé, procédez comme suit :
Sélectionnez un nom pour le compte de service et créez une variable d'environnement pour celui-ci :
export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
Créez le compte de service :
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
Répertoriez tous les comptes de service d'un projet pour confirmer que le compte de service a été créé :
gcloud iam service-accounts list
Liez le rôle IAM gkehub.connect au compte de service :
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
Créez une variable d'environnement pour le chemin d'accès local à l'emplacement où vous souhaitez enregistrer le fichier JSON. Nous vous recommandons de nommer le fichier en utilisant le nom du compte de service et votre ID de projet, par exemple :
/tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json
export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
Téléchargez le fichier JSON contenant la clé privée du compte de service :
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \ --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Enregistrer le cluster
Dans la commande suivante, remplacez MEMBERSHIP_NAME
par un nom qui représente de manière unique le cluster enregistré sur le Hub.
gcloud container hub memberships register MEMBERSHIP_NAME \ --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \ --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}
La commande renvoie un résultat semblable à celui-ci :
kubeconfig entry generated for CLUSTER_NAME. Waiting for membership to be created...done. Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME] Generating the Connect Agent manifest... Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]... Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]. Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.
Cette clé de compte de service est stockée sous la forme d'un secret nommé creds-gcp
dans l'espace de noms gke-connect
.
Pour en savoir plus sur l'enregistrement des clusters, consultez la page Enregistrer un cluster dans la documentation de Connect.
Injecter des proxys side-car
Anthos Service Mesh utilise des proxys side-car pour améliorer la sécurité, la fiabilité et l'observabilité du réseau. Avec Anthos Service Mesh, ces fonctions sont extraites du conteneur principal de l'application et mises en œuvre dans un proxy commun hors processus fourni par un conteneur séparé dans le même pod.
Vous devez injecter ou mettre à jour le proxy side-car à toutes les charges de travail qui s'exécutaient sur votre cluster avant l'installation d'Anthos Service Mesh afin qu'elles disposent de la version actuelle de cet outil. Avant de déployer des charges de travail, assurez-vous de configurer l'injection du proxy side-car afin qu'Anthos Service Mesh puisse surveiller et sécuriser le trafic.Vous pouvez activer l'injection side-car automatique avec une seule commande, par exemple :
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
où NAMESPACE
est le nom de l'espace de noms pour les services de votre application ou default
si vous n'avez pas créé explicitement d'espace de noms.
Pour en savoir plus, consultez la section Injecter des proxys side-car.
Afficher les pages Anthos Service Mesh
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.
Installation d'un exemple avec kpt
Vous pouvez éventuellement utiliser kpt
pour installer l'exemple Hipster dans le cluster.
Téléchargez l'exemple :
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ hipster-demo
Activez l'injection side-car automatique :
kubectl label namespace default istio-injection=enabled
Déployez l'exemple sur le cluster :
kubectl apply -f hipster-demo
Recherchez l'adresse IP externe de votre application :
kubectl get service frontend-external
Accédez à l'application dans votre navigateur pour confirmer l'installation :
http://EXTERNAL_IP/
Maintenant que vous disposez d'un exemple en cours d'exécution, vous pouvez explorer les fonctionnalités d'observabilité d'Anthos Service Mesh dans la console Google Cloud. Notez que l'affichage des services de votre maillage dans le graphique de topologie peut prendre jusqu'à 10 minutes.
Une fois l'exploration terminée, supprimez l'exemple Hipster :
kubectl delete -f hipster-demo
Étapes suivantes
Apprenez-en plus sur les ressources de configuration utilisées par la CLI GKE Enterprise: