Habilita Cloud Run for Anthos en Google Cloud en clústeres de GKE existentes

Aprende a habilitar Cloud Run for Anthos en los clústeres de GKE existentes para administrar tus cargas de trabajo sin estado.

Requisitos previos

En esta página, se da por hecho que ya configuraste tu entorno y tienes un clúster con la siguiente configuración mínima:

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

Habilita un clúster existente para Cloud Run for Anthos

Puedes usar la línea de comandos de gcloud o la consola para habilitar Cloud Run for Anthos en un clúster:

Console

Para habilitar un clúster existente en Cloud Run for Anthos, 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 que deseas habilitar para Cloud Run for Anthos.

  3. Haz clic en Editar.

  4. Selecciona Habilitar Cloud Run for Anthos en Google Cloud.

  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 un clúster existente en Cloud Run for Anthos, 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 los siguientes elementos:

    • CLUSTER_NAME por el nombre que deseas para el clúster.
    • ZONE por la zona que usas para tu clúster, por ejemplo, us-central1-a.
  2. Espera a que se complete la habilitación. Si se ejecuta de forma correcta, verás un mensaje similar a Updating your-cluster-name...done..

Habilita implementaciones en un clúster privado

Puedes omitir las siguientes instrucciones, si usas Cloud Run for Anthos en Google Cloud en un clúster de GKE con las siguientes versiones:

  • 1.16.8-gke.7+
  • 1.15.11-gke.9+

Para implementar un servicio de Cloud Run for Anthos en Google Cloud en un clúster de GKE privado, debes permitir conexiones TCP desde los servidores del plano de control (instancia principal) a los nodos del puerto 8443 y especificar manualmente el puerto 8443 en tu lista de conexiones TCP permitidas editando las reglas de firewall de tu proyecto:

  1. Visualiza el bloque CIDR del clúster del plano de control 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.

Habilita implementaciones para una red interna privada

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

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.

Habilita la inyección automática del sidecar de Istio

Para habilitar la inyección automática del sidecar de Istio en el espacio de nombres de tu servicio implementado, debes usar una instalación de Istio por separado.

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

Inhabilita Cloud Run for Anthos para un clúster

Puedes inhabilitar Cloud Run for Anthos para un clúster en cualquier momento mediante la consola o la línea de comandos.

Console

Para inhabilitar Cloud Run for Anthos en un 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.

  3. Selecciona Disable Cloud Run for Anthos on Google Cloud.

  4. De manera opcional, inhabilita los complementos que no usarás en tu clúster sin Cloud Run for Anthos. Esto puede incluir Istio.

  5. Haz clic en Guardar.

Línea de comandos

Para borrar un clúster, haz lo siguiente:

  1. Invoca el comando siguiente:

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=DISABLED \
    --zone=ZONE

    Reemplaza los siguientes elementos:

    • CLUSTER_NAME por el nombre que deseas para el clúster.
    • ZONE por la zona que usas para tu clúster, por ejemplo, us-central1-a.
  2. Espera a que se complete la habilitación. Si se ejecuta de forma correcta, verás un mensaje similar a Updating your-cluster-name...done..