Préparer la configuration de l'API Gateway pour Cloud Service Mesh

Cette page explique comment installer les définitions de ressources personnalisées requises pour la passerelle dans votre cluster.

Limites

  • Il n'est pas possible de combiner des clusters gateway config-api et istio config-api dans le même parc.
  • La détection de services et l'équilibrage de charge multiclusters ne sont pas compatibles avec les clusters gateway config-api.
  • Si un cluster est intégré à l'aide du flag --management automatic existant, il commence à utiliser l'API de configuration istio et ne peut pas passer à l'API gateway.
  • Seuls les FQDN sont acceptés. Les noms courts ne sont pas acceptés.

Prérequis

Pour commencer, ce guide part du principe que vous avez déjà créé un projet Google Cloud et a installé kubectl.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  1. Générez une entrée kubeconfig pour votre cluster :
  2. gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
    

où :

  • CLUSTER_NAME est le nom de votre cluster.
  • LOCATION est l'emplacement de votre cluster.
  • PROJECT_ID est l'ID de projet de votre cluster.

Créer et enregistrer un cluster GKE

  1. Créez un cluster GKE :

    gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --enable-ip-alias \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --release-channel=regular \
    --project=PROJECT_ID \
    --gateway-api=standard
    

    où :

    • CLUSTER_NAME est le nom de votre cluster.
    • LOCATION est l'emplacement de votre cluster.
    • PROJECT_ID est l'ID de projet de votre cluster.
  2. Activez la fédération d'identité de charge de travail pour GKE:

    gcloud container clusters update CLUSTER_NAME \
    --location LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog
    
  3. Exécutez le serveur de métadonnées GKE sur votre nœud:

    gcloud container node-pools update default-pool \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --workload-metadata=GKE_METADATA
    
  4. Enregistrez votre cluster dans un parc :

    gcloud container hub memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  5. Vérifiez que le cluster est enregistré dans le parc :

    gcloud container hub memberships list --project=PROJECT_ID
    

    Le résultat est semblable à :

    NAME            EXTERNAL_ID                             LOCATION
    my-cluster      91980bb9-593c-4b36-9170-96445c9edd39    us-west1
    

Configurer les autorisations

Notez que les commandes suivantes accordent une autorisation à tous les utilisateurs authentifiés, Toutefois, vous pouvez utiliser la fédération d'identité de charge de travail pour GKE afin de n'accorder l'autorisation qu'à certains comptes.

  1. Attribuez le rôle trafficdirector.client :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
        --role "roles/trafficdirector.client"
    
  2. Attribuez le rôle container.developer :

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role "roles/container.developer"
    

    PROJECT_NUMBER est votre numéro de projet.

  3. Attribuez le rôle compute.networkAdmin :

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role "roles/compute.networkAdmin"
    

    PROJECT_NUMBER est le numéro de votre projet.

Activer Cloud Service Mesh

  1. Activez la fonctionnalité de réseau maillé:

    gcloud container hub mesh enable --project PROJECT_ID
    
  2. Mettez à jour le réseau maillé pour qu'il utilise l'API Gateway :

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. Vérifiez la mise à jour en décrivant l'état de la ressource Cloud Service Mesh:

    gcloud alpha container fleet mesh describe
    

Définir les nouvelles adhésions de votre parc pour qu'elles utilisent l'API Gateway par défaut (facultatif)

Vous pouvez également créer des paramètres par défaut au niveau du parc pour que les nouveaux clusters GKE enregistrés dans le parc lors de leur création soient automatiquement configurés avec l'API Gateway.

  1. Créez un fichier YAML spécifiant l'utilisation de l'API Gateway :

    echo "configapi:gateway" > mesh.yaml
    
  2. Mettez à jour votre réseau maillé :

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. Créez un cluster et enregistrez-le dans votre parc en une seule étape pour utiliser la configuration par défaut:

    gcloud container clusters create CLUSTER_NAME \
        --project PROJECT_ID \
        --fleet-project FLEET_PROJECT_ID \
        --location=LOCATION \
    
  4. Activez la fédération d'identité de charge de travail pour GKE et exécutez le serveur de métadonnées GKE sur votre nœud.

Installer des définitions de ressources personnalisées

Installez la définition de ressource personnalisée (CRD) GRPCRoute :

curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -

Le résultat est semblable à :

customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created

Étape suivante