Conectarse a una red de VPC

Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

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

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, Google Cloud CLI 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. Esto debe cumplir con la convención de nombres de Compute Engine, con la restricción adicional de que debe tener menos de 21 caracteres y guiones (-), lo que cuenta como dos caracteres.

  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 una VPC compartida, que requiere que uses tu propia subred, selecciona una subred de /28 sin usar.

      • El conector debe usar las subredes exclusivamente. No las pueden usar otros recursos, como VM, Private Service Connect o el balanceo de cargas HTTP(S) interno.
      • A fin de confirmar que tu subred no se usa para Private Service Connect o el balanceo de cargas HTTP(S) interno, verifica que la subred purpose sea PRIVATE mediante la ejecución del siguiente comando en la CLI de gcloud:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Reemplazar:
        • SUBNET_NAME: El nombre de tu subred
    • 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 derecha 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 una VPC compartida, que requiere que uses tu propia subred, 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 Esto debe cumplir con la convención de nombres de Compute Engine, con la restricción adicional de que debe tener menos de 21 caracteres y guiones (-), lo que cuenta como dos caracteres.
    • REGION: una región para el conector, que 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.
    • SUBNET: Es el nombre de una subred /28 sin usar.
      • El conector debe usar las subredes exclusivamente. No las pueden usar otros recursos, como VM, Private Service Connect o el balanceo de cargas HTTP(S) interno.
      • A fin de confirmar que tu subred no se usa para Private Service Connect o el balanceo de cargas HTTP(S) interno, verifica que la subred purpose sea PRIVATE mediante la ejecución del siguiente comando en la CLI de gcloud:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Reemplazar:
        • SUBNET_NAME: El nombre de tu 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 9. El valor predeterminado es 2. Para obtener más información sobre el escalamiento del conector, consulta Capacidad de procesamiento y escalamiento.
    • MAX: Es la cantidad máxima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre 3 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. Para obtener más información sobre el escalamiento del conector, consulta Capacidad de procesamiento y escalamiento.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4. Para obtener información sobre la capacidad de procesamiento del conector, incluidos el tipo de máquina y el escalamiento, consulta Capacidad de procesamiento y escalamiento.

    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 Esto debe cumplir con la convención de nombres de Compute Engine, con la restricción adicional de que debe tener menos de 21 caracteres y guiones (-), lo que cuenta como dos caracteres.
    • 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" "vpcaccess-api" {
  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 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

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 hacer esto mediante la consola de Google Cloud, Google Cloud CLI 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. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedor, conexiones, seguridad para expandir 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 us-docker.pkg.dev/cloudrun/container/hello: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 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
          name: REVISION

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio de Cloud Run.
    • CONNECTOR_NAME por el nombre de tu conector.
    • REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
      • Comienza con SERVICE-
      • Solo contiene letras minúsculas, números y -
      • No termina con -
      • No supera los 63 caracteres
  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud run services replace service.yaml

Terraform

Puedes usar un recurso de Terraform a fin de crear un servicio y configurarlo para que use tu conector.

# Cloud Run service
resource "google_cloud_run_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    spec {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
        resources {
          limits = {
            cpu = "1000m"
            memory = "512M"
          }
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    metadata {
      annotations = {
        # Limit scale up to prevent any cost blow outs!
        "autoscaling.knative.dev/maxScale" = "5"
        # Use the VPC Connector
        "run.googleapis.com/vpc-access-connector" = google_vpc_access_connector.connector.name
        # all egress from the service should go through the VPC Connector
        "run.googleapis.com/vpc-access-egress" = "all-traffic"
      }
    }
  }
  autogenerate_revision_name = true
}

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 con conectores en los proyectos de servicio, las reglas de firewall no se crean automáticamente. Un usuario con el rol 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 o a una red de VPC compartida que tiene el conector en el proyecto host, se crea automáticamente una regla de firewall implícita con prioridad de 1,000 en la red de VPC para permitir la entrada desde la subred del conector o un rango de IP personalizado hacia 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 \
    --rules=PROTOCOL \
    --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.
    • PROTOCOL: uno o varios protocolos que deseas permitir desde el conector de VPC. Debes especificar uno o más de ah, all, esp, icmp, ipip, sctp, tcp, udp o un número de protocolo IP entre 0 y 255. Por ejemplo, tcp:80,icmp permite el tráfico de TCP a través del puerto 80 y el tráfico de ICMP. 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 universal si quieres restringir el acceso a todos los conectores (incluidos los que se creen en el futuro) o la etiqueta de red única si deseas restringir el acceso a un conector específico.

      • Etiqueta de red universal: vpc-connector
      • Etiqueta de red única: vpc-connector-REGION-CONNECTOR_NAME

        Reemplaza lo siguiente:

        • REGION: Es la región del conector que quieres restringir.
        • CONNECTOR_NAME: Es el nombre del conector que quieres restringir.

      Para obtener más información sobre las etiquetas de red del conector, consulta Etiquetas de red.

    • VPC_NETWORK es el nombre de tu red de VPC.

    • PRIORITY: un número entero del 1 al 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=PROTOCOL \
    --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.
    • PROTOCOL: uno o varios protocolos que deseas permitir desde el conector de VPC. Debes especificar uno o más de ah, all, esp, icmp, ipip, sctp, tcp, udp o un número de protocolo IP entre 0 y 255. Por ejemplo, tcp:80,icmp permite el tráfico de TCP a través del puerto 80 y el tráfico de ICMP. 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 universal si quieres restringir el acceso a todos los conectores (incluidos los que se creen en el futuro) o la etiqueta de red única si deseas restringir el acceso a un conector específico. Debe coincidir con la etiqueta de red que especificaste en el paso anterior.

      • Etiqueta de red universal: vpc-connector
      • Etiqueta de red única: vpc-connector-REGION-CONNECTOR_NAME

        Reemplaza lo siguiente:

        • REGION: Es la región del conector que quieres restringir.
        • CONNECTOR_NAME: Es el nombre del conector que quieres restringir.

      Para obtener más información sobre las etiquetas de red del conector, consulta Etiquetas de red.

    • 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 \
    --rules=<_1, PROTOCOL> \
    --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 del 1 al 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=PROTOCOL \
    --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.
    • PROTOCOL: uno o varios protocolos que deseas permitir desde el conector de VPC. Debes especificar uno o más de ah, all, esp, icmp, ipip, sctp, tcp, udp o un número de protocolo IP entre 0 y 255. Por ejemplo, tcp:80,icmp permite el tráfico de TCP a través del puerto 80 y el tráfico de ICMP. 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 \
    --rules=PROTOCOL \
    --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.
    • PROTOCOL: uno o varios protocolos que deseas permitir desde el conector de VPC. Debes especificar uno o más de ah, all, esp, icmp, ipip, sctp, tcp, udp o un número de protocolo IP entre 0 y 255. Por ejemplo, tcp:80,icmp permite el tráfico de TCP a través del puerto 80 y el tráfico de ICMP. 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.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: Un número entero del 1 al 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=PROTOCOL \
    --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.
    • PROTOCOL: uno o varios protocolos que deseas permitir desde el conector de VPC. Debes especificar uno o más de ah, all, esp, icmp, ipip, sctp, tcp, udp o un número de protocolo IP entre 0 y 255. Por ejemplo, tcp:80,icmp permite el tráfico de TCP a través del puerto 80 y el tráfico de ICMP. 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 eviten 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 una VPC sin servidores. Conector de acceso.

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 la consola de Google Cloud, Google Cloud CLI 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. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedor, conexiones, seguridad para expandir 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 us-docker.pkg.dev/cloudrun/container/hello: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 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
          name: REVISION

    Reemplaza lo siguiente:

    • SERVICE por el nombre del servicio de Cloud Run
    • 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.
    • 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.
      • REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
        • Comienza con SERVICE-
        • Solo contiene letras minúsculas, números y -
        • No termina con -
        • No supera los 63 caracteres
  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud 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 la consola de Google Cloud 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 a 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 la consola de Google Cloud o Google Cloud CLI:

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. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedor, conexiones, seguridad para expandir 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
  • Reemplaza SERVICE por el nombre de tu 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 se te siga facturando.

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 la consola de Google Cloud o la CLI de Google Cloud:

Console

  1. Ve a la página de descripción general de Acceso a VPC sin servidores en la consola de Google Cloud:

    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 es el nombre del conector que quieres borrar.
  • REGION es 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 servicio de 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.

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