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
- L'utilizzo di un mix di cluster config-api
gatewaye config-apiistionella stessa flotta non è supportato. - Il bilanciamento del carico e il Service Discovery multi-cluster 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 progetto Google Cloud e installato kubectl.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
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:
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
dove:
- CLUSTER_NAME è il nome del cluster
- LOCATION è la posizione del tuo cluster
- PROJECT_ID è l'ID progetto del tuo cluster
Crea e registra un cluster GKE
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 cluster
- LOCATION è la posizione del tuo cluster
- PROJECT_ID è l'ID progetto del tuo cluster
Abilita Workload Identity Federation 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-west1
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.
Concedi 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 Cloud Service Mesh
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
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
Passaggi successivi
- Configura un mesh di servizi sidecar Envoy su GKE
- Configura un mesh di servizi gRPC senza proxy su GKE