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

  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 cluster
  • LOCATION è la località del 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 cluster
    • LOCATION è la località del cluster
    • PROJECT_ID è l'ID progetto del 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 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 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 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
    

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