Salida de VPC directa con una red de VPC

Puedes habilitar tu servicio, trabajo o grupo de trabajo de Cloud Run para enviar tráfico a una red de VPC mediante la salida de VPC directa sin necesidad de usar un conector de acceso a VPC sin servidor.

Antes de empezar

Limitaciones

Se aplican las siguientes limitaciones a los servicios, los trabajos y los grupos de trabajadores de Cloud Run:

  • Es posible que experimentes retrasos de un minuto o más en el establecimiento de la conexión al iniciar la instancia si usas la salida de VPC directa. Te recomendamos que configures una prueba de inicio HTTP que compruebe una conexión con un destino de salida que use la aplicación antes de que esta acepte solicitudes. Esta prueba de conectividad de salida debe implementar reintentos o la sonda de inicio debe configurarse con los valores de periodo y umbral adecuados para actuar como reintento.
  • Cloud Run admite un rendimiento de hasta 1 Gbps por instancia. Si se supera esta cantidad, se limitará el rendimiento.
  • Una cuota de uso de Cloud Run limita el número máximo de instancias que puedes configurar para usar la salida de VPC directa. El número máximo se configura por revisión de Cloud Run o ejecución de trabajo. Para aumentar los límites predeterminados, consulta cómo aumentar las cuotas.

  • Los servicios, los trabajos y los grupos de trabajadores de Cloud Run pueden sufrir interrupciones de la conexión durante los eventos de mantenimiento de la infraestructura de red. Te recomendamos que utilices bibliotecas de cliente que puedan gestionar los restablecimientos de conexión ocasionales.
  • La compatibilidad con la salida directa de VPC para el tráfico IPv6 interno solo está disponible en la versión preliminar.
  • NAT privada solo está disponible en la versión preliminar.

Los siguientes elementos no son compatibles con la salida de VPC directa:

  • VPC Flow Logs no proporciona el nombre del servicio ni de la revisión de Cloud Run.
  • Los registros de flujo de VPC no se generan a partir de recursos que no son máquinas virtuales, como Cloud Run o máquinas on-premise.
  • Replicación de paquetes
  • Network Intelligence Center, incluidas las pruebas de conectividad
  • Tráfico IPv6 externo a través de una red de VPC
  • Etiquetas de red o identidad de servicio en reglas de cortafuegos de entrada.
  • Las reglas de cortafuegos no pueden usar etiquetas de Resource Manager asociadas a cargas de trabajo de Cloud Run.
  • Los trabajos de Cloud Run que se ejecutan durante más de 1 hora pueden experimentar interrupciones en la conexión. Esto puede ocurrir durante eventos de mantenimiento que migran el trabajo de una máquina a otra. El contenedor recibe una señal SIGTSTP 10 segundos antes del evento y una señal SIGCONT después del evento. Una vez que el contenedor reciba la señal SIGCONT, vuelve a intentar la conexión.

Asignación de direcciones IP

Para colocar tu servicio, trabajo o grupo de trabajadores de Cloud Run en una red de VPC, especifica una red de VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Cloud Run asigna direcciones IP de tu subred.

Las direcciones IP son efímeras, por lo que no debes crear políticas basadas en IPs concretas. Si necesitas crear una política basada en IPs, como en las reglas de cortafuegos, debes usar el intervalo de direcciones IP de toda la subred.

Para cambiar la red o la subred que usa tu servicio, trabajo o grupo de trabajadores, despliega una nueva revisión o ejecuta una nueva tarea de trabajo que use los nuevos valores de red y subred.

Escalar verticalmente y reducir verticalmente

Para aumentar la escala más rápido durante un pico de tráfico, Cloud Run reserva direcciones IP en bloques de 16 (máscara de subred 28) a la vez. Consulta qué direcciones IP ha asignado Cloud Run. Para asegurarte de que tienes suficientes direcciones IPv4 disponibles para usar en Cloud Run, el intervalo de direcciones IPv4 de tu subred debe ser /26 o mayor.

Para que la asignación de IPs sea eficiente y la gestión resulte más sencilla, coloca varios recursos en la misma subred. Si tu espacio de direcciones IPv4 es limitado, consulta Intervalos de IPv4 admitidos para ver más opciones.

Para eliminar la subred, primero debes eliminar o volver a implementar tus servicios, trabajos o grupos de trabajadores de Cloud Run para dejar de usar la subred y, a continuación, esperar entre 1 y 2 horas.

Consumo de direcciones IP para servicios y grupos de trabajadores

En estado estable, Cloud Run usa el doble de direcciones IP que el número de instancias. Cuando una revisión se reduce, Cloud Run conserva sus direcciones IP durante un máximo de 20 minutos. En total, reserva al menos el doble del número de direcciones IP, más un margen para tener en cuenta las actualizaciones de revisión.

Por ejemplo, si actualiza las revisiones para que revision 1 pase de 100 instancias a cero mientras que revision 2 pasa de cero a 100, Cloud Run conserva las direcciones IP de revision 1 hasta 20 minutos después de reducir la escala. Durante la ventana de retención de 20 minutos, debes reservar al menos 400 direcciones IP ((100 + 100) * 2).

Consumo de IPs para trabajos

En el caso de las tareas de Cloud Run, cada tarea consume 1 dirección IP durante el tiempo que se ejecuta, más 7 minutos después de completarse. Asegúrate de que tu subred sea lo suficientemente grande como para dar cabida a todas las ejecuciones simultáneas de tareas, con una reserva mínima de /26 subredes.

Por ejemplo:

  • Un trabajo de una sola tarea que se ejecuta a diario y siempre se completa al menos 7 minutos antes de la siguiente ejecución consume un máximo de 1 dirección IP en la subred.
  • Una tarea de 10 subtareas que se ejecuta cada 10 minutos y en la que cada subtarea se ejecuta durante 15 minutos consume 1 dirección IP durante 22 minutos por subtarea (3 ejecuciones consumen direcciones IP al mismo tiempo), como se muestra en el siguiente ejemplo. Por lo tanto, el trabajo consume 30 direcciones IP en estado estable.
  • Un trabajo de una sola tarea que tarda 1 minuto en ejecutarse y se ejecuta 100 veces por minuto requiere aproximadamente 800 direcciones IP, según la hora exacta de ejecución.

Intervalos de IPv4 admitidos

Cloud Run admite los siguientes intervalos de IPv4 para tu subred:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Clase E
    • 240.0.0.0/4

Configurar permisos de gestión de identidades y accesos

Asegúrate de que Cloud Run tenga acceso a la red de VPC mediante uno de los siguientes métodos:

  • Rol de agente de servicio de Cloud Run: de forma predeterminada, el agente de servicio de Cloud Run tiene el rol de agente de servicio de Cloud Run (roles/run.serviceAgent), que contiene los permisos necesarios.

  • Permisos personalizados: para tener un control más granular, concede al agente de servicio de Cloud Run los siguientes permisos adicionales en el proyecto:

    • compute.networks.get
    • compute.subnetworks.get
    • compute.subnetworks.use en el proyecto o en la subred específica
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.regionOperations.get
  • Rol Usuario de red de Compute: si no usas el rol Agente de servicio de Cloud Run predeterminado o los permisos personalizados, asigna el rol Usuario de red de Compute (roles/compute.networkUser) a la cuenta de servicio Agente de servicio de Cloud Run ejecutando el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
    --role "roles/compute.networkUser"

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto.
    • PROJECT_NUMBER: el número de proyecto en el que despliega su servicio, trabajo o grupo de trabajadores de Cloud Run.

Desplegar un recurso de Cloud Run

En función del recurso de Cloud Run que tengas, consulta las instrucciones de una de las siguientes secciones:

Desplegar un servicio

La salida directa de VPC permite que tu servicio de Cloud Run envíe tráfico a una red de VPC sin un conector de acceso a VPC sin servidor. Los costes de red se reducen a cero al igual que el propio servicio. También puedes añadir etiquetas de red directamente en las revisiones de servicios de Cloud Run para disfrutar de una seguridad de red más granular, como aplicar reglas de cortafuegos de VPC.

Puedes configurar la salida de VPC directa con un servicio mediante laGoogle Cloud consola, la CLI de Google Cloud, YAML o Terraform.

Consola

  1. Ir a Cloud Run

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar y desplegar un servicio que ya tiene, haga clic en el servicio y, a continuación, en Editar y desplegar nueva revisión.

  3. Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio según sea necesario y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.

  4. Haz clic en la pestaña Redes.

  5. Haz clic en Conectarse a una VPC para el tráfico saliente.

  6. Haz clic en Enviar tráfico directamente a una VPC.

  7. En el campo Red, selecciona la red de VPC a la que quieras enviar tráfico.

  8. En el campo Subred, selecciona la subred de la que tu servicio recibe direcciones IP. Puedes desplegar varios servicios en la misma subred.

  9. Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o servicios. Las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como network-tag-2.

  10. En Enrutamiento del tráfico, seleccione una de las siguientes opciones:

    • Dirige solo las solicitudes a IP privadas a la VPC para enviar solo tráfico a direcciones internas a través de la red VPC.
    • Dirige todo el tráfico a la VPC para enviar todo el tráfico de salida a través de la red de VPC.
  11. Haz clic en Crear o en Implementar.

  12. Para verificar que tu servicio está en tu red VPC, haz clic en el servicio y, a continuación, en la pestaña Redes. La red y la subred se muestran en la tarjeta VPC.

    Ahora puedes enviar solicitudes desde tu servicio de Cloud Run a cualquier recurso de la red de VPC, tal como lo permitan tus reglas de firewall.

gcloud

Para desplegar un servicio de Cloud Run sin un conector desde la CLI de Google Cloud, sigue estos pasos:

  1. Actualiza los componentes de gcloud a la versión más reciente:

    gcloud components update
  2. Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:

    gcloud services enable compute.googleapis.com
    
  3. Despliega tu servicio de Cloud Run con el siguiente comando:

    gcloud run deploy SERVICE_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    Sustituye:

    • SERVICE_NAME con el nombre de tu servicio de Cloud Run.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
    • Opcional: SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
    • Opcional: NETWORK_TAG_NAMES con los nombres separados por comas de las etiquetas de red que quieras asociar a un servicio. En el caso de los servicios, las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como network-tag-2.
    • EGRESS_SETTING con un valor de ajuste de salida:
      • all-traffic: envía todo el tráfico saliente a través de la red VPC.
      • private-ranges-only: solo envía tráfico a direcciones internas a través de la red de VPC.
    • REGION con una región para tu servicio.
  4. Para verificar que tu servicio está en tu red de VPC, ejecuta el siguiente comando:

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    Sustituye:

    • SERVICE_NAME con el nombre de tu servicio.
    • REGION con la región de tu servicio que has especificado en el paso anterior.

    La salida debe contener el nombre de tu red, subred y ajuste de salida. Por ejemplo:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

Ahora puedes enviar solicitudes desde tu servicio de Cloud Run a cualquier recurso de la red de VPC, tal como lo permitan tus reglas de firewall.

YAML

  1. Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualice los siguientes atributos:

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Sustituye:

    • SERVICE_NAME con el nombre de tu servicio de Cloud Run. Los nombres de los servicios deben tener 49 caracteres como máximo y ser únicos por región y proyecto.
    • REGION por la región de tu servicio de Cloud Run, que debe coincidir con la de tu subred.
    • Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
    • Opcional: SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
    • Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un servicio. En el caso de los servicios, las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como network-tag-2.
    • EGRESS_SETTING con un valor de ajuste de salida:
      • all-traffic: envía todo el tráfico saliente a través de la red VPC.
      • private-ranges-only: solo envía tráfico a direcciones internas a través de la red de VPC.
    • IMAGE por la URL de la imagen de tu contenedor de servicio.

    También puedes especificar más configuración, como variables de entorno o límites de memoria.

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

  1. Añade lo siguiente a tu archivo main.tf:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Si quieres permitir el acceso al servicio sin autenticación, puedes hacerlo público.

Crear una tarea

La salida directa de VPC permite que tu trabajo de Cloud Run envíe tráfico a una red de VPC sin un conector de acceso a VPC sin servidor. También puedes añadir etiquetas de red directamente a los trabajos de Cloud Run para disfrutar de una seguridad de red más granular, como aplicar reglas de cortafuegos de VPC.

Puedes configurar la salida de VPC directa con un trabajo mediante laGoogle Cloud consola, la CLI de Google Cloud o YAML.

Consola

  1. Ir a Cloud Run

  2. Si vas a configurar un nuevo trabajo, haz clic en la pestaña Trabajos y rellena la página de configuración inicial del trabajo según sea necesario. Si vas a configurar un trabajo que ya existe, haz clic en él y, a continuación, en Editar.

  3. Haz clic en Contenedor, Variables y secretos, Conexiones y Seguridad para desplegar la página de propiedades del trabajo.

  4. Haz clic en la pestaña Conexiones.

  5. Haz clic en Conectarse a una VPC para el tráfico saliente.

  6. Haz clic en Enviar tráfico directamente a una VPC.

  7. En el campo Red, selecciona la red de VPC a la que quieras enviar el tráfico.

  8. En el campo Subred, selecciona la subred de la que tu tarea recibe direcciones IP. Puedes ejecutar varios trabajos en la misma subred.

  9. En Enrutamiento del tráfico, seleccione una de las siguientes opciones:

    • Dirige solo las solicitudes a IP privadas a la VPC para enviar solo tráfico a direcciones internas a través de la red VPC.
    • Dirige todo el tráfico a la VPC para enviar todo el tráfico de salida a través de la red de VPC.
  10. Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o servicios. Las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como network-tag-2.

  11. Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu trabajo o trabajos. En el caso de las tareas, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como network-tag-2.

  12. Haz clic en Crear o en Actualizar.

  13. Para verificar que tu trabajo está en tu red de VPC, haz clic en el trabajo y, a continuación, en la pestaña Configuración. La red y la subred se muestran en la tarjeta VPC.

    Ahora puedes ejecutar tu trabajo de Cloud Run y enviar solicitudes desde el trabajo a cualquier recurso de la red de VPC, según lo permitan tus reglas de cortafuegos.

gcloud

Para crear un trabajo de Cloud Run sin un conector desde Google Cloud CLI, sigue estos pasos:

  1. Actualiza los componentes de gcloud a la versión más reciente:

    gcloud components update
  2. Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:

    gcloud services enable compute.googleapis.com
    
  3. Crea un trabajo de Cloud Run con el siguiente comando:

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    Sustituye:

    • JOB_NAME con el nombre de tu trabajo de Cloud Run.
    • IMAGE_URL: una referencia a la imagen del contenedor. Por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red de VPC, una subred o ambas. Si solo especifica una red, la subred usará el mismo nombre que la red.
    • Opcional: SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
    • Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un trabajo. En el caso de los trabajos, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como network-tag-2.
    • EGRESS_SETTING con un valor de ajuste de salida:
      • all-traffic: envía todo el tráfico saliente a través de la red VPC.
      • private-ranges-only: solo envía tráfico a direcciones internas a través de la red de VPC.
    • REGION con una región para tu trabajo.
  4. Para verificar que el trabajo está en tu red de VPC, ejecuta el siguiente comando:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Sustituye:

    • JOB_NAME con el nombre del trabajo.
    • REGION con la región de tu trabajo que has especificado en el paso anterior.

    El resultado debe contener el nombre de tu red y subred. Por ejemplo:

    VPC network:
      Network:       default
      Subnet:        default
    

Ahora puedes ejecutar tu trabajo de Cloud Run y enviar solicitudes desde el trabajo a cualquier recurso de la red de VPC, según lo permitan tus reglas de cortafuegos.

YAML

  1. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Actualice los siguientes atributos:

    apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Sustituye:

    • JOB_NAME con el nombre de tu trabajo de Cloud Run. Los nombres de los trabajos deben tener 49 caracteres como máximo y ser únicos por región y proyecto.
    • REGION con la región de tu trabajo de Cloud Run, que debe coincidir con la región de tu subred.
    • Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
    • Opcional: SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
    • Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un trabajo. En el caso de los trabajos, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como network-tag-2.
    • EGRESS_SETTING con un valor de ajuste de salida:
      • all-traffic: envía todo el tráfico saliente a través de la red VPC.
      • private-ranges-only: solo envía tráfico a direcciones internas a través de la red de VPC.
    • IMAGE con la URL de la imagen del contenedor de tu trabajo.
  3. Crea o actualiza el trabajo con el siguiente comando:

    gcloud run jobs replace job.yaml

Desplegar un grupo de trabajadores

La salida directa de VPC permite que tu grupo de trabajadores de Cloud Run envíe tráfico a una red de VPC sin un conector de acceso a VPC sin servidor. Los costes de red se reducen a cero, al igual que el propio grupo de trabajadores. También puedes añadir etiquetas de red directamente en las revisiones de grupos de trabajadores de Cloud Run para disfrutar de una seguridad de red más granular, como aplicar reglas de cortafuegos de VPC.

Puedes configurar la salida directa de VPC con un grupo de trabajadores mediante la CLI de Google Cloud.

gcloud

Para implementar un grupo de trabajadores de Cloud Run sin un conector desde Google Cloud CLI, sigue estos pasos:

  1. Actualiza los componentes de gcloud a la versión más reciente:

    gcloud components update
  2. Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:

    gcloud services enable compute.googleapis.com
    
  3. Despliega tu grupo de trabajadores de Cloud Run con el siguiente comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
        --image=IMAGE_URL \
        --network=NETWORK \
        --subnet=SUBNET \
        --network-tags=NETWORK_TAG_NAMES \
        --vpc-egress=EGRESS_SETTING \
        --region=REGION

    Sustituye:

    • WORKER_POOL con el nombre de tu grupo de trabajadores de Cloud Run. Los nombres de los grupos de trabajadores deben tener 49 caracteres como máximo, usar un nombre único por región y proyecto, y no compartir el mismo nombre que un nombre de servicio de tu proyecto. Si el grupo de trabajadores aún no existe, este comando lo crea durante la implementación. Puedes omitir este parámetro por completo, pero se te pedirá el nombre del grupo de trabajadores si lo haces.
    • IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • Opcional:NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
    • Opcional: SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
    • Opcional: NETWORK_TAG_NAMES con los nombres separados por comas de las etiquetas de red que quieras asociar a un grupo de trabajadores. En el caso de los servicios, las etiquetas de red se especifican a nivel de revisión. Cada revisión de un grupo de trabajadores puede tener etiquetas de red diferentes, como network-tag-2.
    • EGRESS_SETTING con un valor de ajuste de salida:
      • all-traffic: envía todo el tráfico saliente a través de la red VPC.
      • private-ranges-only: solo envía tráfico a direcciones internas a través de la red de VPC.
    • REGION con una región para tu grupo de trabajadores.
  4. Para verificar que tu grupo de trabajadores está en tu red de VPC, ejecuta el siguiente comando:

    gcloud beta run worker-pools describe WORKER_POOL \
        --region=REGION

    Sustituye:

    • WORKER_POOL por el nombre de tu grupo de trabajadores.
    • REGION con la región del grupo de trabajadores que has especificado en el paso anterior.

    La salida debe contener el nombre de tu red, subred y ajuste de salida. Por ejemplo:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

Ahora puedes enviar solicitudes desde tu grupo de trabajadores de Cloud Run a cualquier recurso de la red VPC, según lo permitan tus reglas de firewall.

Configurar servicios y trabajos de pila dual

Para añadir una subred de doble pila con un intervalo IPv6 interno en un servicio o un trabajo de Cloud Run, consulta Configurar servicios y trabajos de doble pila.

Restringir el acceso con reglas de cortafuegos

Restringe el acceso a los recursos de una red de VPC mediante reglas de cortafuegos de VPC. Añade estas restricciones con una de las siguientes estrategias:

  • Crea una regla de cortafuegos de entrada que haga referencia a tu servicio o trabajo mediante el intervalo de direcciones IP de la subred.
  • Crea una regla de cortafuegos de salida que haga referencia a tu servicio o tarea.

    En la regla de firewall de salida, haz referencia a tu servicio o trabajo mediante la identidad de servicio de la cuenta de servicio vinculada, el intervalo de direcciones IP de la subred o las etiquetas de red asociadas.

Etiquetas de red de salida

Añade una capa adicional de seguridad de red usando etiquetas de red en las reglas de cortafuegos de salida.

Consola

Para asociar etiquetas de red con un servicio o un trabajo, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Cloud Run.

    Ir a Cloud Run

  2. Haga clic en el servicio o el trabajo con el que quiera asociar etiquetas de red y, a continuación, haga clic en Editar y desplegar nueva revisión para los servicios o en Editar para los trabajos.

  3. Haz clic en la pestaña Redes para ver los servicios o en la pestaña Conexiones para ver los trabajos.

  4. Asegúrate de haber seleccionado Conectar con una VPC para el tráfico saliente y Enviar tráfico directamente a una VPC.

  5. En el campo Subred, selecciona la subred de la que recibe direcciones IP tu servicio. Puedes implementar o ejecutar varios servicios o trabajos en la misma subred.

  6. En el campo Etiquetas de red, introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o trabajo.

  7. Haz clic en Implementar o Actualizar.

En el caso de los servicios, cada revisión puede tener un conjunto diferente de etiquetas de red, ya que estas se especifican a nivel de revisión. En el caso de los trabajos, una ejecución de trabajo tiene las mismas etiquetas de red que el trabajo cuando se creó la ejecución del trabajo.

gcloud

Para asociar etiquetas de red a un servicio o un trabajo, usa el comando gcloud run deploy:

gcloud run deploy SERVICE_JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --region=REGION

Haz los cambios siguientes:

  • SERVICE_JOB_NAME con el nombre de tu servicio o trabajo.
  • IMAGE_URL con la URL de la imagen del servicio o del trabajo.
  • NETWORK con el nombre de tu red de VPC.
  • SUBNET con el nombre de tu subred. Especifica una red VPC, una subred o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red. Puedes implementar o ejecutar varios servicios, trabajos o grupos de trabajadores en la misma subred.
  • NETWORK_TAG_NAMES con el nombre de tu etiqueta de red o una lista de etiquetas de red separadas por comas.
  • REGION con el nombre de tu región.

En el caso de los servicios, cada revisión puede tener un conjunto diferente de etiquetas de red, ya que estas se especifican a nivel de revisión. En el caso de los trabajos, una ejecución de trabajo tiene las mismas etiquetas de red que el trabajo cuando se creó la ejecución del trabajo.

Desconectar un recurso de Cloud Run

En función del recurso de Cloud Run que tengas, consulta las instrucciones de una de las siguientes secciones:

Desconectar un servicio

Consola

  • Para quitar tu servicio de la red de VPC, sigue estos pasos:

    1. Ir a Cloud Run

    2. Haz clic en el servicio que quieras quitar y, a continuación, en Editar y desplegar nueva revisión.

    3. Haz clic en la pestaña Redes.

    4. Desmarca Conectarse a una VPC para el tráfico saliente.

    5. Haz clic en Desplegar.

    6. Para comprobar que tu servicio ya no está en tu red de VPC, haz clic en la pestaña Redes. La red y la subred ya no aparecen en la tarjeta VPC.

  • Para quitar solo las etiquetas de red y mantener el servicio conectado a la red de VPC, sigue estos pasos:

    1. Haga clic en el servicio que contenga las etiquetas de red que quiera quitar y, a continuación, en Editar y desplegar nueva revisión.

    2. Haz clic en la pestaña Redes.

    3. Borra los nombres de las etiquetas de red que ya no quieras asociar a tu servicio.

    4. Haz clic en Desplegar.

gcloud

  • Para quitar tu servicio de la red de VPC, ejecuta el siguiente comando:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network
  • Para quitar solo las etiquetas de red y mantener el servicio conectado a la red VPC, ejecuta el siguiente comando:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network-tags

    Haz los cambios siguientes:

    • SERVICE_NAME: el nombre de tu servicio de Cloud Run.
    • REGION: la región de tu servicio de Cloud Run.

YAML

  • Para quitar tu servicio de la red de VPC, sigue estos pasos:

    1. Descarga la configuración YAML del servicio:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Elimina el siguiente contenido del archivo service.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Dónde

      • NETWORK: el nombre de tu red de VPC.
      • SUBNET: el nombre de tu subred.
      • Opcional: NETWORK_TAG_NAMES: los nombres de las etiquetas de red si las has asociado a un servicio.
    3. Despliega la revisión del servicio ejecutando el siguiente comando:

      gcloud run services replace service.yaml
  • Para quitar solo las etiquetas de red y mantener el servicio conectado a la red de VPC, sigue estos pasos:

    1. Descarga la configuración YAML del servicio:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Elimina la variable tags del contenido del archivo service.yaml y deja las variables network y subnetwork, tal como se muestra en el siguiente ejemplo:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Dónde

      • NETWORK: el nombre de tu red de VPC.
      • SUBNET: el nombre de tu subred.
    3. Despliega la revisión del servicio ejecutando el siguiente comando:

      gcloud run services replace service.yaml

Desconectar una tarea

Consola

  • Para quitar tu trabajo de la red de VPC, sigue estos pasos:

    1. Ir a Cloud Run

    2. Haz clic en el trabajo que quieras quitar y, a continuación, en Editar y desplegar nueva revisión.

    3. Haz clic en la pestaña Conexiones.

    4. Desmarca Conectarse a una VPC para el tráfico saliente.

    5. Haz clic en Actualizar.

    6. Para verificar que la tarea ya no está en tu red de VPC, haz clic en la pestaña Configuración. La red y la subred ya no aparecen en la tarjeta VPC.

  • Para quitar solo las etiquetas de red y mantener el trabajo conectado a la red VPC, haz lo siguiente:

    1. Haz clic en el trabajo que contenga las etiquetas de red que quieras quitar y, a continuación, haz clic en Editar y desplegar nueva revisión.

    2. Haz clic en la pestaña Conexiones.

    3. Borra los nombres de las etiquetas de red que ya no quieras asociar a tu trabajo.

    4. Haz clic en Actualizar.

gcloud

  • Para quitar el trabajo de la red de VPC, ejecuta el siguiente comando:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network
      
  • Para quitar solo las etiquetas de red y mantener el trabajo conectado a la red VPC, ejecuta el siguiente comando:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network-tags
      

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu tarea de Cloud Run.
    • REGION: la región de tu tarea de Cloud Run.

YAML

  • Para quitar tu trabajo de la red de VPC, sigue estos pasos:

    1. Descarga la configuración YAML del trabajo:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Elimina el siguiente contenido del archivo job.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Haz los cambios siguientes:

      • NETWORK: el nombre de tu red de VPC.
      • SUBNET: el nombre de tu subred.
      • Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red si las has asociado a un trabajo.
    3. Para actualizar el trabajo, ejecuta el siguiente comando:

      gcloud run jobs replace job.yaml
  • Para quitar solo las etiquetas de red y mantener el trabajo conectado a la red VPC, haz lo siguiente:

    1. Descarga la configuración YAML del trabajo:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Elimina la variable tags del contenido del archivo job.yaml y deja las variables network y subnetwork, tal como se muestra en el siguiente ejemplo:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Haz los cambios siguientes:

      • NETWORK: el nombre de tu red de VPC.
      • SUBNET: el nombre de tu subred.
    3. Para actualizar el trabajo, ejecuta el siguiente comando:

      gcloud run jobs replace job.yaml

Desconectar un grupo de trabajadores

gcloud

  • Para quitar el grupo de trabajadores de la red de VPC, ejecuta el siguiente comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network
  • Para quitar solo las etiquetas de red y mantener el grupo de trabajadores conectado a la red VPC, ejecuta el siguiente comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network-tags

    Haz los cambios siguientes:

    • WORKER_POOL: el nombre de tu grupo de trabajadores de Cloud Run.
    • REGION: la región de tu grupo de trabajadores de Cloud Run.

Solución de problemas

No se puede eliminar la subred

Para eliminar una subred, primero debes eliminar o volver a desplegar todos los recursos que la usen. Si Cloud Run usa una subred, desconecta el servicio o el trabajo de Cloud Run de la red de VPC o muévelo a otra subred antes de eliminar la subred.

La subred de salida de VPC directa se queda sin direcciones IPv4

Se produce el siguiente error al intentar implementar:

Instance failed to start because of insufficient free IP addresses in the
subnetwork SUBNET_ID when attempting to create an address in the
subnetwork. Please consider moving to a subnetwork with more available IP
addresses.

Si la subred de la red VPC se queda sin direcciones IPv4, Cloud Logging lo registra. Cuando esto ocurre, Cloud Run no puede iniciar más instancias de servicio ni tareas hasta que haya más direcciones IPv4 disponibles.

Para solucionar este problema, sigue las estrategias de agotamiento de direcciones IP.

Ver las direcciones IP asignadas

Para ver qué direcciones IP ha asignado Cloud Run, ve a la página de direcciones IP en la Google Cloud consola o ejecuta el siguiente comando desde la CLI de Google Cloud:

gcloud compute addresses list

Problemas con la MTU personalizada

Si tienes problemas con una MTU personalizada, asegúrate de usar el ajuste de MTU predeterminado de Cloud Run.