Preparativi per la configurazione dell'API Gateway per Cloud Service Mesh
Questa pagina descrive come installare le definizioni di risorse personalizzate obbligatorie per il gateway nel 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 un cluster viene eseguito l'onboarding utilizzando il flag
--management automatic
esistente, inizia a utilizzare l'API di configurazioneistio
e non può passare 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.
Crea e registra un cluster GKE
gcloud
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
--workload-pool=PROJECT_ID.svc.id.goog
dove:
- CLUSTER_NAME è il nome del cluster
- LOCATION è la località del cluster
- PROJECT_ID è l'ID progetto del cluster
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic su add_box Crea.
Nella sezione Standard, fai clic su Configura.
Nella sezione Nozioni di base sul cluster, completa quanto segue:
- Inserisci il nome del cluster.
- Per Tipo di località, seleziona una regione Compute Engine per il tuo cluster.
Nel riquadro di navigazione, fai clic su default-pool nella sezione Pool di nodi e seleziona Sicurezza.
Nell'elenco Ambiti di accesso, seleziona Imposta l'accesso per ogni API e imposta Cloud Platform su Attivato.
Nel riquadro di navigazione, fai clic su Networking nella sezione Cluster.
Nell'elenco Cluster Networking, seleziona Abilita API Gateway.
Nel riquadro di navigazione, fai clic su Sicurezza nella sezione Cluster.
Nell'elenco Sicurezza, seleziona Abilita Workload Identity.
Fai clic su Crea.
Dopo aver creato il cluster,
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 fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Verifica che il cluster sia registrato nel parco risorse:
gcloud container fleet 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 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à della maglia:
gcloud container fleet 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
(Facoltativo) Impostare i nuovi abbonamenti del tuo parco per utilizzare l'API Gateway per impostazione predefinita
In alternativa, puoi creare impostazioni predefinite a livello di parco risorse per i nuovi cluster GKE registrati al parco risorse durante la creazione del cluster in modo che vengano configurati automaticamente con l'API Gateway.
Crea un file YAML che specifica l'utilizzo dell'API Gateway:
echo "configapi: gateway" > mesh.yaml
Aggiorna la mesh:
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yaml
Crea un cluster e registralo nel tuo parco risorse in un solo passaggio per utilizzare la configurazione predefinita:
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \
Abilita la federazione delle identità per i carichi di lavoro per GKE ed esegui il server metadati GKE sul tuo nodo.
Installare definizioni di risorse personalizzate
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 cluster
- PROJECT_ID è l'ID progetto del cluster
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