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. - CLUSTER_NAME é o nome do seu cluster
- LOCATION é a localização do seu cluster
- PROJECT_ID é o ID do projeto do seu cluster
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Clique em add_box Criar.
Na secção Padrão, clique em Configurar.
Na secção Noções básicas do cluster, conclua o seguinte:
- Introduza o Nome do cluster.
- Para o Tipo de localização, selecione uma região do Compute Engine para o seu cluster.
No painel de navegação, clique em default-pool na secção Node Pools e selecione Security.
Na lista Âmbitos de acesso, selecione Definir acesso para cada API e defina Cloud Platform como Ativado.
No painel de navegação, clique em Rede na secção Cluster.
Na lista Cluster Networking, selecione Enable Gateway API.
No painel de navegação, clique em Segurança na secção Cluster.
Na lista Segurança, selecione Ativar identidade de carga de trabalho.
Clique em Criar.
Registe o seu cluster numa frota:
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Verifique se o cluster está registado na frota:
gcloud container fleet memberships list --project=PROJECT_ID
O resultado é semelhante ao seguinte:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Ative a funcionalidade 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 estado do recurso do Cloud Service Mesh:
gcloud alpha container fleet mesh describe
Crie um ficheiro YAML que especifique a utilização 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 registe-o na sua frota num único passo para usar a configuração predefinida:
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \
Ative a Workload Identity Federation para o GKE e execute o servidor de metadados do GKE no seu nó.
- CLUSTER_NAME é o nome do seu cluster
- LOCATION é a localização do seu cluster
- PROJECT_ID é o ID do projeto do seu cluster
- Configure uma malha de serviços do sidecar do Envoy no GKE
- Configure uma malha de serviços gRPC sem proxy no GKE
Crie e registe 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
where:
Consola
Depois de criar o cluster:
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. Para ver detalhes sobre como funciona a federação de identidades da carga de trabalho para o GKE, consulte o artigo Acerca da federação de identidades da carga de trabalho para o GKE. Para configurar a federação de identidades da carga de trabalho para o GKE, consulte o artigo Autenticar em Google Cloud APIs a partir de cargas de trabalho do GKE.
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"
Ative o Cloud Service Mesh
Defina as novas associações da sua frota para usar a API Gateway por predefinição (opcional)
Em alternativa, pode criar definições predefinidas ao nível da frota para que os novos clusters do GKE registados na frota durante a criação do cluster sejam configurados automaticamente com a API Gateway.
Instale definições de recursos personalizados
Gere uma entrada kubeconfig para o seu cluster:
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
where:
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