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

Esta página descreve como instalar as definições de recursos personalizados necessárias para o gateway no cluster.

Limitações

  • Não é possível ter uma mistura de clusters de config-api gateway e istio na mesma frota.
  • A descoberta de serviços de vários clusters e o balanceamento de carga não são compatíveis com clusters de config-api gateway.
  • Se um cluster for integrado usando a sinalização --management automatic atual o cluster começa a usar a API de configuração istio e não pode 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á criou um projeto do Google Cloud e kubectl instalado.

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. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  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. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  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 seu 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 você pode usar a federação de identidade da carga de trabalho para GKE para 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 a Malha de Serviço do Cloud

  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, na sigla em inglês) 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