Configura Cloud Run for Anthos

En esta guía, se muestra cómo configurar un clúster de Google Kubernetes Engine (GKE) y habilitar Cloud Run for Anthos. Puedes usar la consola de Google Cloud o Google Cloud CLI para habilitar Cloud Run for Anthos en clústeres de GKE estándares y privados.

Si habilitas Cloud Run for Anthos, se instalan Istio y Knative Serving en el clúster para conectar y administrar las cargas de trabajo sin estado. Para obtener más información, consulta Descripción general de la arquitectura de Cloud Run for Anthos en Google Cloud.

Antes de comenzar

  1. Cloud Run for Anthos es un complemento para Google Kubernetes Engine. Hay una prueba gratuita disponible hasta el 30 de septiembre de 2021.
  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.

Configura el entorno de la línea de comandos

Aunque puedes optar por usar la consola de Google Cloud o la CLI de gcloud para administrar Cloud Run for Anthos, hay algunas tareas que requieren la CLI de gcloud.

A fin de configurar las herramientas de línea de comandos de gcloudkubectl para Cloud Run for Anthos, haz lo siguiente:

  1. Instala y, luego, inicializa Google Cloud CLI.

  2. Configura el proyecto predeterminado para la CLI de gcloud en el que acabas de crear o en un proyecto existente que deseas usar:

    gcloud config set project PROJECT-ID

    Reemplaza PROJECT-ID por el ID del proyecto que creaste.

  3. Configura zone en la zona deseada del clúster. Puedes usar cualquier zona que admita GKE. Por ejemplo:

    gcloud config set compute/zone ZONE

    Reemplaza ZONE por la zona.

  4. Habilita las siguientes API para el proyecto, que son necesarias si deseas crear un clúster, compilar y publicar un contenedor en el registro de Google Kubernetes Engine:

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. Instala la herramienta de línea de comandos kubectl:

    gcloud components install kubectl
  6. Actualiza los componentes instalados de la CLI de gcloud:

    gcloud components update

Habilita Cloud Run for Anthos

Cloud Run for Anthos se ejecuta en un clúster de GKE. Puedes habilitar Cloud Run for Anthos en un clúster existente o puedes crear un clúster nuevo con Cloud Run for Anthos habilitado.

Elige cómo deseas configurar Cloud Run for Anthos:

Cloud Run for Anthos también se puede habilitar en clústeres privados de GKE. Si deseas obtener información para crear un clúster de GKE privado, consulta Crea un clúster privado en la documentación de GKE.

Crea un clúster nuevo de GKE con Cloud Run for Anthos habilitado

En estas instrucciones, se crea un clúster con las siguientes opciones de configuración:

  • Cloud Run for Anthos habilitado
  • Versión de Kubernetes: versiones disponibles de GKE
  • 4 nodos con 4 CPU virtuales
  • Espacio de nombres predeterminado: default

Estas son las opciones de configuración de clústeres recomendadas para probar Cloud Run for Anthos. En las cargas de trabajo de producción, debes configurar el clúster de GKE para satisfacer tus necesidades específicas. Para obtener información sobre los diferentes tipos de clústeres de GKE y sus opciones de configuración, consulta Tipos de clústeres en la documentación de GKE.

Para crear un clúster y habilitar Cloud Run for Anthos, haz lo siguiente:

  1. Crea un clúster:

    gcloud container clusters create CLUSTER-NAME \
    --zone=ZONE \
    --addons=HttpLoadBalancing,CloudRun \
    --machine-type=e2-standard-4 \
    --num-nodes=4 \
    --cluster-version=GKE-VERSION \
    --enable-stackdriver-kubernetes

    El ajuste de escala automático del clúster no está habilitado de forma predeterminada, aunque Cloud Run for Anthos escala de forma automática la cantidad de instancias dentro del clúster según la capacidad disponible.

  2. Espera a que termine de crearse el clúster.

Habilita Cloud Run for Anthos en un clúster existente

Tu clúster de GKE debe tener la siguiente configuración mínima:

Puedes usar la CLI de gcloud o la consola de Google Cloud para habilitar Cloud Run for Anthos en un clúster:

Consola

Para habilitar Cloud Run for Anthos en un clúster existente, haz lo siguiente:

  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 el nombre del clúster en el que deseas habilitar Cloud Run for Anthos.

  3. Haz clic en Edit.

  4. Haz clic en Habilitar Cloud Run for Anthos.

  5. Haz clic en Guardar. Una vez que se complete la actualización, el clúster admitirá Cloud Run for Anthos.

Línea de comandos

Para habilitar Cloud Run for Anthos en un clúster existente, haz lo siguiente:

  1. Habilita el clúster mediante el siguiente comando:

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \
    --zone=ZONE

    Reemplaza lo siguiente:

    • CLUSTER_NAME: es el nombre del clúster.
    • ZONE: es la zona del clúster. Por ejemplo, us-central1-a
  2. Espera a que se complete la habilitación. Si se ejecuta de forma correcta, la línea de comandos mostrará un mensaje similar al siguiente:

    Updating your-cluster-name...done.

Establece la configuración predeterminada para gcloud CLI

Después de crear el clúster, puedes configurar los valores predeterminados para que los use Google Cloud CLI. Cuando usas la línea de comandos, esto quita las solicitudes posteriores para cualquier valor predeterminado que establezcas, por ejemplo, el nombre o la ubicación del clúster.

Puedes definir una configuración predeterminada para los siguientes valores:

  • Nombre del clúster
  • Ubicación del clúster
  • Credenciales
  • Espacio de nombres
  • Platform

Para establecer valores predeterminados, haz lo siguiente:

  1. Configura tu clúster predeterminado y su ubicación; luego, obtén las credenciales mediante la ejecución de los siguientes comandos:

    gcloud config set run/platform gke
    gcloud config set run/cluster CLUSTER
    gcloud config set run/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    Reemplaza lo siguiente:

    • CLUSTER por el nombre del clúster
    • ZONE por la ubicación del clúster
  2. De forma predeterminada, el clúster se crea con un espacio de nombres llamado default. Para obtener información sobre los espacios de nombres y los motivos por los que es posible que quieras crear y usar un espacio de nombres que no sea default, consulta espacio de nombres.

    Para crear un espacio de nombres nuevo, ejecuta el siguiente comando:

    kubectl create namespace NAMESPACE

    Reemplaza NAMESPACE por el nombre del espacio de nombres que deseas crear.

  3. Si creaste un espacio de nombres nuevo en el paso anterior, puedes configurarlo como el espacio de nombres predeterminado que se usa cada vez que invocas Google Cloud CLI. De lo contrario, se usa el espacio de nombres default. Para configurar el espacio de nombres nuevo, ejecuta el siguiente comando:

    gcloud config set run/namespace NAMESPACE

    Reemplaza NAMESPACE por el nombre del espacio de nombres que deseas que use la CLI de gcloud de forma predeterminada.

Habilita métricas en un clúster con Workload Identity

Cuando habilitas Workload Identity, Cloud Run for Anthos no informa ciertas métricas, como el recuento de solicitudes de revisión o la latencia de las solicitudes, a Google Cloud's operations suite, pero continúa informando métricas de CPU y memoria.

A fin de habilitar todas las métricas, necesitas configurar de forma manual los permisos para escribir métricas en Cloud Monitoring. Con este propósito, otorga la función de escritor de métricas de Monitoring a la cuenta de servicio de Google (GSA) asociada con el servicio de Cloud Run for Anthos.

Otorga los permisos de la función de escritor de métricas de Monitoring a la GSA de tu servicio:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

Reemplaza lo siguiente:

  • PROJECT_ID por el ID del proyecto de clúster que aloja tu KSA.
  • GSA_PROJECT por el ID del proyecto de una GSA que no está en el clúster. Puedes usar cualquier GSA de tu organización.

Para obtener más información, consulta Otorga, cambia y revoca el acceso a los recursos.

Para configurar los servicios que proporcionan las API de Google Cloud, como las de Compute, Storage, Database y las API de aprendizaje automático desde tu clúster de GKE, consulta la página sobre cómo utilizar Workload Identity.

Desarrolla en una configuración multiusuario

En casos de uso de multiusuario, deberás implementar y administrar los servicios de Cloud Run for Anthos en un clúster de Google Kubernetes Engine que esté fuera de tu proyecto actual. Para obtener más información sobre la arquitectura multiusuario de GKE, consulta Clúster de multiusuarios.

Si deseas obtener información para configurar multiusuarios en Cloud Run for Anthos, consulta Multiusuario de varios proyectos.

Configura una red privada interna

Implementar servicios en una red interna es útil para las empresas que proporcionan apps internas a su personal y para servicios que usan los clientes y se ejecutan fuera del clúster de Cloud Run for Anthos. Esta configuración permite que otros recursos de la red se comuniquen con el servicio mediante una dirección IP privada interna (RFC 1918) a la que el público no puede acceder.

A fin de crear una red interna, configura la puerta de enlace de enlace de Ingress de Istio para que use el balanceo de cargas de TCP/UDP interno, en lugar de un balanceador de cargas de red externo y público. A continuación, podrás implementar los servicios de Cloud Run for Anthos en una dirección IP interna dentro de la red de VPC.

Antes de comenzar

  • Debes tener permisos admin en el clúster.
  • Solo se admiten las versiones 310.0 o posteriores de Google Cloud CLI. Para obtener más detalles, consulta Configura gcloud.

Para configurar el balanceador de cargas interno, haz lo siguiente:

  1. Crea un clúster nuevo o actualiza un clúster existente a fin de actualizar la puerta de enlace de Ingress de Istio para usar el balanceo de cargas de TCP/UDP interno:

    • Crea un clúster nuevo con un balanceador de cargas interno:

      gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-2  \
      --num-nodes=3  \
      --enable-stackdriver-kubernetes \
      --cloud-run-config=load-balancer-type=INTERNAL
    • Actualiza un clúster existente para usar un balanceador de cargas interno:

      gcloud container clusters update CLUSTER_NAME
      --update-addons=CloudRun=ENABLED \
      --cloud-run-config=load-balancer-type=INTERNAL

    Es posible que el cambio tome unos minutos en aplicarse.

  2. Ejecuta el siguiente comando para ver las actualizaciones en el clúster de GKE:

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. Observa la anotación “cloud.google.com/load-balancer-type: Internal”.
    2. Busca el valor de la IP en el balanceador de cargas de Ingress para cambiar a una dirección IP privada.
    3. Presiona Ctrl+C para detener las actualizaciones cuando veas una dirección IP privada en el campo IP.

Para verificar la conectividad interna después de realizar los cambios, sigue estos pasos:

  1. Implementa un servicio llamado sample en Cloud Run for Anthos en el espacio de nombres default:

    gcloud run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --namespace default
    
  2. Crea una máquina virtual (VM) de Compute Engine en la misma zona que el clúster de GKE:

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. Almacena la dirección IP privada de la puerta de enlace de entrada de Istio en una variable de entorno llamada EXTERNAL_IP y un archivo llamado external-ip.txt:

    export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \
        -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
    
  4. Copia el archivo que contiene la dirección IP en la VM:

    gcloud compute scp external-ip.txt $VM:~
    
  5. Conéctate a la VM mediante SSH:

    gcloud compute ssh $VM
    
  6. Mientras estás en la sesión SSH, prueba el servicio de muestra:

    curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
    

    Este es el resultado:

    Hello World!
    
  7. Sal de la sesión de SSH:

    exit
    

Usa una instalación de Istio independiente

En las siguientes instrucciones, se muestra cómo conectar Anthos Service Mesh, el complemento de Istio on GKE, o una instalación de Istio personalizada con Cloud Run for Anthos, además de los componentes de Istio ya instalados de forma predeterminada en Cloud Run for Anthos.

Por el momento, los componentes de Istio incluidos en la instalación predeterminada de Cloud Run for Anthos no admiten la inyección automática de sidecar. Sin embargo, puedes usar una instalación adicional de Istio para habilitar la inserción de sidecar de Istio en el espacio de nombres en el que se ejecutan tus servicios.

Para usar una instalación de Istio adicional, debes verificar que la puerta de enlace de entrada de Istio se llame istio-ingressgateway en el espacio de nombres istio-system. Cloud Run for Anthos puede admitir y administrar el tráfico externo de las puertas de enlace de entrada de Istio instaladas en los siguientes espacios de nombres:

  • El espacio de nombres istio-system, con el dominio local del clúster istio-ingressgateway.istio-system.svc.cluster.local que se configura de forma predeterminada cuando usas una instalación adicional de Istio
  • El espacio de nombres gke-system, con el dominio local del clúster istio-ingress.gke-system.svc.cluster.local configurado con la instalación predeterminada de Cloud Run for Anthos.

Importante: Si configuras y usas AuthorizationPolicy de Istio, debes abordar una vulnerabilidad conocida con la coincidencia de tipo de ruta para el control de acceso. Si deseas obtener más información para evitar la exposición a la vulnerabilidad, consulta Prácticas recomendadas de seguridad.

Para verificar el uso adicional de Cloud Run for Anthos de la puerta de enlace de entrada de Istio, sigue estos pasos:

  1. Abre el ConfigMap config-istio:

    kubectl get configmap config-istio --namespace knative-serving -oyaml
    
  2. Verifica que la puerta de enlace de entrada de Istio adicional tenga el nombre istio-ingressgateway y esté en el espacio de nombres istio-system.

Habilita HTTPS y los dominios personalizados

Si deseas usar HTTPS y dominios personalizados que se apliquen al clúster, consulta Habilita las conexiones HTTPS y los certificados TLS automáticos y Asigna dominios personalizados.

Inhabilita Cloud Run for Anthos

Para inhabilitar Cloud Run for Anthos en tu clúster, sigue estos pasos:

  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 el clúster en el que deseas inhabilitar Cloud Run for Anthos.

  3. Haga clic en Editar.

  4. En el menú Cloud Run for Anthos, selecciona Inhabilitar.

  5. Haz clic en Guardar.

¿Qué sigue?