Conecta a una red de VPC

En esta página, se muestra cómo usar el Acceso a VPC sin servidores para conectar un servicio de Cloud Run (completamente administrado) directamente a tu red de VPC, lo que permite el acceso a instancias de VM de Compute Engine, instancias de Memorystore y cualquier otro recurso con dirección IP interna.

Para usar el acceso a VPC sin servidores, primero debes crear un conector de acceso a VPC sin servidores a fin de controlar la comunicación con tu red de VPC. Después de crear un conector, configura tu servicio de Cloud Run (completamente administrado) para usar el conector.

Crea un conector de acceso a VPC sin servidores

Para obtener instrucciones detalladas sobre cómo crear conectores de acceso a VPC sin servidores, consulta Crea un conector.

Configura un servicio para usar un conector

Puedes configurar un servicio para usar un conector de Cloud Console, la línea de comandos o el archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. Ir a Cloud Run

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en Edit and Deploy New Revision.

  3. En Configuración avanzada, haz clic en Conexiones.

    imagen

  4. En el campo Conector de VPC (VPC Connector), selecciona el conector que usarás o selecciona Ninguno (None) para desconectar tu servicio de una red de VPC.

  5. Haz clic en Crear o Implementar.

Línea de comandos

Para especificar un conector durante la implementación, usa la marca --vpc-connector:

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • Reemplaza SERVICE por el nombre de tu servicio.
  • Reemplaza IMAGE_URL por una referencia a la imagen de contenedor, como gcr.io/myproject/my-image:latest.
  • Reemplaza CONNECTOR_NAME por el nombre de tu conector.

Para conectar, actualizar o quitar un conector de un servicio existente, usa el comando gcloud run services update con cualquiera de las siguientes marcas, según sea necesario:

Por ejemplo, para adjuntar o actualizar un conector, haz lo siguiente:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • Reemplaza SERVICE por el nombre de tu servicio.
  • Reemplaza CONNECTOR_NAME por el nombre de tu conector.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Agrega o actualiza el atributo run.googleapis.com/vpc-access-connector en el atributo annotations, en el atributo de nivel superior spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • Reemplaza SERVICE por el nombre del servicio de Cloud Run (completamente administrado).
    • Reemplaza CONNECTOR_NAME por el nombre de tu conector.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml

Conéctate a una red de VPC compartida

Si tu organización usa una VPC compartida, un servicio de Cloud Run (completamente administrado) en un proyecto de servicio de VPC compartida puede conectarse a una red de VPC compartida después de configurar algunos parámetros en el proyecto host de la VPC compartida.

  1. Asegúrate de que un administrador del proyecto host complete la configuración descrita en Usa una red de VPC compartida. Esta configuración incluye crear un conector de acceso a VPC sin servidores en el proyecto host y adjuntarlo a la red de VPC compartida.
  2. Habilita la API de acceso a VPC sin servidores en el proyecto de servicio:

    Habilitar API

  3. Una vez que se completa la configuración del proyecto host, cuando implementas o actualizas un servicio de Cloud Run (completamente administrado) en tu proyecto de servicio, puedes especificar el conector del proyecto host mediante el nombre completamente calificado del conector. Por ejemplo:

    gcloud run deploy SERVICE --image IMAGE_URL \
    --vpc-connector projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME

    De este modo, se conecta el servicio a la red de VPC compartida.

Controla el tráfico de salida desde un servicio

De forma predeterminada, solo las solicitudes a las direcciones IP internas y a los nombres de DNS internos se enrutan a través de un conector de Acceso a VPC sin servidores. Sin embargo, en algunos casos, es posible que desees que todas las solicitudes salientes del servicio se enruten a tu red de VPC, por ejemplo, para evitar el tráfico saliente a hosts peligrosos o no deseados con las reglas de firewall de tu red.

Para controlar las solicitudes salientes de salida desde tu servicio, puedes configurar la salida de VPC con una de las siguientes opciones:

  • Enrutar solo las solicitudes a IP privadas por medio del conector de VPC: opción predeterminada. Solo las solicitudes a los rangos de direcciones IP RFC 1918 y RFC 6598, o a nombres de DNS internos se enrutan a la red de VPC. Todas las demás solicitudes se enrutan directamente a Internet.
  • Enrutar todo el tráfico por medio del conector de VPC: todas las solicitudes salientes del servicio se enrutan a la red de VPC. Las solicitudes cumplirán con las reglas de firewall, DNS y enrutamiento de la red.

Puedes especificar una configuración de salida de VPC desde Cloud Console, la línea de comandos o el archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. Ir a Cloud Run

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en Edit and Deploy New Revision.

  3. En Configuración avanzada, haz clic en Conexiones.

    imagen

  4. Después de seleccionar un conector de VPC, selecciona Enrutar solo las solicitudes a IP privadas por medio del conector de VPC o Enrutar todo el tráfico por medio del conector de VPC.

  5. Haz clic en Crear o Implementar.

Línea de comandos

Para especificar una configuración de salida, usa la marca --vpc-egress. Puedes especificar una configuración de salida durante la implementación:

gcloud beta run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • Reemplaza SERVICE por el nombre de tu servicio.
  • Reemplaza IMAGE_URL por una referencia a la imagen de contenedor, como gcr.io/myproject/my-image:latest.
  • Reemplaza CONNECTOR_NAME por el nombre de tu conector.
  • Reemplaza EGRESS_SETTING por un valor de configuración de salida:
    • all: Envía todo el tráfico saliente por medio del conector.
    • private-ranges-only: Envía solo el tráfico a direcciones internas por medio del conector de VPC.

También puedes actualizar un servicio existente y cambiar la configuración de salida:

gcloud beta run services update SERVICE --vpc-egress EGRESS_SETTING

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Agrega o actualiza el atributo run.googleapis.com/vpc-access-egress en el atributo annotations, en el atributo de nivel superior spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
    • Reemplaza SERVICE por el nombre del servicio de Cloud Run (completamente administrado).
    • Reemplaza CONNECTOR_NAME por el nombre de tu conector. El atributo run.googleapis.com/vpc-access-connector es obligatorio cuando se especifica una configuración de salida.
    • Reemplaza EGRESS_SETTING por uno de los siguientes valores:
      • all: Envía todo el tráfico saliente por medio del conector.
      • private-ranges-only: Envía solo el tráfico a direcciones internas por medio del conector de VPC.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml

Próximos pasos