Preparativi per la configurazione dell'API Gateway per Cloud Service Mesh
In questa pagina viene descritto come installare le definizioni di risorse personalizzate richieste per il gateway nel tuo cluster.
Limitazioni
- Non è supportato un mix di cluster
gateway
config-api eistio
config-api nello stesso parco risorse. - Il bilanciamento del carico e il Service Discovery multi-cluster non sono supportati per i cluster
gateway
config-api. - Se viene eseguito l'onboarding di un cluster utilizzando il flag
--management automatic
esistente il cluster inizia a utilizzare l'API di configurazioneistio
e non può essere modificato all'APIgateway
. - Sono supportati solo i FQDN. 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
- 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.
- 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 località 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=standard
dove:
- CLUSTER_NAME è il nome del cluster
- LOCATION è la località del tuo cluster
- PROJECT_ID è l'ID progetto del cluster
Abilita la federazione delle identità per i carichi di lavoro per GKE:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
Esegui il server metadati GKE sul tuo nodo:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
Registra il cluster in un parco risorse:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Verifica che il cluster sia registrato nel parco risorse:
gcloud container hub memberships list --project=PROJECT_ID
L'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 la federazione delle identità per i carichi di lavoro per 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 del tuo 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 del progetto.
Attiva Cloud Service Mesh
Attiva la funzionalità mesh:
gcloud container hub mesh enable --project PROJECT_ID
Aggiorna il mesh per utilizzare l'API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Verifica 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
- Configurare un mesh di servizi sidecar Envoy su GKE
- Configurare un mesh di servizi gRPC proxyless su GKE