Preparati 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 gateway config-api e istio config-api nella stessa flotta.
  • Il bilanciamento del carico e il Service Discovery multicluster non sono supportati per i cluster config-api gateway.
  • Se un cluster viene caricato 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. 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 posizione del cluster
    • PROJECT_ID è l'ID progetto del tuo 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 posizione del cluster
      • PROJECT_ID è l'ID progetto del tuo cluster
    2. Abilita la federazione delle identità per i workload per GKE:

      gcloud container clusters update CLUSTER_NAME \
      --location LOCATION \
      --workload-pool=PROJECT_ID.svc.id.goog
      
    3. Esegui il server di metadati GKE sul 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 a determinati account.

    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 di 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 di progetto.

    Attiva Cloud Service Mesh

    1. Attiva la funzionalità Mesh:

      gcloud container hub mesh enable --project PROJECT_ID
      
    2. Aggiorna la 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