Prepárate para configurar la API de Gateway para Cloud Service Mesh
En esta página, se describe cómo instalar las definiciones de recursos personalizados requeridas de la puerta de enlace a tu clúster.
Limitaciones
- No se admite tener una combinación de clústeres de
gateway
config-api yistio
config-api en la misma flota. - El descubrimiento de servicios de varios clústeres y el balanceo de cargas no son compatibles con los clústeres de
gateway
config-api. - Si un clúster se incorpora mediante la marca
--management automatic
existente entonces, el clúster comienza a usar la API de configuraciónistio
y no se puede cambiar a la API degateway
. - Solo se admiten FQDN. No se admiten nombres cortos.
Requisitos previos
Como punto de partida, en esta guía, se supone que ya
crear un proyecto de Google Cloud
instalaste kubectl
.
Antes de comenzar
- 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.
- Genera una entrada kubeconfig para tu clúster:
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
Donde:
- CLUSTER_NAME es el nombre del clúster.
- LOCATION es la ubicación de tu clúster.
- PROJECT_ID es el ID del proyecto de tu clúster.
Crea y registra un clúster de GKE
Crea un clúster de 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
Donde:
- CLUSTER_NAME es el nombre del clúster.
- LOCATION es la ubicación de tu clúster.
- PROJECT_ID es el ID del proyecto de tu clúster.
Habilita la federación de identidades para cargas de trabajo para GKE:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
Ejecuta el servidor de metadatos de GKE en tu nodo:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
Registra tu clúster en una flota:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
Verifica que el clúster esté registrado en la flota:
gcloud container hub memberships list --project=PROJECT_ID
El resultado es similar al siguiente:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Configura los permisos
Ten en cuenta que los siguientes comandos otorgan permiso a todos los usuarios autenticados, pero puedes usar la federación de identidades para cargas de trabajo para GKE para otorgar permiso solo a cuentas seleccionadas.
Otorga la función
trafficdirector.client
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
Otorga la función
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"
En el ejemplo anterior, PROJECT_NUMBER es el número del proyecto.
Otorga la función
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"
En el ejemplo anterior, PROJECT_NUMBER es el número del proyecto.
Habilitar la malla de servicios de Cloud
Habilita la función de malla:
gcloud container hub mesh enable --project PROJECT_ID
Actualiza la malla para usar la API de puerta de enlace:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Para verificar la actualización, describe el estado del recurso de la malla de servicios de Cloud:
gcloud alpha container fleet mesh describe
Instala definiciones de recursos personalizados
Instala la definición de recurso personalizado (CRD) de 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 -
El resultado es similar al siguiente:
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created
¿Qué sigue?
- Configura una malla de servicios de sidecar de Envoy en GKE
- Configura una malla de servicios de gRPC sin proxy en GKE