Configura Cloud Run for Anthos en Google Cloud

En esta guía se muestra cómo configurar un clúster de Google Kubernetes Engine nuevo con Cloud Run for Anthos habilitado. Debido a que puedes usar Cloud Console o la línea de comandos de gcloud, las instrucciones incluyen ambos recursos. Si debes habilitar Cloud Run en un clúster existente, consulta cómo habilitar Cloud Run for Anthos en Google Cloud en clústeres existentes.

Ten en cuenta que si habilitas Cloud Run for Anthos en Google Cloud, 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.

Requisitos

  1. Accede a tu Cuenta de Google.

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

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

Configura gcloud

Aunque puedes usar Cloud Console o la línea de comandos de gcloud para usar Cloud Run for Anthos en Google Cloud, es posible que debas usar la línea de comandos de gcloud para algunas tareas.

A fin de configurar la línea de comandos de gcloud para Cloud Run for Anthos en Google Cloud, sigue estos pasos:

  1. Instala e inicializa el SDK de Cloud.

  2. Debes establecer la configuración del proyecto predeterminado de gcloud en el que acabas de crear:

    gcloud config set project PROJECT-ID

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

  3. Establece zone en la zona deseada del clúster nuevo. 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 a fin de crear un clúster, y compilar y publicar un contenedor en Google Container Registry:

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. Actualiza los componentes de gcloud instalados:

    gcloud components update
  6. Instala la herramienta de línea de comandos de kubectl:

    gcloud components install kubectl

Crea un clúster con Cloud Run habilitado

Mediante estas instrucciones, se crea un clúster con la siguiente configuración:

  • Cloud Run for Anthos en Google Cloud habilitado
  • Versión de Kubernetes: Consulta Versiones de GKE disponibles
  • Nodos con 2 CPU virtuales

Estas son las opciones de configuración recomendadas para un clúster nuevo.

Puedes usar la línea de comandos de gcloud o Console para crear un clúster. Haz clic en la pestaña correspondiente para obtener instrucciones.

Console

Para crear un clúster y habilitarlo en Cloud Run for Anthos en Google Cloud, 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 Crear clúster para abrir la página Crea un clúster de Kubernetes.

  3. Selecciona la plantilla Clúster estándar y establece los siguientes valores en ella:

    • Ingresa el nombre que deseas para el clúster.
    • Elige Zonal o Regional para el tipo de ubicación: cualquiera de las dos funcionará con Cloud Run for Anthos en Google Cloud. Los clústeres zonales son menos costosos, pero generan tiempo de inactividad durante las actualizaciones de la instancia principal.
    • Selecciona una zona o una región para el clúster, según tu elección en el paso anterior. Elige una zona o una región cercanas, por ejemplo, us-central1-a.
    • En la lista desplegable, selecciona una de las versiones disponibles como la versión del clúster principal.

    • Selecciona la casilla de verificación Habilitar Cloud Run for Anthos.

  4. Haz clic en Crear para crear y aprovisionar el clúster con la configuración que acabas de completar. Este proceso puede tomar unos minutos en completarse.

Línea de comandos

Para crear un clúster nuevo que habilite Cloud Run for Anthos en Google Cloud, sigue estos pasos:

  1. Crea un clúster nuevo:

    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

    Ten en cuenta que, mediante estas instrucciones, no se habilitará el ajuste de escala automático del clúster para cambiar el tamaño de los clústeres según la demanda. Cloud Run for Anthos en Google Cloud escalará instancias de forma automática en el clúster.

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

Crea un clúster privado con Cloud Run habilitado

De forma predeterminada, el clúster que creaste antes puede configurar el acceso desde redes públicas. Si deseas crear un clúster privado con Cloud Run habilitado que aísle los Pods, los nodos y las cargas de trabajo de la conectividad a las redes públicas, consulta estas instrucciones; de lo contrario, pasa a la siguiente sección.

  1. Crea un clúster privado con al menos 4 CPU virtuales.

    Crear clúster privado

  2. Puedes omitir las siguientes instrucciones si usas Cloud Run for Anthos en un clúster de GKE con las siguientes versiones:
    • 1.16.8-gke.7+
    • 1.15.11-gke.9+
    Para implementar un servicio en Cloud Run for Anthos en un clúster privado de GKE, debes permitir conexiones TCP desde servidores principales hasta nodos en el puerto 8443 y especificar de forma manual ese puerto en la lista de conexiones TCP permitidas mediante la edición de las reglas de firewall en tu proyecto:
    1. Observa el bloque CIDR de la instancia principal del clúster y registra el valor en el campo masterIpv4CidrBlock:

      gcloud container clusters describe CLUSTER_NAME
    2. Visualiza y registra el valor en el campo TARGET_TAGS:

      gcloud compute firewall-rules list \
                --filter 'name~^gke-CLUSTER_NAME' \
                 --format 'table(
                         name,
                         network,
                         direction,
                         sourceRanges.list():label=SRC_RANGES,
                         allowed[].map().firewall_rule().list():label=ALLOW,
                         targetTags.list():label=TARGET_TAGS
                 )'
    3. Agrega una regla de firewall mediante los valores que registraste antes:

      gcloud compute firewall-rules create FIREWALL_RULE_NAME \
           --action ALLOW \
           --direction INGRESS \
           --source-ranges masterIpv4CidrBlock \
           --rules tcp:8443 \
           --target-tags TARGET_TAGS

      Para obtener más información, consulta Crea reglas de firewall.

Configura gcloud para el clúster y la plataforma

Después de crear el clúster, sigue estos pasos:

  • Configura la plataforma predeterminada como gke.
  • De manera opcional, establece valores predeterminados para el nombre y la ubicación del clúster a fin de evitar solicitudes posteriores cuando uses la línea de comandos.
  • Obtén credenciales que permitan que la línea de comandos de gcloud acceda al clúster.

Para establecer valores predeterminados, haz lo siguiente:

  1. Configura la plataforma predeterminada como gke, establece tu clúster predeterminado y la ubicación del clúster y, luego, obtén las credenciales de la siguiente manera:

    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 los siguientes elementos:

    • CLUSTER por el nombre del clúster
    • ZONE por la ubicación del clúster
  2. Los clústeres de Kubernetes vienen con un espacio de nombres llamado default. Para obtener información sobre los espacios de nombres y por qué se recomienda crear y usar un espacio de nombres distinto de default, consulta Espacios de nombres en la documentación de Kubernetes. Para crear un espacio de nombres nuevo, ejecuta el siguiente comando:

    kubectl create namespace NAMESPACE

    Reemplaza NAMESPACE por el espacio de nombres que deseas crear.

  3. Si creaste un espacio de nombres nuevo en el paso anterior y deseas usarlo en lugar del espacio de nombres default, configura ese nuevo espacio de nombres como el que se usará de forma predeterminada cuando invoques la línea de comandos de gcloud:

    gcloud config set run/namespace NAMESPACE

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

Cuando se habilita Workload Identity, Cloud Run for Anthos no informa algunas métricas en Google Cloud's operations suite. Si deseas habilitar las métricas, debes establecer de forma manual los permisos para escribir métricas en Cloud Monitoring. Para ello, otorga la función de Escritor de métricas de Monitoring a la cuenta de servicio de Google (GSA) asociada con Cloud Run for Anthos.

Otorga los permisos de la función de Escritor de métricas de Monitoring a la GSA de tu servicio, de la siguiente manera:

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

Reemplaza lo siguiente:

  • PROJECT_ID por el ID del proyecto de un 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 la página 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 prácticos 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. 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 los servicios de Cloud Run for Anthos en 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.

  3. Usa la línea de comandos de gcloud para comunicarte con el clúster de GKE mediante la configuración de la plataforma predeterminada en kubernetes:

    gcloud config set run/platform kubernetes
    

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 mediante una imagen de contenedor especificada en el clúster de GKE cuyas credenciales se almacenan en el archivo kubeconfig:

gcloud run deploy 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 interna privada (RFC 1918).

Puedes implementar los servicios de Cloud Run for Anthos en Google Cloud en una dirección IP interna de tu red de VPC si cambias la puerta de enlace de entrada de Istio para usar el balanceo de cargas TCP/UDP interno en lugar del balanceo de cargas de red. Debes ser un administrador en tu clúster para hacer esto.

Para configurar la puerta de enlace de entrada, haz lo siguiente:

  1. Actualiza la puerta de enlace de entrada de Istio para usar el balanceo de cargas TCP/UDP interno:

    kubectl -n gke-system patch svc istio-ingress -p \
        '{"metadata":{"annotations":{"cloud.google.com/load-balancer-type":"Internal"}}}'
    

    Es posible que el cambio tome unos minutos en aplicarse.

  2. Ejecuta el siguiente comando para consultar tu clúster de GKE en busca de cambios:

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. Busca el valor de EXTERNAL-IP para usar una dirección IP privada.
    2. Presiona Ctrl+C para detener la consulta cuando veas una dirección IP privada en el campo EXTERNAL-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 Google Cloud en el espacio de nombres default:

    gcloud run deploy sample \
    --image gcr.io/knative-samples/simple-api \
    --namespace default \
    --platform gke
    
  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 personalizada de Istio con Cloud Run for Anthos además de los componentes de Istio ya instalados de forma predeterminada en Cloud Run for Anthos en Google Cloud.

Por el momento, los componentes de Istio incluidos en la instalación predeterminada de Cloud Run for Anthos en Google Cloud no admiten la inyección automática de sidecar. Sin embargo, puedes usar una instalación adicional de Istio a fin de habilitar la inyección del sidecar 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 que está configurado con la instalación predeterminada de Cloud Run for Anthos en Google Cloud

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 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 en Google Cloud

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

  3. Haz clic en Editar.

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

  5. Haz clic en Guardar.

Próximos pasos