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 e istio 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 configurazione istio e non può passare all'API gateway.
  • 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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the 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 \
--workload-metadata=GKE_METADATA

dove:

  • CLUSTER_NAME è il nome del cluster
  • LOCATION è la località del cluster
  • PROJECT_ID è l'ID progetto del cluster

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Nella sezione Standard, fai clic su Configura.

  4. Nella sezione Nozioni di base sul cluster, completa quanto segue:

    1. Inserisci il nome del cluster.
    2. Per Tipo di località, seleziona una regione Compute Engine per il tuo cluster.
  5. Nel riquadro di navigazione, fai clic su default-pool nella sezione Pool di nodi e seleziona Sicurezza.

  6. Nell'elenco Ambiti di accesso, seleziona Imposta l'accesso per ogni API e imposta Cloud Platform su Attivato.

  7. Nel riquadro di navigazione, fai clic su Networking nella sezione Cluster.

  8. Nell'elenco Cluster Networking, seleziona Abilita API Gateway.

  9. Nel riquadro di navigazione, fai clic su Sicurezza nella sezione Cluster.

  10. Nell'elenco Sicurezza, seleziona Abilita Workload Identity.

  11. Fai clic su Crea.

Dopo aver creato il cluster,

  1. Registra il cluster in un parco risorse:

    gcloud container fleet memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  2. 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.

  1. 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"
    
  2. 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.

  3. 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

  1. Attiva la funzionalità della maglia:

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. Aggiorna il mesh per utilizzare l'API Gateway:

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. 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.

  1. Crea un file YAML che specifica l'utilizzo dell'API Gateway:

    echo "configapi: gateway" > mesh.yaml
    
  2. Aggiorna la mesh:

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. 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 \
    
  4. 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