Preparar a configuração da 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
gatewayconfig-api eistioconfig-api na mesma frota. Verifique se a config-api está definida comogatewaypara todos os clusters da frota. Use o comandogcloud container fleet mesh describe --project FLEET_PROJECT_IDpara 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 do
gateway. - Se um cluster for integrado usando a flag
--management automaticatual, ele começará a usar a API de configuraçãoistioe não poderá mudar para a APIgateway. - Somente FQDNs são aceitos. Nomes abreviados 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 injetar novamente novas versões do proxy, reinicie as cargas de trabalho.
Pré-requisitos
Como ponto de partida, este guia pressupõe que você já criou um projeto do Google Cloud e instalou o kubectl.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
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
Acesse a página do Google Kubernetes Engine no console do Google Cloud .
Clique em add_box Criar.
Na seção Padrão, clique em Configurar.
Na seção Princípios básicos do cluster, conclua o seguinte:
- Insira o Nome do cluster.
- Em Tipo de local, selecione uma região do Compute Engine para o cluster.
No painel de navegação, clique em default-pool na seção Pools de nós e selecione Segurança.
Na lista Escopos de acesso, selecione Definir acesso para cada API e defina Cloud Platform como Ativado.
No painel de navegação, clique em Rede.
Na seção Balanceador de carga, entrada e gateway, selecione Ativar API Gateway.
No painel de navegação, clique em Configurações avançadas.
Na linha Identidade da carga de trabalho, verifique se Detalhes mostra Ativado. Se ele mostrar Desativado, clique em edit Editar configuração do recurso, selecione Ativar a Identidade da carga de trabalho e clique em Salvar.
Clique em Criar.
Depois que o cluster for criado,
Registre o cluster em uma frota:
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVerifique se o cluster está registrado na frota:
gcloud container fleet memberships list --project=PROJECT_IDA saída é semelhante a:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Configurar permissões
Observação: 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 GKE e conceder permissão apenas a contas selecionadas. Para detalhes sobre como funciona a Federação de Identidade da Carga de Trabalho para GKE, consulte Sobre a Federação de Identidade da Carga de Trabalho para GKE. Para configurar a Federação de Identidade da Carga de Trabalho para 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
Ative o recurso de malha:
gcloud container fleet mesh enable --project PROJECT_IDAtualize a malha para usar a API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDPara verificar a atualização, descreva 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.
Crie um arquivo YAML especificando o uso da API Gateway:
echo "configapi: gateway" > mesh.yamlAtualize a malha:
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yamlCrie 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 \Ative a federação de identidade da carga de trabalho para GKE e execute o servidor de metadados do GKE no nó.
Instalar definições de recursos personalizados
Gere uma entrada kubeconfig para seu 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 personalizada (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
- Configurar uma malha de serviço de arquivo secundário do Envoy no GKE
- Configurar uma malha de serviço gRPC sem proxy no GKE