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
- Ter uma combinação de
gateway
clusters config-api eistio
config-api no mesma frota não é compatível. - 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çãoistio
e não pode mudar para a APIgateway
. - 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
- 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.
- 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.
Criar e registrar um cluster do GKE
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.
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
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
Registre seu cluster em uma frota:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
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.
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 o Cloud Service Mesh
Ative o recurso de malha:
gcloud container hub 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
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 sidecar do Envoy no GKE
- Configurar uma malha de serviço gRPC sem proxy no GKE