Prepare-se para configurar a API Gateway para o Cloud Service Mesh

Nesta página, descrevemos como instalar as definições de recursos personalizados necessárias para o gateway no seu cluster.

Limitações

  • Não é possível ter uma combinação de clusters gateway config-api e istio config-api na mesma frota.
  • A descoberta de serviços e o balanceamento de carga de vários clusters não são compatíveis com clusters da API de configuração gateway.
  • Se um cluster for integrado usando a flag --management automatic atual, ele começará a usar a API de configuração istio e não poderá mudar para a API gateway.
  • Somente FQDNs são aceitos. Nomes curtos não são aceitos.

Pré-requisitos

Como ponto de partida, este guia pressupõe que você já tenha criado um Google Cloud projeto e instalado o kubectl.

Antes de começar

  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. Gere uma entrada kubeconfig para o cluster:
    2. gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
      

    em que:

    • CLUSTER_NAME é o nome do cluster.
    • LOCATION é o local do cluster.
    • PROJECT_ID é o ID do projeto do cluster.

    Criar e registrar um cluster do GKE

    1. Crie um cluster do 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
      

      em que:

      • CLUSTER_NAME é o nome do cluster.
      • LOCATION é o local do cluster.
      • PROJECT_ID é o ID do projeto do cluster.
    2. Ative a federação de identidade da carga de trabalho para o GKE:

      gcloud container clusters update CLUSTER_NAME \
      --location LOCATION \
      --workload-pool=PROJECT_ID.svc.id.goog
      
    3. Execute o servidor de metadados do GKE no seu nó:

      gcloud container node-pools update default-pool \
      --cluster=CLUSTER_NAME \
      --location=LOCATION \
      --workload-metadata=GKE_METADATA
      
    4. Registre o cluster em uma frota:

      gcloud container hub memberships register CLUSTER_NAME \
      --gke-cluster LOCATION/CLUSTER_NAME \
      --project=PROJECT_ID
      
    5. Verifique se o cluster está registrado na frota:

      gcloud container hub memberships list --project=PROJECT_ID
      

      A saída é semelhante a:

      NAME            EXTERNAL_ID                             LOCATION
      my-cluster      91980bb9-593c-4b36-9170-96445c9edd39    us-west1
      

    Configurar permissões

    Os comandos a seguir concedem permissão a todos os usuários autenticados, mas é possível usar a federação de identidade da carga de trabalho para o GKE e conceder permissão apenas a contas selecionadas.

    1. Conceda o papel trafficdirector.client:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
          --role "roles/trafficdirector.client"
      
    2. Conceda o papel 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"
      

      em que PROJECT_NUMBER é o número do projeto.

    3. Conceda o papel 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"
      

      em que PROJECT_NUMBER é o número do projeto.

    Ativar o Cloud Service Mesh

    1. Ative o recurso de malha:

      gcloud container hub mesh enable --project PROJECT_ID
      
    2. Atualize a malha para usar a API Gateway:

      gcloud alpha container fleet mesh update \
      --config-api gateway \
      --memberships CLUSTER_NAME \
      --project PROJECT_ID
      
    3. Verifique a atualização descrevendo o status do recurso do Cloud Service Mesh:

      gcloud alpha container fleet mesh describe
      

    Instalar definições de recursos personalizados

    Instale a definição de recurso personalizado (CRD) do 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 -
    

    A saída é semelhante a:

    customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created
    

    A seguir