Ce guide explique comment installer Anthos Service Mesh 1.4.10-asm.18 sur un nouveau cluster GKE Google Cloud à l'aide de l'interface de ligne de commande (CLI) de GKE Enterprise avec les fonctionnalités suivantes activées:
- Fonctionnalités d'observabilité d'Anthos Service Mesh
- Fonctionnalités de sécurité Anthos Service Mesh, dont l'autorité de certification Anthos Service Mesh (Mesh CA)
- Fonctionnalités Istio compatibles
Actuellement, la CLI GKE Enterprise n'est pas compatible avec les installations sur un cluster GKE existant ou sur GKE sur VMware.
Avant de commencer
Ce guide suppose que vous disposez des éléments suivants :
- un projet Google Cloud ;
- un compte Cloud Billing.
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 9443. 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
Installer kpt
et la CLI Anthos
Vous utilisez kpt
pour installer la CLI GKE Enterprise. La commande kpt
vous permet également de télécharger, gérer et personnaliser les fichiers de configuration des ressources d'Anthos Service Mesh stockés dans GitHub.
Les fichiers de configuration contiennent des espaces réservés pour les informations spécifiques à votre projet Google Cloud et vos cluster GKE. Après avoir personnalisé les fichiers de configuration, vous pouvez les transférer vers votre propre dépôt GitHub ou vers un autre système de gestion de code source.
Authentifiez-vous avec Google Cloud CLI :
gcloud auth login
Obtenez votre ID de projet Google Cloud et créez une variable d'environnement pour celui-ci:
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}
Sélectionnez une zone ou une région et un type de machine pour le nouveau cluster. Le type de machine minimal requis par Anthos Service Mesh est n1-standard-4. Vous pouvez utiliser n'importe quelle version disponible.
Si vous allez créer un cluster à zone unique, exécutez la commande suivante pour obtenir la liste des zones GCP disponibles :
gcloud compute zones list
Si vous souhaitez créer un cluster régional, exécutez la commande suivante pour obtenir la liste des régions disponibles :
gcloud compute regions list
Pour obtenir une liste des types de machines :
gcloud compute machine-types list | more
Créez les variables d'environnement suivantes :
Définissez le nom du cluster :
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Le nom du cluster ne doit contenir que des caractères alphanumériques minuscules et "-". Il doit également commencer par une lettre et se terminer par un caractère alphanumérique, et ne pas dépasser 40 caractères.
Définissez le paramètre
CLUSTER_LOCATION
sur la zone ou la région de votre cluster :export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Installer la CLI GKE Enterprise et mettre à jour les composants Si vous utilisez Cloud Shell, ajoutez
sudo
aux commandes suivantes.gcloud components install kpt anthoscli alpha
gcloud components update --version 292.0.0
Vous pouvez également créer un répertoire pour le package Anthos Service Mesh et vous y déplacer à l'aide de
cd
.Téléchargez le package Anthos Service Mesh dans le répertoire de travail actuel :
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.4-asm .
Par défaut, la commande
kpt pkg get
renseigne la zone de calcul dans les fichiers de package afin qu'elle corresponde à votre configuration actuelle.Définissez les valeurs suivantes dans vos fichiers de configuration :
Définissez l'ID du projet :
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Définissez le nom du cluster :
kpt cfg set asm cluster-name ${CLUSTER_NAME}
Définissez la zone ou la région par défaut :
kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
(Facultatif) Modifiez la version disponible pour remplacer la valeur par défaut,
REGULAR
. Dans la commande suivante, remplacezYOUR_CHANNEL
parSTABLE
ouRAPID
.kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL
Pour obtenir une description de chaque canal, consultez la section Canaux disponibles.
Installer Anthos Service Mesh sur un nouveau cluster
Exécutez la commande suivante pour créer un cluster et installer Anthos Service Mesh à l'aide des fichiers de configuration Anthos Service Mesh que vous avez personnalisés :
anthoscli apply -f asm
Patientez jusqu'à la fin du déploiement :
kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
Résultat :
deployment.extensions/istio-galley condition met deployment.extensions/istio-ingressgateway condition met deployment.extensions/istio-pilot condition met deployment.extensions/istio-sidecar-injector condition met deployment.extensions/promsd condition met
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
Un résultat semblable aux lignes suivantes doit s'afficher :
NAME READY STATUS RESTARTS AGE istio-galley-5c65896ff7-m2pls 2/2 Running 0 18m istio-ingressgateway-587cd459f-q6hqt 2/2 Running 0 18m istio-nodeagent-74w69 1/1 Running 0 18m istio-nodeagent-7524w 1/1 Running 0 18m istio-nodeagent-7652w 1/1 Running 0 18m istio-nodeagent-7948w 1/1 Running 0 18m istio-pilot-9db77b99f-7wfb6 2/2 Running 0 18m istio-sidecar-injector-69c4d9f875-dt8rn 1/1 Running 0 18m promsd-55f464d964-lqs7w 2/2 Running 0 18m
Une instance de istio-nodeagent
doit s'afficher pour chaque nœud de votre cluster. Mesh CA, qui remplace le composant Istio Citadel OSS, crée les agents de nœuds permettant d'émettre des certificats mTLS pour les charges de travail exécutées dans votre maillage de services.
Vérifiez que Mesh CA fonctionne correctement :
kubectl get pods -n istio-system -l app=istio-nodeagent \
--output=jsonpath={.items..metadata.name} -o yaml | grep CA_ADDR -A 1
Résultat attendu : meshca.googleapis.com:443.
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.
Activer les règles de sécurité des pods
Pour une sécurité optimale sur votre maillage de services, nous vous recommandons d'activer les règles de sécurité des pods.
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.
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
Maintenant que vous avez un exemple en cours d'exécution, vous pouvez explorer 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'à cinq minutes.
Une fois l'exploration terminée, supprimez l'exemple Hipster :
kubectl delete -f hipster-demo