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
Si aún no tienes una red de VPC en tu proyecto, crea una.
Si usas una VPC compartida con servicios o trabajos de Cloud Run, consulta el artículo Conectarse a una red de VPC compartida.
Consulte las siguientes secciones de configuración de direcciones IP:
Asignación de direcciones IP para obtener información sobre cómo asignar direcciones IP de tu subred.
Estrategias de agotamiento de direcciones IP para usar intervalos de direcciones IP alternativos.
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ñalSIGCONT
después del evento. Una vez que el contenedor reciba la señalSIGCONT
, 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:
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íficacompute.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
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.
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.
Haz clic en la pestaña Redes.
Haz clic en Conectarse a una VPC para el tráfico saliente.
Haz clic en Enviar tráfico directamente a una VPC.
En el campo Red, selecciona la red de VPC a la que quieras enviar tráfico.
En el campo Subred, selecciona la subred de la que tu servicio recibe direcciones IP. Puedes desplegar varios servicios en la misma subred.
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
.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.
Haz clic en Crear o en Implementar.
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:
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:
gcloud services enable compute.googleapis.com
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 formatoLOCATION-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.
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
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
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.
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.
Añade lo siguiente a tu archivo
main.tf
:
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
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.
Haz clic en Contenedor, Variables y secretos, Conexiones y Seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
Haz clic en Conectarse a una VPC para el tráfico saliente.
Haz clic en Enviar tráfico directamente a una VPC.
En el campo Red, selecciona la red de VPC a la que quieras enviar el tráfico.
En el campo Subred, selecciona la subred de la que tu tarea recibe direcciones IP. Puedes ejecutar varios trabajos en la misma subred.
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.
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
.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
.Haz clic en Crear o en Actualizar.
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:
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:
gcloud services enable compute.googleapis.com
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.
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
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
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.
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:
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:
gcloud services enable compute.googleapis.com
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.
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:
En la Google Cloud consola, ve a la página Cloud Run.
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.
Haz clic en la pestaña Redes para ver los servicios o en la pestaña Conexiones para ver los trabajos.
Asegúrate de haber seleccionado Conectar con una VPC para el tráfico saliente y Enviar tráfico directamente a una VPC.
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.
En el campo Etiquetas de red, introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o trabajo.
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:
Haz clic en el servicio que quieras quitar y, a continuación, en Editar y desplegar nueva revisión.
Haz clic en la pestaña Redes.
Desmarca Conectarse a una VPC para el tráfico saliente.
Haz clic en Desplegar.
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:
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.
Haz clic en la pestaña Redes.
Borra los nombres de las etiquetas de red que ya no quieras asociar a tu servicio.
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:
Descarga la configuración YAML del servicio:
gcloud run services describe SERVICE_NAME --format export > service.yaml
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.
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:
Descarga la configuración YAML del servicio:
gcloud run services describe SERVICE_NAME --format export > service.yaml
Elimina la variable
tags
del contenido del archivoservice.yaml
y deja las variablesnetwork
ysubnetwork
, 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.
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:
Haz clic en el trabajo que quieras quitar y, a continuación, en Editar y desplegar nueva revisión.
Haz clic en la pestaña Conexiones.
Desmarca Conectarse a una VPC para el tráfico saliente.
Haz clic en Actualizar.
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:
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.
Haz clic en la pestaña Conexiones.
Borra los nombres de las etiquetas de red que ya no quieras asociar a tu trabajo.
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:
Descarga la configuración YAML del trabajo:
gcloud run jobs describe JOB_NAME --format export > job.yaml
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.
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:
Descarga la configuración YAML del trabajo:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Elimina la variable
tags
del contenido del archivojob.yaml
y deja las variablesnetwork
ysubnetwork
, 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.
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.