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
eistio
na mesma frota. - O balanceamento de carga e a descoberta de serviços de vários clusters não são compatíveis com
clusters de config-api
gateway
. - Se um cluster for integrado usando a flag
--management automatic
atual, ele vai 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.
Pré-requisitos
Como ponto de partida, este guia presume que você já
criou um projeto do Google Cloud e
instalou 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.
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 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 configure Cloud Platform como Ativado.
No painel de navegação, clique em Rede na seção Cluster.
Na lista Cluster Networking, 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.
Depois que o cluster é criado,
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
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.
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"
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.
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
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 da malha de serviço do Cloud:
gcloud alpha container fleet mesh describe
Definir as novas assinaturas da frota para usar a API Gateway por padrão (opcional)
Como alternativa, crie configurações padrão no nível da frota para novos clusters do GKE registrados na frota durante a criação do cluster para serem configurados automaticamente com a API Gateway.
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 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 seu 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 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 sidecar do Envoy no GKE
- Configurar uma malha de serviço gRPC sem proxy no GKE