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
gatewayconfig-api etistioconfig-api dans le même parc. - La détection de services et l'équilibrage de charge multiclusters ne sont pas compatibles avec les clusters
gatewayconfig-api. - Si un cluster est intégré à l'aide de l'indicateur
--management automaticexistant, il commence à utiliser l'API de configurationistioet 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 suppose que vous avez déjà créé un projet Google Cloud et installé kubectl.
Avant de commencer
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Générez une entrée kubeconfig pour votre cluster :
- 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é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=standardoù :
- 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.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_METADATAEnregistrez votre cluster dans un parc :
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVérifiez que le cluster est enregistré dans le parc :
gcloud container hub memberships list --project=PROJECT_IDLe résultat est semblable à :
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1Attribuez le rôle
trafficdirector.client:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.:/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." \ --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." \ --role "roles/compute.networkAdmin"où PROJECT_NUMBER est le numéro de votre projet.
Activez la fonctionnalité de maillage :
gcloud container hub mesh enable --project PROJECT_IDMettez à jour le maillage pour utiliser l'API Gateway :
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDVérifiez la mise à jour en décrivant l'état de la ressource Cloud Service Mesh :
gcloud alpha container fleet mesh describe- Configurer un maillage de services side-car Envoy sur GKE
- Configurer un maillage de services gRPC sans proxy sur GKE
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
où :
Créer et enregistrer un cluster GKE
Configurer les autorisations
Notez que les commandes suivantes accordent des autorisations à tous les utilisateurs authentifiés, mais vous pouvez utiliser la fédération d'identité de charge de travail pour GKE afin d'accorder des autorisations uniquement à certains comptes.
Activer Cloud Service Mesh
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