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 personalizadas necesarias para la puerta de enlace en tu clúster.

Limitaciones

  • No se admite tener una combinación de clústeres de config-api de gateway y de istio 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 se incorpora un clúster con la marca --management automatic existente, el clúster comienza a usar la API de configuración istio y no puede cambiar a la API de gateway.
  • Solo se admiten FQDN. No se admiten nombres cortos.

Requisitos previos

Como punto de partida, en esta guía se da por sentado que ya creaste un proyecto de Google Cloud y instalaste kubectl.

Antes de comenzar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

Crea y registra un clúster de GKE

gcloud

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 \
--workload-pool=PROJECT_ID.svc.id.goog \
--workload-metadata=GKE_METADATA

Donde:

  • 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.

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. En la sección Estándar, haz clic en Configurar.

  4. En la sección Aspectos básicos del clúster, completa lo siguiente:

    1. Ingresa el nombre de tu clúster.
    2. En Tipo de ubicación, selecciona una zona de Compute Engine para el clúster.
  5. En el panel de navegación, haz clic en default-pool en la sección Grupos de nodos y selecciona Seguridad.

  6. En la lista Permisos de acceso, selecciona Configurar acceso para cada API y establece Cloud Platform como Habilitada.

  7. En el panel de navegación, haz clic en Herramientas de redes en la sección Clúster.

  8. En la lista Redes del clúster, selecciona Habilitar la API de la puerta de enlace.

  9. En el panel de navegación, haz clic en Seguridad en la sección Clúster.

  10. En la lista Seguridad, selecciona Habilitar Workload Identity.

  11. Haz clic en Crear.

Después de crear el clúster,

  1. Registra tu clúster en una flota:

    gcloud container fleet memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  2. Verifica que el clúster esté registrado en la flota:

    gcloud container fleet 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.

  1. 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"
    
  2. 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 de tu proyecto.

  3. 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 de tu proyecto.

Habilita Cloud Service Mesh

  1. Habilita la función de malla:

    gcloud container fleet mesh enable --project PROJECT_ID
    
  2. Actualiza la malla para usar la API de Gateway:

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. Para verificar la actualización, describe el estado del recurso de malla de servicios de Cloud:

    gcloud alpha container fleet mesh describe
    

Configura las membresías nuevas de tu flota para que usen la API de la puerta de enlace de forma predeterminada (opcional)

Como alternativa, puedes crear una configuración predeterminada a nivel de la flota para que los clústeres de GKE nuevos registrados en la flota durante la creación del clúster se configuren automáticamente con la API de Gateway.

  1. Crea un archivo YAML que especifique el uso de la API de Gateway:

    echo "configapi: gateway" > mesh.yaml
    
  2. Actualiza tu malla:

    gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \
        --fleet-default-member-config mesh.yaml
    
  3. Crea un clúster y regístralo en tu flota en un solo paso para usar la configuración predeterminada:

    gcloud container clusters create CLUSTER_NAME \
        --project PROJECT_ID \
        --fleet-project FLEET_PROJECT_ID \
        --location=LOCATION \
    
  4. Habilita la federación de identidades para cargas de trabajo para GKE y ejecuta el servidor de metadatos de GKE en tu nodo.

Instala definiciones de recursos personalizados

Genera una entrada de kubeconfig para tu clúster:

gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID

Donde:

  • 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.

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?