Installer Anthos Service Mesh sur un nouveau cluster à l'aide de la CLI GKE Enterprise

Ce guide explique comment installer Anthos Service Mesh 1.5.10-asm.2 sur un nouveau cluster GKE Google Cloud à l'aide de l'interface de ligne de commande (CLI) de GKE Enterprise.

L'installation active les fonctionnalités suivantes :

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.

Actuellement, la CLI GKE Enterprise n'est pas compatible avec les installations sur GKE sur VMware. Pour installer Anthos Service Mesh sur GKE sur VMware, consultez la page Installer Anthos Service Mesh sur site.

Avant de commencer

Ce guide suppose que vous disposez déjà des éléments suivants :

Avant de commencer l'installation :

Conditions requises

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

  1. Obtenez l'ID du projet dans lequel le cluster sera créé :

    gcloud

    gcloud projects list

    Console

    1. Dans la console Google Cloud, accédez à la page Tableau de bord :

      Accéder à la page "Tableau de bord"

    2. 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.

  2. Créez une variable d'environnement pour l'ID de projet :

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Définissez l'ID de projet par défaut pour Google Cloud CLI :

    gcloud config set project ${PROJECT_ID}
    
  4. Sélectionnez une zone ou une région pour le cluster.

    • 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
      
  5. 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
  6. Définissez la zone ou la région par défaut pour Google Cloud CLI.

    • Pour un cluster à zone unique, définissez la zone par défaut :

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Pour 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

  1. Vous pouvez créer un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh. Si vous envisagez de configurer plusieurs clusters, vous pouvez utiliser le nom du cluster comme nom de répertoire.

  2. Accédez au répertoire dans lequel vous souhaitez télécharger le package Anthos Service Mesh.

  3. 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.5-asm .
    
  4. Définissez le nom du cluster :

      kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}

  5. Vous pouvez éventuellement personnaliser les fichiers de configuration des ressources à l'aide de setters kpt. Par défaut, ces setters utilisent les valeurs par défaut pour gcloud config. Si vous définissez les valeurs gcloud config par défaut ou si vous souhaitez modifier les valeurs, exécutez les commande "setter" suivantes :

    • Définissez l'ID du projet :

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Définissez la zone ou la région par défaut :

      kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
  6. 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.

Définir des valeurs facultatives

Avec la CLI GKE Enterprise, vous pouvez également définir d'autres valeurs. Pour afficher la liste des setters disponibles, procédez comme suit :

kpt cfg list-setters asm/

Le résultat ressemble à ce qui suit :

          NAME                            VALUE                SET BY   DESCRIPTION   COUNT
anthos.servicemesh.hub                    your_anthos_hub                               1
anthos.servicemesh.tag                    your_anthos_tag                               1
gcloud.compute.location                   your_zone_or_region                           8
gcloud.compute.network                    default                                       1
gcloud.compute.subnetwork                 default                                       1
gcloud.container.cluster                  your_cluster_name                             9
gcloud.container.cluster.releaseChannel   REGULAR                                       1
gcloud.container.nodepool.max-nodes       4                                             1
gcloud.core.project                       your_project_ID      kpt                     21
gcloud.project.projectNumber              your_project_number  kpt                      4 

Par exemple, pour remplacer la version disponible de la version par défaut REGULAR, remplacez YOUR_CHANNEL par STABLE ou RAPID dans la commande suivante :

kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL

Pour obtenir une description de chaque canal, consultez la section Canaux disponibles.

Modifier le type de machine ou le nombre de nœuds

La CLI GKE Enterprise crée un cluster avec le nombre de nœuds et le type de machine requis par Anthos Service Mesh. Ces valeurs sont spécifiées dans le fichier nodepool.yaml. Vous pouvez modifier votre copie locale du fichier nodepool.yaml pour spécifier un autre type de machine tant qu'il comporte au moins quatre processeurs virtuels.

Vous pouvez augmenter le nombre de nœuds selon les besoins de votre système en utilisant la méthode "setter" suivante :

kpt cfg set asm gcloud.container.nodepool.max-nodes NUMBER_OF_NODES

Installer Anthos Service Mesh sur un nouveau cluster

La CLI GKE Enterprise active les options suivantes sur le cluster, qui sont requises par Anthos Service Mesh:

  • Elle ajoute un libellé mesh_id au cluster au format proj-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 créer un cluster et installer Anthos Service Mesh à l'aide des fichiers de configuration Anthos Service Mesh que vous avez précédemment personnalisés :

gcloud beta anthos apply asm

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 :

  1. 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
    
  2. Créez le compte de service :

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. 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
  4. 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"
  5. 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
  6. 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.

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

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.

  1. Dans Google Cloud Console, accédez à Anthos Service Mesh.

    Accéder à Anthos Service Mesh

  2. Sélectionnez le projet Google Cloud dans la liste déroulante de la barre de menu.

  3. 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 :

  1. Dans Google Cloud Console, accédez à la page Monitoring :

    Accéder à Monitoring

  2. 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.

  1. Téléchargez l'exemple :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. Activez l'injection side-car automatique :

    kubectl label namespace default istio-injection=enabled
    
  3. Déployez l'exemple sur le cluster :

    kubectl apply -f hipster-demo
    
  4. Recherchez l'adresse IP externe de votre application :

    kubectl get service frontend-external
    
  5. 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