Prepare-se para configurar a API Gateway para a Cloud Service Mesh
Esta página descreve como instalar as definições de recursos personalizados necessárias para a gateway no seu cluster.
Limitações
- Não é suportada a existência de uma combinação de clusters
gateway
config-api eistio
config-api na mesma frota. - A deteção de serviços e o equilíbrio de carga em vários clusters não são suportados para clusters config-api
gateway
. - Se um cluster for integrado através da flag
--management automatic
existente, o cluster começa a usar a API de configuraçãoistio
e não pode mudar para a APIgateway
. - Apenas são suportados FQDNs. Os diminutivos não são suportados.
Pré-requisitos
Como ponto de partida, este guia pressupõe que já
criou um Google Cloud projeto 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.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Gere uma entrada kubeconfig para o seu cluster:
- CLUSTER_NAME é o nome do seu cluster
- LOCATION é a localização do seu cluster
- PROJECT_ID é o ID do projeto do seu cluster
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
where:
- CLUSTER_NAME é o nome do seu cluster
- LOCATION é a localização do seu cluster
- PROJECT_ID é o ID do projeto do seu cluster
Ative a federação de identidades de cargas 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
Registe o seu cluster numa frota:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Verifique se o cluster está registado na frota:
gcloud container hub memberships list --project=PROJECT_ID
O resultado é semelhante ao seguinte:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Conceda a função de
trafficdirector.client
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
Conceda a função de
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 seu projeto.
Conceda a função de
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 seu projeto.
Ative a funcionalidade 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 estado do recurso do Cloud Service Mesh:
gcloud alpha container fleet mesh describe
- Configure uma malha de serviços do sidecar do Envoy no GKE
- Configure uma malha de serviços gRPC sem proxy no GKE
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
where:
Crie e registe um cluster do GKE
Configure as autorizações
Tenha em atenção que os seguintes comandos concedem autorização a todos os utilizadores autenticados, mas pode usar a Workload Identity Federation para o GKE para conceder autorização apenas a contas selecionadas.
Ative o Cloud Service Mesh
Instale definições de recursos personalizados
Instale a definição de recursos personalizados (CRD) 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 -
O resultado é semelhante ao seguinte:
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created