Preparati a configurare l'API Gateway per Cloud Service Mesh
Questa pagina descrive come installare le definizioni di risorse personalizzate richieste per il gateway nel cluster.
Limitazioni
- La presenza di un mix di cluster
gatewayconfig-api eistioconfig-api nella stessa flotta non è supportata. - Il bilanciamento del carico e il Service Discovery multicluster non sono supportati per i cluster
gatewayconfig-api. - Se un cluster viene caricato utilizzando il flag
--management automaticesistente, il cluster inizia a utilizzare l'API di configurazioneistioe non può passare all'APIgateway. - Sono supportati solo i nomi di dominio completi. I nomi brevi non sono supportati.
Prerequisiti
Come punto di partenza, questa guida presuppone che tu abbia già
creato un Google Cloud progetto e
installato kubectl.
Prima di iniziare
- 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.
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 role
(
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. -
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 role
(
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. - Genera una voce kubeconfig per il tuo cluster:
- CLUSTER_NAME è il nome del tuo cluster
- LOCATION è la posizione del cluster
- PROJECT_ID è l'ID progetto del tuo cluster
Crea 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=standarddove:
- CLUSTER_NAME è il nome del tuo cluster
- LOCATION è la posizione del cluster
- PROJECT_ID è l'ID progetto del tuo cluster
Abilita la federazione delle identità per i workload per GKE:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.googEsegui il server metadati GKE sul nodo:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATARegistra il cluster in un parco risorse:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVerifica che il cluster sia registrato nel parco risorse:
gcloud container hub memberships list --project=PROJECT_IDL'output è simile al seguente:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1Concedi il ruolo
trafficdirector.client:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"Concedi il ruolo
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"dove PROJECT_NUMBER è il numero di progetto.
Concedi il ruolo
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"dove PROJECT_NUMBER è il numero di progetto.
Attiva la funzionalità Mesh:
gcloud container hub mesh enable --project PROJECT_IDAggiorna la mesh per utilizzare l'API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDVerifica l'aggiornamento descrivendo lo stato della risorsa Cloud Service Mesh:
gcloud alpha container fleet mesh describe- Configurare una mesh di servizi sidecar Envoy su GKE
- Configura una mesh di servizi gRPC senza proxy su GKE
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
dove:
Crea e registra un cluster GKE
Configurare le autorizzazioni
Tieni presente che i seguenti comandi concedono l'autorizzazione a tutti gli utenti autenticati, ma puoi utilizzare Workload Identity Federation for GKE per concedere l'autorizzazione solo ad account selezionati.
Attiva Cloud Service Mesh
Installare definizioni di risorse personalizzate
Installa la definizione di risorsa personalizzata (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 -
L'output è simile al seguente:
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created