Prepárate para configurar la API de Gateway para Cloud Service Mesh
En esta página, se describe cómo instalar en tu clúster las definiciones de recursos personalizados necesarias para la puerta de enlace.
Limitaciones
- No se admite tener una combinación de clústeres de config-api de
gatewayy config-api deistioen la misma flota. - El descubrimiento de servicios y el balanceo de cargas de varios clústeres no son compatibles con los clústeres de
gatewayconfig-api. - Si se incorpora un clúster con la marca
--management automaticexistente, el clúster comienza a usar la API de configuración deistioy no 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 creaste un proyecto de Google Cloud y instalaste kubectl.
Antes de comenzar
-
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.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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Genera una entrada de kubeconfig para tu clúster:
- CLUSTER_NAME es el nombre de tu clúster.
- LOCATION es la ubicación de tu clúster.
- PROJECT_ID es el ID del proyecto de tu clúster.
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=standardDonde:
- CLUSTER_NAME es el nombre de tu clúster.
- LOCATION es la ubicación de tu clúster.
- PROJECT_ID es el ID del proyecto de tu clúster.
Habilita Workload Identity Federation for GKE:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.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_METADATARegistra tu clúster en una flota:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVerifica que el clúster esté registrado en la flota:
gcloud container hub memberships list --project=PROJECT_IDEl resultado es similar al siguiente:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1Otorga la función
trafficdirector.client:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.:/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." \ --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." \ --role "roles/compute.networkAdmin"En el ejemplo anterior, PROJECT_NUMBER es el número del proyecto.
Habilita la función de malla:
gcloud container hub mesh enable --project PROJECT_IDActualiza la malla para usar la API de Gateway:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDPara verificar la actualización, describe el estado del recurso de Cloud Service Mesh:
gcloud alpha container fleet mesh describe- Configura una malla de servicios de sidecar de Envoy en GKE
- Configura una malla de servicios de gRPC sin proxy en GKE
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
Donde:
Crea y registra un clúster de GKE
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.
Habilita Cloud Service Mesh
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