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. Verifique se a config-api está definida como gateway para todos os clusters na sua frota. Use o comando gcloud container fleet mesh describe --project FLEET_PROJECT_ID para ver o que você configurou para sua 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.

Considerações sobre o gerenciamento do plano de dados

Para novos pods, o Google gerencia qual versão do proxy é injetada. O plano de dados gerenciado depende do canal de lançamento do Google Kubernetes Engine (GKE) para determinar a versão do proxy.

Para pods atuais, o gerenciamento de proxy é feito de forma passiva, determinado pelo ciclo de vida natural dos pods no cluster. Para acionar a atualização e reinjetar novas versões do proxy, reinicie as cargas de trabalho.

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

  8. Criar e registrar um cluster do GKE

    gcloud

    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 \
    --workload-pool=PROJECT_ID.svc.id.goog \
    --workload-metadata=GKE_METADATA
    

    em que:

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

    Console

    1. Acesse a página do Google Kubernetes Engine no Google Cloud console.

      Acessar o Google Kubernetes Engine

    2. Clique em Criar.

    3. Na seção Padrão, clique em Configurar.

    4. Na seção Princípios básicos do cluster, conclua o seguinte:

      1. Insira o Nome do cluster.
      2. Em Tipo de local, selecione uma região do Compute Engine para o cluster.
    5. No painel de navegação, clique em default-pool na seção Pools de nós e selecione Segurança.

    6. Na lista Escopos de acesso, selecione Definir acesso para cada API e defina Cloud Platform como Ativado.

    7. No painel de navegação, clique em Rede na seção Cluster.

    8. Na lista Rede do cluster, selecione Ativar API Gateway.

    9. No painel de navegação, clique em Segurança na seção Cluster.

    10. Na lista Segurança, selecione Ativar Identidade da carga de trabalho.

    11. Clique em Criar.

    Depois que o cluster for criado,

    1. Registre o cluster em uma frota:

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

      gcloud container fleet 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. Para detalhes sobre como funciona a federação de identidade da carga de trabalho para o GKE, consulte Sobre a federação de identidade da carga de trabalho para o GKE. Para configurar a federação de identidade da carga de trabalho para o GKE, consulte Autenticar nas APIs do Google Cloud em cargas de trabalho do GKE.

    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"
    

    Ativar o Cloud Service Mesh

    1. Ative o recurso de malha:

      gcloud container fleet 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 \
      --project PROJECT_ID
      

    Definir as novas associações da frota para usar a API Gateway por padrão (opcional)

    Como alternativa, é possível criar configurações padrão no nível da frota para que novos clusters do GKE registrados na frota durante a criação sejam configurados automaticamente com a API Gateway.

    1. Crie um arquivo YAML especificando o uso da API Gateway:

      echo "configapi: gateway" > mesh.yaml
      
    2. Atualize a malha:

      gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
          --fleet-default-member-config mesh.yaml
      
    3. Crie um cluster e registre-o na sua frota em uma etapa para usar a configuração padrão:

      gcloud container clusters create CLUSTER_NAME \
          --project PROJECT_ID \
          --fleet-project FLEET_PROJECT_ID \
          --location=LOCATION \
      
    4. Ative a federação de identidade da carga de trabalho para o GKE e execute o servidor de metadados do GKE no nó.

    Instalar definições de recursos personalizados

    Gere uma entrada kubeconfig para o cluster:

    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.

    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