Configura Cloud Run for Anthos en Google Cloud

En esta guía, se muestra cómo configurar un clúster de Google Kubernetes Engine y habilitar Cloud Run for Anthos en Google Cloud. Puedes usar Cloud Console o la herramienta de línea de comandos de gcloud a fin de habilitar Cloud Run for Anthos en clústeres estándar y privados de GKE.

Habilitar Cloud Run for Anthos instala Istio y Knative Serving en el clúster para conectar y administrar tus cargas de trabajo sin estado. Si deseas obtener más información, consulta la Descripción general de la arquitectura de Cloud Run for Anthos.

Antes de comenzar

  1. Cloud Run for Anthos es un complemento para Google Kubernetes Engine. Hay una prueba gratuita disponible hasta el 31 de marzo de 2021.
  2. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  3. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir a la página del selector de proyectos

  4. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

Configura el entorno de la línea de comandos

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

Si quieres configurar las herramientas de línea de comandos de gcloud y kubectl para Cloud Run for Anthos, haz lo siguiente:

  1. Instala e inicializa el SDK de Cloud.

  2. Establece la configuración predeterminada del proyecto para la herramienta de gcloud en la que acabas de crear o en un proyecto existente que desees usar:

    gcloud config set project PROJECT-ID

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

  3. Configura zone como la zona que deseas para tu 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 un contenedor 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 herramienta 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 quieres configurar Cloud Run for Anthos:

Cloud Run for Anthos también se puede habilitar en clústeres de GKE privados. Para obtener información sobre cómo 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
  • 3 nodos con 2 CPU virtuales
  • Espacio de nombres predeterminado: default

Estas son las configuraciones de clúster recomendadas para probar Cloud Run for Anthos. Para las cargas de trabajo de producción, recomendamos configurar un clúster de GKE según 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.

Console

Para crear un clúster con Cloud Run for Anthos habilitado, haz lo siguiente:

  1. Ve a la página de Cloud Run for Anthos en Cloud Console:

    Ir a Cloud Run for Anthos

  2. Haz clic en Crear servicio.

  3. Haz clic para abrir el menú desplegable de clústeres disponibles y, luego, haz clic en Crear clúster nuevo.

  4. En el panel Crear un clúster predeterminado habilitado para Cloud Run for Anthos, haz lo siguiente:

    • Selecciona una zona para el clúster. Elige una ubicación cerca de ti. Por ejemplo, elige us-west1-a si te encuentras en la costa oeste de Estados Unidos.

    • Elige un nombre para el clúster nuevo.

    • Haz clic en Creación rápida a fin de que se cree un clúster con los requisitos mínimos para Cloud Run for Anthos con Cloud Run for Anthos habilitado.

  5. Elige un Nombre para el nuevo servicio de Cloud Run for Anthos y, luego, haz clic en Siguiente.

  6. En la sección Configurar la primera revisión del servicio, haz lo siguiente:

    • Selecciona Implementar una revisión desde una imagen de contenedor existente.

    • En el campo URL de imagen de contenedor, ingresa una URL para tu propia imagen de contenedor o haz clic en Seleccionar para elegir entre los contenedores de Container Registry disponibles y una selección. de contenedores de demostración.

    • Haga clic en Next.

  7. En la sección Conectividad, elige entre crear un servicio interno o externo. Solo se puede acceder a los servicios internos a través de la red del clúster, mientras que los servicios externos son accesibles desde la Internet pública. Puedes cambiar este parámetro de configuración más tarde.

  8. Haga clic en Crear. La creación del clúster y el servicio tardará unos minutos.

Línea de comandos

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=n1-standard-2 \
    --num-nodes=3 \
    --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 automáticamente las instancias dentro de tu clúster.

  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:

  • 3 nodos con 2 CPU virtuales
  • Permisos:
    • https://www.googleapis.com/auth/logging.write
    • https://www.googleapis.com/auth/monitoring.write

Puedes usar la herramienta de gcloud o Cloud Console para habilitar Cloud Run for Anthos en un clúster:

Console

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 Cloud Console:

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

  4. Selecciona 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. Tras la ejecución correcta, la línea de comandos muestra un mensaje similar al siguiente:

    Updating your-cluster-name...done.

Establece la configuración predeterminada para la herramienta de gcloud

Después de crear el clúster, puedes establecer los valores predeterminados que usará la herramienta de línea de comandos de gcloud. Cuando usas la línea de comandos, esto quita los mensajes subsiguientes 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

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 kuberun/cluster CLUSTER
    gcloud config set kuberun/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    Reemplazar

    • CLUSTER por el nombre del clúster
    • ZONE por la ubicación del clúster

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 multiusuario, deberás implementar y administrar Cloud Run for Anthos en los servicios de Google Cloud para un clúster de Google Kubernetes Engine que esté fuera de tu proyecto actual. En esta sección, se explica cómo desarrollar servicios de Cloud Run for Anthos en Google Cloud en una configuración de clúster de multiusuario.

Para implementar y administrar Cloud Run for Anthos en los servicios de Google Cloud para un clúster de Google Kubernetes Engine fuera de tu proyecto actual, haz lo siguiente:

  1. Asegúrate de tener acceso de lectura al ID del proyecto de Google Cloud del clúster en el que realizas la implementación.

  2. Actualiza tu archivo local kubeconfig con las credenciales para el clúster de GKE de destino:

    gcloud container clusters get-credentials NAME \
    --region=REGION \
    --project=PROJECT-ID
    • REGION es la región de Compute Engine de tu clúster de destino.
    • PROJECT-ID es el proyecto al que tienes acceso de lectura.

    Para obtener más información, consulta la documentación de referencia del comando gcloud container clusters get-credentials.

Ahora puedes ejecutar los comandos en el clúster de GKE de destino especificado en tu archivo kubeconfig.

Por ejemplo, el siguiente comando implementará un servicio de Cloud Run for Anthos en Google Cloud con una imagen de contenedor especificada en el clúster de GKE cuyas credenciales se almacenan en el archivo kubeconfig:

gcloud kuberun core services create SERVICE-NAME --image IMAGE-NAME

Configura una red privada interna

Implementar servicios en una red interna es útil para empresas que proporcionan apps internas a su personal y para servicios que se ejecutan fuera del clúster de Cloud Run for Anthos en Google Cloud. 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 del SDK de Cloud. 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 kuberun core services create sample \
    --image gcr.io/knative-samples/simple-api \
    --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:

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

En este momento, los componentes de Istio incluidos en la instalación predeterminada de Cloud Run for Anthos no admiten la inserción automática del archivo adicional. Sin embargo, puedes usar una instalación adicional de Istio a fin de habilitar la inserción adicional del archivo adicional de Istio para el espacio de nombres del servicio implementado.

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.

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 Cloud Console:

    Ir a Google Kubernetes Engine

  2. Haz clic en el clúster en el que deseas inhabilitar Cloud Run for Anthos.

  3. Haz clic en Editar.

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

  5. Haz clic en Guardar.

¿Qué sigue?