Preparati a configurare l'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 e istio config-api nello stesso parco risorse.
  • Il bilanciamento del carico e il rilevamento dei servizi multi-cluster non sono supportati per gateway cluster config-api.
  • Se viene eseguito l'onboarding di un cluster utilizzando il flag --management automatic esistente il cluster inizia a utilizzare l'API di configurazione istio e non può essere modificato all'API gateway.
  • Sono supportati solo i FQDN. I nomi brevi non sono supportati.

Prerequisiti

Per iniziare, questa guida presuppone che tu abbia già ha creato un progetto Google Cloud e ha 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

  1. Genera una voce kubeconfig per il tuo cluster:
  2. gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
    

dove:

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

Crea e registra un cluster GKE

  1. 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 tuo cluster
    • LOCATION è la località del tuo cluster
    • PROJECT_ID è l'ID progetto del tuo cluster
  2. Abilita Workload Identity Federation for GKE:

    gcloud container clusters update CLUSTER_NAME \
    --location LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog
    
  3. Esegui il server metadati GKE sul tuo nodo:

    gcloud container node-pools update default-pool \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --workload-metadata=GKE_METADATA
    
  4. Registra il tuo cluster in un parco risorse:

    gcloud container hub memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  5. Verifica che il cluster sia registrato nel parco risorse:

    gcloud container hub memberships list --project=PROJECT_ID
    

    L'output è simile a questo:

    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 tuo 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 hub 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) Configura le nuove appartenenze del parco risorse 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 rete 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

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