Prepárate para configurar la API de puerta de enlace de Cloud Service Mesh
En esta página, se describe cómo instalar las definiciones de recursos personalizadas necesarias para la puerta de enlace en tu clúster.
Limitaciones
- Tener una combinación de
gateway
clústeres config-api yistio
de config-api no se admite 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 integra con 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 los FQDN. No se admiten los nombres cortos.
Requisitos previos
Como punto de partida, en esta guía, se da por sentado que ya
crear un proyecto de Google Cloud
instalaste kubectl
.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
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.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
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 del 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 del 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 y otorgar permiso solo a algunas cuentas.
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 personalizadas
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