Preparar a configuração da 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 há suporte para uma combinação de clusters de API de configuração
gatewayeistiona mesma frota. - A descoberta de serviços de vários clusters e o balanceamento de carga não são compatíveis com clusters de API de configuração
gateway. - Se um cluster for integrado usando a flag
--management automatic, ele começará a usar a API de configuraçãoistioe não poderá mudar para a APIgateway. - Há suporte apenas para FQDNs. Nomes curtos não são aceitos.
Pré-requisitos
Como ponto de partida, este guia pressupõe que você já
criou um Google Cloud projeto e
instalou kubectl.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, 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.
- 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=standardem 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.googExecute o servidor de metadados do GKE no nó:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATARegistre o cluster em uma frota:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVerifique se o cluster está registrado na frota:
gcloud container hub 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
Observe que 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 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_IDAtualize a malha para usar a API Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDVerifique a atualização descrevendo o status do recurso do Cloud Service Mesh:
gcloud alpha container fleet mesh describe
Instalar definições de recursos personalizados
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
- 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