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 etistio
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 configurationistio
et ne peut pas passer à l'APIgateway
. - 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
- Générez une entrée kubeconfig pour votre cluster :
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
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.
Activez Workload Identity Federation for GKE :
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
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
Enregistrez votre cluster dans un parc :
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
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.
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"
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"
où PROJECT_NUMBER est le numéro de votre projet.
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"
où PROJECT_NUMBER est votre numéro de projet.
Activer Cloud Service Mesh
Activez la fonctionnalité de réseau maillé:
gcloud container hub mesh enable --project PROJECT_ID
Mettez à jour le maillage pour utiliser l'API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Vérifiez la mise à jour en décrivant l'état de la ressource Cloud Service Mesh :
gcloud alpha container fleet mesh describe
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
- Configurer un maillage de services side-car Envoy sur GKE
- Configurer un maillage de services gRPC sans proxy sur GKE