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

Antes de comenzar

Si usas una VPC compartida, consulta Conéctate a una red de VPC compartida para configurar el proyecto host antes de continuar.

Creación de un conector de acceso a VPC sin servidores

Para enviar solicitudes a tu red de VPC y recibir las respuestas correspondientes sin usar la Internet pública, debes usar un conector de Acceso a VPC sin servidores.

Puedes crear un conector con Google Cloud Console, la herramienta de línea de comandos de gcloud o Terraform:

Console

  1. Asegúrate de que esté habilitada la API de Acceso a VPC sin servidores en el proyecto.

    Habilitar API

  2. Dirígete a la página de descripción general de Acceso a VPC sin servidores.

    Ir a Acceso a VPC sin servidores

  3. Haz clic en Crear conector.

  4. En el campo Nombre, ingresa un nombre para el conector.

  5. En el campo Región, selecciona una región para el conector. Debe coincidir con la región del servicio sin servidores.

    Si tu servicio se encuentra en la región us-central o europe-west, usa us-central1 o europe-west1.

  6. En el campo Red, selecciona la red de VPC a la que conectarás el conector.

  7. Haz clic en el menú desplegable Subred:

    • Si usas tu propia subred (obligatorio para la VPC compartida), selecciona la subred /28 que deseas usar en el conector.
    • Si no usas una VPC compartida y prefieres que el conector cree una subred en lugar de crear una explícitamente, selecciona Rango de IP personalizado en el menú desplegable y, luego, en el campo Rango de IP, ingresa la primera dirección en un rango de IP interna /28 con CIDR sin reservar. Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC. Por ejemplo, 10.8.0.0 (/28) funcionará en la mayoría de los proyectos nuevos.

  8. (Opcional) Si deseas configurar las opciones de escalamiento para tener control adicional del conector, haz clic en Mostrar la configuración de escalamiento a fin de mostrar el formulario de escalamiento:

    1. Configura la cantidad mínima y máxima de instancias para tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se escala horizontalmente al máximo especificado si el uso del tráfico lo requiere, pero el conector no se reduce cuando el tráfico disminuye. Debes usar valores que se encuentren entre 2 y 10.
    2. En el menú desplegable Tipo de instancia, elige el tipo de máquina que se usará para el conector o usa el tipo e2-micro predeterminado. Observa la barra lateral de costos a la izquierda cuando elijas el tipo de instancia, en la que se muestran las estimaciones de costo y ancho de banda.
  9. Haga clic en Crear.

  10. Aparecerá una marca de verificación verde junto al nombre del conector cuando esté listo para usar.

gcloud

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

    gcloud components update
    
  2. Asegúrate de que esté habilitada la API de Acceso a VPC sin servidores en el proyecto:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Si usas tu propia subred (obligatorio para VPC compartida), crea un conector con el siguiente comando:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances MIN \
    --max-instances MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type MACHINE_TYPE
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: un nombre para tu conector
    • REGION: Es una región para el conector. Debe coincidir con la región del servicio sin servidores. Si tu servicio está en la región us-central o europe-west, usa us-central1 o europe-west1.
    • SUBNET: tu propia subred dedicada “/28” que no usa ningún otro recurso. El valor que se debe proporcionar es el nombre de la subred
    • HOST_PROJECT_ID: el ID del proyecto host. Suministra este valor solo si usas una VPC compartida
    • MIN: Es la cantidad mínima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre 2 y 10. La ruta predeterminada es 2.
    • MAX: Es la cantidad máxima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre 2 y 10. El valor predeterminado es 10. Si el tráfico lo requiere, el conector se escalará horizontalmente hasta el [MAX] de instancias, pero luego no se reducirá la escala.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4

      Tipo de máquina Rango de capacidad de procesamiento estimado en Mbps Precio
      (instancia del conector más costos de salida de red)
      f1-micro 100-500 Precios de f1-micro
      e2-micro 200-1000 Precios de e2-micro
      e2-standard-4 3200-16000 Precios estándar de e2

    Por ejemplo, si configuras MACHINE_TYPE como f1-micro, la capacidad de procesamiento estimada de tu conector será de 100 Mbps en el valor predeterminado MIN y de 500 Mbps en el valor MAX predeterminado.

    Para obtener más detalles y ver los argumentos opcionales, consulta la referencia de gcloud.

  4. Si no usas una VPC compartida y deseas proporcionar un rango de IP personalizado en lugar de usar una subred, crea un conector con el siguiente comando:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: un nombre para tu conector
    • VPC_NETWORK: la red de VPC a la que conectarás el conector
    • REGION: Es una región para el conector. Debe coincidir con la región del servicio sin servidores. Si tu servicio se encuentra en la región us-central o europe-west, usa us-central1 o europe-west1.
    • IP_RANGE: una red IP interna no reservada. Se requiere un valor “/28” de espacio no asignado. El valor proporcionado es la red en notación CIDR (10.8.0.0/28). Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC. Por ejemplo, 10.8.0.0/28 funciona en la mayoría de los proyectos nuevos.

    Para obtener más detalles y argumentos opcionales, como los controles de la capacidad de procesamiento, consulta la referencia de gcloud.

  5. Verifica que tu conector tenga el estado READY antes de usarlo:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: Es el nombre de tu conector. Este es el nombre que especificaste en el paso anterior
    • REGION: Es la región del conector. Esta es la región que especificaste en el paso anterior

    El resultado debe contener la línea state: READY.

Terraform

Puedes usar un recurso de Terraform para habilitar la API de vpcaccess.googleapis.com.

resource "google_project_service" "project" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Puedes usar módulos de Terraform para crear una red y subred de VPC y, luego, crear el conector.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
}

Configura un servicio para usar un conector

Después de crear un conector de acceso a VPC sin servidores, debes configurar el servicio de Cloud Run para usar el conector. Puedes hacerlo mediante Cloud Console, la herramienta de línea de comandos de gcloud o el archivo YAML cuando creas un servicio nuevo o implementas un 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 Implementar y editar una nueva revisión.

  3. Si estás configurando un servicio nuevo, llena la página de configuración inicial del servicio como desees y haz clic en Siguiente > Configuración avanzada para acceder a la página de configuración del servicio.

  4. Haz clic en la pestaña Conexiones.

    image

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

  6. Haz clic en Crear o Implementar.

gcloud

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
  • SERVICE por el nombre del 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 de tu servicio de Cloud Run.
    • Reemplaza CONNECTOR_NAME por el nombre de tu conector.
  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud beta run services replace service.yaml

Restringe el acceso a los recursos de VPC

Puedes restringir el acceso de tu conector a la red de VPC mediante las reglas de firewall.

Cuando te conectas a una red de VPC compartida, las reglas de firewall no se crean de forma automática. Un usuario con la función de administrador de red en el proyecto host establece reglas de firewall cuando configura el proyecto host.

Cuando te conectas a una red de VPC independiente, se crea de forma automática una regla de firewall implícita con prioridad de 1,000 en la red de VPC para permitir la entrada de la subred del conector o el rango de IP personalizado a todos los destinos en la red de VPC. La regla de firewall implícita no se puede ver en Google Cloud Console y solo existe mientras exista el conector asociado. Si no quieres que tu conector pueda acceder a todos los destinos de la red de VPC, puedes restringir su acceso.

Para restringir el acceso del conector, crea reglas de entrada en el recurso de destino o crea reglas de salida en el conector de VPC.

Restringe el acceso con reglas de entrada

Elige las etiquetas de red o los rangos de CIDR que sirven para controlar el tráfico de entrada a tu red de VPC.

Etiquetas de red

En los siguientes pasos, se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función de las etiquetas de red del conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Deniega el tráfico del conector en toda tu red de VPC.

    Crea una regla de firewall de entrada con una prioridad inferior a 1,000 en la red de VPC para denegar la entrada de la etiqueta de red del conector. Esto anula la regla de firewall implícita que crea el acceso a VPC sin servidores en la red de VPC de forma predeterminada.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: un número entero de 1 a 999, inclusive. Por ejemplo, 990.
  3. Permite el tráfico del conector al recurso que debe recibir tráfico del conector.

    Usa las marcas allow y target-tags para crear una regla de firewall de entrada orientada al recurso en tu red de VPC a la que deseas que acceda el conector de VPC. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico. Si usaste la etiqueta de red única en el paso anterior, usa la etiqueta de red única.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • RESOURCE_TAG: la etiqueta de red para el recurso de VPC al que deseas que acceda tu conector de VPC.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Rango de CIDR

En los siguientes pasos, se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función del rango de CIDR del conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Deniega el tráfico del conector en toda tu red de VPC.

    Crea una regla de firewall de entrada con una prioridad inferior a 1,000 en tu red de VPC para denegar la entrada desde el rango de CIDR del conector. Esto anula la regla de firewall implícita que crea el acceso a VPC sin servidores en la red de VPC de forma predeterminada.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: Un número entero de 1 a 999. Por ejemplo, 990.
  3. Permite el tráfico del conector al recurso que debe recibir tráfico del conector.

    Usa las marcas allow y target-tags para crear una regla de firewall de entrada orientada al recurso en tu red de VPC a la que deseas que acceda el conector de VPC. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • VPC_CONNECTOR_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • RESOURCE_TAG: la etiqueta de red para el recurso de VPC al que deseas que acceda tu conector de VPC.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Restringe el acceso con reglas de salida

En los siguientes pasos, se muestra cómo crear reglas de salida para restringir el acceso al conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Rechaza el tráfico de salida proveniente de tu conector.

    Crea una regla de firewall de salida en tu conector de acceso a VPC sin servidores para evitar que envíe tráfico de salida.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: Un número entero de 1 a 999. Por ejemplo, 990.
  3. Permite el tráfico de salida cuando el destino se encuentra en el rango CIDR al que deseas que acceda tu conector.

    Usa las marcas allow y destination-ranges a fin de crear una regla de firewall que permita el tráfico de salida desde el conector para un rango específico de destinos. Establece el rango de destinos en el rango de CIDR del recurso en tu red de VPC a la que deseas que tu conector pueda acceder. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • RESOURCE_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico. Si usaste la etiqueta de red única en el paso anterior, usa la etiqueta de red única.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Administra tu conector

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, si deseas que las reglas de firewall de tu red de VPC impidan que el tráfico saliente de Cloud Run llegue a hosts peligrosos o no deseados, debes enrutar todas las solicitudes salientes de tu servicio a través de un conector de acceso a VPC sin servidores.

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 a través 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 mediante Cloud Console, la herramienta de línea de comandos de gcloud 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 Implementar y editar una nueva revisión.

  3. Si estás configurando un servicio nuevo, llena la página de configuración inicial del servicio como desees y haz clic en Siguiente > Configuración avanzada para acceder a la página de configuración del servicio.

  4. Haz clic en la pestaña Conexiones.

    image

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

  6. Haz clic en Crear o Implementar.

gcloud

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

gcloud 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-traffic: 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 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 de tu servicio de Cloud Run.
    • 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-traffic: 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 comando siguiente:

    gcloud beta run services replace service.yaml

Visualiza la configuración del conector de Acceso a VPC sin servidores

Puedes ver la configuración actual del conector de Acceso a VPC sin servidores para el servicio mediante Cloud Console o la herramienta de línea de comandos de gcloud:

Console

  1. Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones (Revisions).

  4. En el panel de detalles de la derecha, la configuración del conector de Acceso a VPC sin servidores se muestra en la pestaña Conexiones.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Ubica la configuración del conector de Acceso a VPC sin servidores en la configuración que se muestra.

Desconecta un servicio de una red de VPC

Puedes desconectar un servicio de tu red de VPC mediante Cloud Console o la herramienta de línea de comandos de gcloud:

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 Implementar y editar una nueva revisión.

  3. Si estás configurando un servicio nuevo, llena la página de configuración inicial del servicio como desees y haz clic en Siguiente > Configuración avanzada para acceder a la página de configuración del servicio.

  4. Haz clic en la pestaña Conexiones.

    image

  5. En el campo Conector de VPC, selecciona Ninguno para desconectar tu servicio de una red de VPC.

  6. Haz clic en Crear o Implementar.

gcloud

Usa el comando gcloud run services update con la siguientes marca:

gcloud run services update SERVICE --clear-vpc-connector
  • SERVICE por el nombre del servicio

Los conectores continúan generando cargos, incluso si no tienen tráfico y están desconectados. Para obtener detalles, consulta Precios. Si ya no necesitas el conector, asegúrate de borrarlo para evitar que continúe la facturación.

Borra un conector

Antes de borrar un conector, asegúrate de que ningún servicio esté conectado a él.

Para los usuarios de VPC compartida que configuraron conectores en el proyecto host de la VPC compartida (ya no se recomienda), puedes usar el comando gcloud compute networks vpc-access connectors describe para enumerar los proyectos, que son servicios que usan un conector determinado.

Para borrar un conector, usa Cloud Console o la herramienta de línea de comandos de gcloud:

Console

  1. Ve a la página de Descripción general del Acceso a VPC sin servidores en Cloud Console:

    Ir a Acceso a VPC sin servidores

  2. Selecciona el conector que quieres borrar.

  3. Haz clic en Borrar.

gcloud

Usa el siguiente comando de gcloud para borrar un conector:

gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION

Reemplaza lo siguiente:

  • CONNECTOR_NAME por el nombre del conector que quieres borrar
  • REGION por la región donde se encuentra el conector

Soluciona problemas

Permisos de las cuentas de servicio

Para realizar operaciones en el proyecto de Cloud, el Acceso a VPC sin servidores usa la cuenta de servicio del agente de servicio de Acceso a VPC sin servidores. La dirección de correo electrónico de esta cuenta de servicio tiene el siguiente formato:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

De forma predeterminada, esta cuenta de servicio tiene la función de agente de servicio de Acceso a VPC sin servidores (roles/vpcaccess.serviceAgent). Las operaciones del Acceso a VPC sin servidores pueden fallar si cambias los permisos de esta cuenta.

Errores

Si la creación de un conector produce un error, prueba lo siguiente:

  • Especifica un rango de IP internas de RFC 1918 que no se superponga con ninguna reserva de dirección IP existente en la red de VPC.
  • Otorga al proyecto permiso para usar las imágenes de VM de Compute Engine del proyecto con el ID serverless-vpc-access-images. Consulta Configura restricciones de acceso a imágenes para obtener información sobre cómo actualizar las políticas de la organización según corresponda.
  • Establece la política de la organización constraints/compute.vmCanIpForward para permitir que las VM habiliten el reenvío de IP.

Si especificaste un conector, pero aún no puedes acceder a los recursos de la red de VPC, haz lo siguiente:

  • Asegúrate de que no haya ninguna regla de firewall en la red de VPC con una prioridad inferior a 1,000 que rechace la entrada desde el rango de IP del conector.

Próximos pasos