Configurer Anthos Service Mesh géré avec API Fleet

Cette page vous explique comment utiliser l'API de la fonctionnalité Parc pour configurer Anthos Service Mesh géré avec la gestion automatique du plan de contrôle.

Lorsque vous activez la gestion automatique du plan de contrôle sur un cluster GKE, Google applique la configuration recommandée d'Anthos Service Mesh géré en fonction de la version disponible de votre cluster et la maintient à jour.

Utilisez ce chemin d'intégration bêta si vous souhaitez :

  • utiliser gcloud pour configurer Anthos Service Mesh géré à l'aide des API Google Cloud et d'IAM ;
  • configurer Anthos Service Mesh à l'aide des mêmes API que les autres fonctionnalités de parc ;
  • obtenir automatiquement la configuration recommandée d'Anthos Service Mesh pour chacun de vos clusters.

Si vous souhaitez bénéficier de l'expérience d'intégration en disponiblité générale à l'aide de l'outil asmcli, consultez la page Configurer Anthos Service Mesh géré.

Prérequis

Pour commencer, ce guide suppose que vous avez :

Exigences

  • Un ou plusieurs clusters avec une version compatible de GKE, dans l'une des régions compatibles.
  • Les clusters doivent être enregistrés sur un parc. Cette exigence est incluse dans les instructions ou peut être effectuée séparément avant l'installation.
  • La fonctionnalité Service Mesh doit être activée sur votre projet. Cette exigence est incluse dans les instructions ou peut être effectuée séparément.
  • Tous vos clusters GKE doivent se trouver dans un seul projet, sur un même réseau.

Limites

Nous vous recommandons de consulter la liste des fonctionnalités compatibles et limitations d'Anthos Service Mesh géré. Observez en particulier les points suivants :

  • L'API IstioOperator n'est pas compatible, car son objectif principal est de contrôler les composants au sein du cluster.

  • Chaque cluster du parc exécutant Anthos Service Mesh doit utiliser Mesh CA.

  • Le plan de données géré est disponible dans les versions disponibles Standard et Rapide.

  • Les fonctionnalités réellement disponibles pour Anthos Service Mesh géré dépendent de la version disponible. Pour en savoir plus, consultez la liste complète des fonctionnalités compatibles et limitations d'Anthos Service Mesh.

  • Au cours du processus de provisionnement d'un plan de contrôle géré par Google, les CRD d'Istio correspondant au canal sélectionné sont installées dans le cluster spécifié. Si des CRD d'Istio sont présentes dans le cluster, elles seront écrasées.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  6. Activez les API requises :

      gcloud services enable mesh.googleapis.com \
          --project=PROJECT_ID
    

L'activation de mesh.googleapis.com active les API suivantes :

API
meshconfig.googleapis.com
meshca.googleapis.com
container.googleapis.com
gkehub.googleapis.com
monitoring.googleapis.com
stackdriver.googleapis.com
opsconfigmonitoring.googleapis.com
iam.googleapis.com
iamcredentials.googleapis.com
bigquery.googleapis.com
bigquerystorage.googleapis.com
compute.googleapis.com
oslogin.googleapis.com
containerregistry.googleapis.com
pubsub.googleapis.com
storage-api.googleapis.com
gkeconnect.googleapis.com
multiclustermetering.googleapis.com
logging.googleapis.com
connectgateway.googleapis.com

Configurer gcloud

Procédez comme suit même si vous utilisez Cloud Shell.

  1. Authentifiez-vous avec Google Cloud CLI :

    gcloud auth login --project PROJECT_ID
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Si vous installez Anthos Service Mesh sur un cluster GKE, configurez kubectl pour qu'il pointe vers le cluster.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --zone CLUSTER_LOCATION \
         --project PROJECT_ID
    

Activer Anthos Service Mesh

Activez Anthos Service Mesh dans le parc. Notez que si vous envisagez d'enregistrer plusieurs clusters, l'activation d'Anthos Service Mesh se produit au niveau du projet. Vous n'avez donc besoin d'exécuter cette commande qu'une seule fois.

gcloud container fleet mesh enable --project PROJECT_ID

où :

  • PROJECT_ID est l'ID de votre projet actuel.

Enregistrer des clusters dans un parc

  1. Enregistrez un cluster GKE à l'aide de Workload Identity dans un parc :

    gcloud container fleet memberships register MEMBERSHIP_NAME \
         --gke-cluster=GKE_CLUSTER \
         --enable-workload-identity \
         --project PROJECT_ID
    

    où :

    • MEMBERSHIP_NAME est le nom d'appartenance que vous choisissez pour représenter de manière unique le cluster enregistré dans le parc.

    • GKE_CLUSTER est le location/name du cluster GKE du projet en cours. L'emplacement peut être une zone ou une région, par exemple : us-central1-a/my-gke-cluster.

  2. Vérifiez que votre cluster est enregistré :

    gcloud container fleet memberships list --project PROJECT_ID
    

Configurer chaque cluster

Procédez comme suit pour configurer Anthos Service Mesh géré pour chaque cluster de votre maillage.

Appliquer le libellé mesh_id

Appliquez le libellé mesh_id à votre cluster GKE :

  gcloud container clusters update CLUSTER_NAME --zone ZONE\
      --update-labels mesh_id=proj-PROJECT_NUMBER

où :

  • CLUSTER_NAME est le nom du cluster.
  • ZONE est la zone de calcul de votre cluster.
  • PROJECT_NUMBER est l'identifiant unique de votre projet.

Activer la gestion automatique du plan de contrôle

Exécutez la commande suivante pour activer la gestion automatique du plan de contrôle :

  gcloud container fleet mesh update \
     --control-plane automatic \
     --memberships MEMBERSHIP_NAME \
     --project PROJECT_ID

Notez qu'une passerelle d'entrée n'est pas déployée automatiquement avec le plan de contrôle. Dissocier le déploiement de la passerelle d'entrée et du plan de contrôle vous permet de gérer plus facilement vos passerelles dans un environnement de production. Si le cluster nécessite une passerelle d'entrée ou une passerelle de sortie, consultez la section Déployer des passerelles. Pour activer d'autres fonctionnalités facultatives, consultez la section Activer les fonctionnalités facultatives sur le service Anthos Service Mesh géré.

Vérifier que le plan de contrôle a été provisionné

  1. Après quelques minutes, vérifiez que l'état du plan de contrôle est ACTIVE :

    gcloud container fleet mesh describe --project PROJECT_ID
    

    Le résultat est semblable à :

    ...
    membershipSpecs:
      projects/746296320118/locations/global/memberships/demo-cluster-1:
        mesh:
          controlPlane: AUTOMATIC
    membershipStates:
      projects/746296320118/locations/global/memberships/demo-cluster-1:
        servicemesh:
          controlPlaneManagement:
            details:
            - code: REVISION_READY
              details: 'Ready: asm-managed'
            state: ACTIVE
        state:
          code: OK
          description: 'Revision(s) ready for use: asm-managed.'
    ...
    

    Notez le libellé de révision dans le champ description:, par exemple asm-managed dans le résultat fourni. Vous devez définir ce libellé avant de déployer des applications.

Appliquer le plan de données géré par Google (facultatif)

Si vous souhaitez que les mises à niveau des proxys soient gérées par Google, activez le plan de données géré par Google. Une fois activé, les proxys side-car et les passerelles injectées sont automatiquement mis à niveau conjointement avec le plan de contrôle géré.

Notez que le plan de données géré par Google nécessite le plug-in CNI (Container Network Interface) d'Istio, qui est désormais activé par défaut lorsque vous déployez le plan de contrôle géré par Google.

Dans l'aperçu des fonctionnalités, le plan de données géré met à niveau les proxys en expulsant les pods qui exécutent des versions plus anciennes du proxy. Les évictions sont effectuées de manière ordonnée en respectant le budget d'interruption des pods et en contrôlant le rythme des modifications.

Cette version bêta du plan de données géré ne gère pas les éléments suivants :

  • Pods non injectés.
  • Pods injectés manuellement à l'aide de istioctl kube-inject.
  • Tâches
  • Ensembles avec état
  • DaemonSet

Le plan de données géré est disponible dans les versions disponibles rapide et standard.

Pour activer le plan de données géré par Google, procédez comme suit :

  1. Activez la gestion du plan de données :

    kubectl annotate --overwrite namespace NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

    Vous pouvez également activer le plan de données géré par Google pour un pod spécifique en lui attribuant la même annotation. Lorsque vous annotez un pod spécifique, ce pod utilise le proxy side-car géré par Google, et le reste des charges de travail utilise les proxys side-car non gérés.

  2. Répétez l'étape précédente pour chaque espace de noms sur lequel vous souhaitez un plan de données géré.

    Il peut s'écouler jusqu'à dix minutes avant que le contrôleur de plan de données ne soit prêt à gérer les proxies du cluster. Exécutez la commande suivante pour vérifier l'état :

    if kubectl get dataplanecontrols -o custom-columns=REV:.spec.revision,STATUS:.status.state | grep rapid | grep -v none > /dev/null; then echo "Managed Data Plane is ready."; else echo "Managed Data Plane is NOT ready."; fi
    

    Lorsque le contrôleur de plan de données est prêt, la commande génère le résultat suivant : Managed Data Plane is ready.

Si l'état du contrôleur de plan de données n'est pas prêt après plus de 10 minutes d'attente, consultez la section État du plan de données géré pour obtenir des conseils de dépannage.

Si vous souhaitez désactiver le plan de données géré par Google et revenir à la gestion des proxys side-car vous-même, modifiez l'annotation :

kubectl annotate --overwrite namespace NAMESPACE \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Configurer la découverte des points de terminaison (uniquement pour les installations multiclusters)

Avant de continuer, vous devez avoir déjà configuré Anthos Service Mesh géré sur chaque cluster, comme décrit dans les étapes précédentes. Il n'est pas nécessaire d'indiquer qu'un cluster est un cluster principal, car il s'agit du comportement par défaut. Vous devez terminer les étapes Définir les variables de projet et de cluster et Créer une règle de pare-feu avant de configurer la découverte des points de terminaison.

Clusters publics

Configurer la découverte des points de terminaison entre les clusters publics

Si vous travaillez sur des clusters publics (clusters non privés), vous pouvez utiliser l'une des méthodes suivantes : Configurer la découverte des points de terminaison entre les clusters publics ou plus simplement Activer la découverte des points de terminaison entre les clusters publics.

Clusters privés

Configurer la recherche de points de terminaison entre les clusters privés

Lorsque vous utilisez des clusters privés GKE, vous devez configurer le point de terminaison du plan de contrôle pour qu'il soit le point de terminaison public au lieu du point de terminaison privé. Reportez-vous à la section Configurer la recherche de points de terminaison entre les clusters privés.

Pour obtenir un exemple d'application comportant deux clusters, consultez la page Exemple de service HelloWorld.

Déployer des applications

Pour déployer des applications, utilisez le libellé correspondant au canal que vous avez configuré lors de l'installation, ou bien istio-injection=enabled si vous utilisez des libellés d'injection par défaut.

Libellé d'injection par défaut

kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev- --overwrite

Libellé de révision

Avant de déployer des applications, supprimez les anciens libellés istio-injection de leurs espaces de noms et définissez à la place le libellé istio.io/rev=asm-managed-rapid.

Il s'agit du libellé de révision que vous avez identifié lors de la validation du plan de contrôle. Si vous utilisez un autre libellé de révision, cliquez sur asm-managed-rapid et remplacez-le par le libellé applicable : asm-managed pour la version standard ou asm-managed-stable pour la version stable.

Le libellé de révision correspond à une version disponible :

Libellé de révision Canal
asm-managed Standard
asm-managed-rapid Version précoce
asm-managed-stable Stable
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite

À ce stade, vous avez configuré avec succès le plan de contrôle géré d'Anthos Service Mesh. Si vous avez également appliqué le plan de données géré, redémarrez vos charges de travail. Si ce n'est pas le cas, effectuez une mise à jour progressive. Vous êtes maintenant prêt à déployer vos applications, ou vous pouvez déployer l'exemple d'application Bookinfo.

Si vous déployez une application dans une configuration multi-cluster, répliquez la configuration de Kubernetes et du plan de contrôle dans tous les clusters, sauf si vous envisagez de limiter cette configuration à un sous-ensemble de clusters. La configuration appliquée à un cluster particulier est la source de vérité de ce cluster. En outre, si le cluster exécute également Anthos Service Mesh avec Mesh CA dans d'autres espaces de noms, vérifiez que l'application peut communiquer avec les autres applications contrôlées par le plan de contrôle du cluster.

Désactiver la gestion automatique du plan de contrôle

La désactivation de la gestion automatique du plan de contrôle n'annule pas le provisionnement de certaines ressources. Toutes les ressources sont conservées dans le cluster pour que vous puissiez les gérer ou les supprimer manuellement. Pour procéder à la désactivation complète, consultez la page Désinstaller Anthos Service Mesh.

  1. Exécutez la commande suivante pour désactiver la gestion automatique du plan de contrôle :

    gcloud container fleet mesh update \
       --control-plane manual \
       --memberships MEMBERSHIP_NAME \
       --project PROJECT_ID
    
  2. Après quelques minutes, vérifiez que l'état de la gestion automatique du plan de contrôle est DISABLED :

    gcloud container fleet mesh describe --project PROJECT_ID
    

    Le résultat est semblable à :

    ...
    membershipSpecs:
      projects/projectid/locations/global/memberships/cluster-name:
        mesh:
          controlPlane: MANUAL
    membershipStates:
      projects/projectid/locations/global/memberships/cluster-name:
        servicemesh:
          controlPlaneManagement:
            state: DISABLED
        state:
          code: OK
          description: 'Revision(s) ready for use: asm-managed.'
    ...
    

    Pour désinstaller complètement Anthos Service Mesh, consultez la page Désinstaller Anthos Service Mesh.

Étape suivante