Prepararsi 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

  • Non è supportata la presenza di un mix di cluster con API di configurazione gateway e istio nello stesso parco risorse.
  • Service Discovery multi-cluster e il bilanciamento del carico non sono supportati per i cluster gateway config-api.
  • Se un cluster viene eseguito l'onboarding utilizzando il flag --management automatic esistente, il cluster inizia a utilizzare l'API di configurazione istio e non può passare all'API gateway.
  • 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

  1. Accedi al tuo Google Cloud account. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Creare e registrare 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 Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Nella sezione Standard, fai clic su Configura.

  4. Nella sezione Impostazioni di base del cluster, completa quanto segue:

    1. Inserisci il Nome del cluster.
    2. Per Tipo di località, seleziona una regione di Compute Engine per il 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 Google Cloud su Attivato.

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

  8. Nell'elenco Networking cluster, 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 Workload Identity Federation for GKE per concedere l'autorizzazione solo agli account selezionati. Per informazioni dettagliate sul funzionamento di Workload Identity Federation for GKE, consulta Informazioni su Workload Identity Federation for GKE. Per configurare Workload Identity Federation for GKE, consulta Eseguire l'autenticazione alle Google Cloud API dai workload GKE.

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"

Attivare Cloud Service Mesh

  1. Attiva la funzionalità mesh:

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. Aggiorna il mesh in modo che utilizzi 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
    

Impostare le nuove appartenenze al parco risorse in modo che utilizzino l'API Gateway per impostazione predefinita (facoltativo)

In alternativa, puoi creare impostazioni predefinite a livello di parco risorse per i nuovi cluster GKE registrati nel parco risorse durante la creazione del cluster in modo che vengano configurati automaticamente con l'API Gateway.

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

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

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. Crea un cluster e registralo nel parco risorse in un unico passaggio per utilizzare la configurazione predefinita:

    gcloud container clusters create CLUSTER_NAME \
        --project PROJECT_ID \
        --fleet-project FLEET_PROJECT_ID \
        --location=LOCATION \
    
  4. Abilita Workload Identity Federation for GKE ed esegui il server di metadati GKE sul nodo.

Installare le definizioni di risorse personalizzate

Genera una voce kubeconfig per il 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