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 eistio
config-api na mesma frota. Verifique se a config-api está definida comogateway
para todos os clusters na sua frota. Use o comandogcloud 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çãoistio
e não poderá mudar para a APIgateway
. - 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
- CLUSTER_NAME é o nome do cluster.
- LOCATION é o local do cluster.
- PROJECT_ID é o ID do projeto do cluster.
Acesse a página do Google Kubernetes Engine no Google Cloud console.
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 Cluster.
Na lista Rede do cluster, selecione Ativar API Gateway.
No painel de navegação, clique em Segurança na seção Cluster.
Na lista Segurança, selecione Ativar Identidade da carga de trabalho.
Clique em Criar.
Registre o cluster em uma frota:
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
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
Ative o recurso de malha:
gcloud container fleet mesh enable --project PROJECT_ID
Atualize a malha para usar a API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Verifique a atualização descrevendo o status do recurso do Cloud Service Mesh:
gcloud alpha container fleet mesh describe \ --project PROJECT_ID
Crie um arquivo YAML especificando o uso da API Gateway:
echo "configapi: gateway" > mesh.yaml
Atualize a malha:
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yaml
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 \
Ative a federação de identidade da carga de trabalho para o GKE e execute o servidor de metadados do GKE no nó.
- CLUSTER_NAME é o nome do cluster.
- LOCATION é o local do cluster.
- PROJECT_ID é o ID do projeto do cluster.
- 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
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:
Console
Depois que o cluster for criado,
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
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.
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:
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