Conectarse a una red VPC

En esta página se muestra cómo usar el acceso a VPC sin servidor para conectar tu aplicación del entorno estándar de App Engine directamente a tu red de VPC, lo que permite acceder a instancias de máquina virtual de Compute Engine, instancias de Memorystore y cualquier otro recurso con una dirección IP interna.

de Acceso a VPC sin servidor.

Antes de empezar

Crear un conector de Acceso a VPC sin servidor

Para enviar solicitudes a tu red de VPC y recibir las respuestas correspondientes sin usar Internet pública, puedes usar un conector de acceso a VPC sin servidor.

Si tu conector se encuentra en el mismo proyecto que su red de VPC, puedes crear un conector con una subred que ya tengas o crear un conector y una subred.

Si tu conector se encuentra en un proyecto de servicio y utiliza una red de VPC compartida, el conector y su red de VPC asociada estarán en proyectos diferentes. Cuando un conector y su red de VPC están en proyectos diferentes, un administrador de la red de VPC compartida debe crear la subred del conector en la red de VPC compartida antes de que puedas crear el conector y debes crear el conector con una subred que ya exista.

Para obtener más información sobre los requisitos de las subredes, consulta los requisitos de las subredes de conectores.

Para obtener información sobre el rendimiento de los conectores, incluidos el tipo de máquina y el escalado, consulta Rendimiento y escalado.

Puedes crear un conector mediante la Google Cloud consola, la CLI de Google Cloud o Terraform.

Consola

  1. Ve a la página de resumen de Acceso a VPC sin servidor.

    Ir a Acceso a VPC sin servidor

  2. Haz clic en Crear conector.

  3. En el campo Nombre, introduzca un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine, así como los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.

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

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

  5. En el campo Red, selecciona la red de VPC a la que quieras adjuntar el conector.

  6. En el campo Subred, seleccione una de las siguientes opciones:

    • Crear un conector con una subred: seleccione la subred en el campo Subred.

    • Crear un conector y una subred: selecciona Intervalo de IP personalizado en el campo Subred. A continuación, introduce la primera dirección de un /28CIDR que no esté en uso (por ejemplo, 10.8.0.0/28) para usarla como intervalo de direcciones IPv4 principal de una nueva subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".

  7. (Opcional) Para definir opciones de escalado y tener más control sobre el conector, haz clic en Mostrar ajustes de escalado para que se muestre el formulario de escalado.

    1. Define el número mínimo y máximo de instancias de tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se amplía hasta el máximo especificado si el uso del tráfico lo requiere, pero no se reduce cuando el tráfico disminuye. Debes usar valores entre 2 y 10.
    2. En el menú Tipo de instancia, elige el tipo de máquina que se va a usar para el conector o usa el valor predeterminado e2-micro. Fíjate en la barra lateral de costes de la derecha cuando elijas el tipo de instancia, que muestra las estimaciones de ancho de banda y costes.
  8. Haz clic en Crear.

  9. Cuando el conector esté listo para usarse, aparecerá una marca de verificación de color verde junto a su nombre.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud components update
  3. Asegúrate de que la API Acceso a VPC sin servidor esté habilitada en tu proyecto:

    gcloud services enable vpcaccess.googleapis.com
  4. Crea el conector con una de las siguientes opciones:

    Para obtener más información y argumentos opcionales, consulta la gcloudreferencia.

    • Crea un conector con una subred que ya tengas:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Haz los cambios siguientes:

      • CONNECTOR_NAME: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.
      • REGION: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es en us-central o europe-west, usa us-central1 o europe-west1.
      • SUBNET_NAME: el nombre de la subred.
      • HOST_PROJECT_ID: el ID del proyecto host de la VPC compartida. Si el conector y la subred ya creada se encuentran en el mismo proyecto, omite la marca --subnet-project.
      • MIN: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre 2(el valor predeterminado) y 9.
      • MAX: número máximo de instancias que se van a usar en el conector. Usa un número entero entre 3 y 10 (el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.
      • MACHINE_TYPE: debe ser uno de los siguientes valores: f1-micro, e2-micro o e2-standard-4.
    • Crear un conector y una subred:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Haz los cambios siguientes:

      • CONNECTOR_NAME: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.
      • REGION: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es en us-central o europe-west, usa us-central1 o europe-west1.
      • VPC_NETWORK: el nombre de la red VPC a la que quieres adjuntar el conector. El conector y la red VPC deben estar en el mismo proyecto.
      • IP_RANGE: proporciona un CIDR /28 que no esté en uso (por ejemplo, 10.8.0.0/28) para usarlo como intervalo de direcciones IPv4 principal de una subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".
      • MIN: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre 2(el valor predeterminado) y 9.
      • MAX: número máximo de instancias que se van a usar en el conector. Usa un número entero entre 3 y 10 (el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.
      • MACHINE_TYPE: debe ser uno de los siguientes valores: f1-micro, e2-micro o e2-standard-4.
  5. Verifica que el conector esté en el estado READY antes de usarlo:

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

    Haz los cambios siguientes:

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

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

  6. Terraform

    Puede usar un recurso de Terraform para habilitar la API 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 VPC y una subred, y, a continuación, crear el conector.

    module "test-vpc-module" {
      source       = "terraform-google-modules/network/google"
      version      = "~> 11.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"
      version    = "~> 11.0"
      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
      ]
    }

Configurar un servicio para que use un conector

Una vez que hayas creado un conector de acceso a VPC sin servidor, debes configurar cada servicio de tu aplicación de App Engine que quieras conectar a tu red de VPC.

Para especificar un conector para un servicio en tu aplicación, sigue estos pasos:

  1. Para usar Acceso a VPC sin servidor, deja de usar el servicio de obtención de URLs de App Engine. Acceso a VPC sin servidor no admite la obtención de URLs y las solicitudes realizadas mediante la obtención de URLs ignorarán la configuración de Acceso a VPC sin servidor. En su lugar, establece conexiones salientes con sockets.

  2. Añade el campo vpc_access_connector al archivo app.yaml de tu servicio:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Donde PROJECT_ID es el ID de tu proyecto, Google Cloud es la región en la que se encuentra tu conector y REGION es el nombre de tu conector.CONNECTOR_NAME

  3. Despliega el servicio:

    gcloud app deploy
    

Una vez que hayas desplegado el servicio, podrá enviar solicitudes a direcciones IP internas para acceder a los recursos de tu red de VPC.

Restringir el acceso a los recursos de VPC

Reglas de cortafuegos necesarias para los conectores de proyectos de servicio

Si creas un conector en una red VPC independiente o en el proyecto host de una red VPC compartida, Google Cloud crea todas las reglas de cortafuegos necesarias para que el conector funcione. Para obtener más información, consulta Reglas de cortafuegos para conectores en redes de VPC independientes o proyectos host de VPC compartida.

Sin embargo, si creas un conector en un proyecto de servicio y el conector tiene como destino una red de VPC compartida en el proyecto del host, debes añadir reglas de cortafuegos para permitir el tráfico necesario para el funcionamiento del conector desde los siguientes intervalos:

La infraestructura de Google subyacente a Cloud Run, las funciones de Cloud Run y el entorno estándar de App Engine usa estos intervalos. Todas las solicitudes de estas direcciones IP proceden de la infraestructura de Google para asegurarse de que cada recurso sin servidor solo se comunica con el conector al que está conectado.

También debes permitir el tráfico de la subred del conector a los recursos de tu red de VPC.

Para llevar a cabo estos pasos, debes tener uno de los siguientes roles en el proyecto host:

Para una configuración básica, aplica las reglas para permitir que los recursos sin servidor de cualquier proyecto de servicio conectado a la red de VPC compartida envíen solicitudes a cualquier recurso de la red.

Para aplicar estas reglas, ejecuta los siguientes comandos en el proyecto host:

  1. Crea reglas de cortafuegos que permitan que las solicitudes de la infraestructura sin servidor de Google y las comprobaciones del estado lleguen a todos los conectores de la red. En estos comandos, los puertos UDP y TCP se usan como proxies y para las comprobaciones de estado HTTP, respectivamente. No cambies los puertos especificados.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    Sustituye VPC_NETWORK por el nombre de la red VPC a la que quieras conectar tu conector.

  2. Crea una regla de cortafuegos de entrada en tu red de VPC para permitir las solicitudes de los conectores que tengan como destino esta red:

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    Esta regla da al conector acceso a todos los recursos de la red. Para limitar los recursos a los que puede acceder tu entorno sin servidor mediante el acceso a VPC sin servidor, consulta Restringir el acceso de la VM del conector a los recursos de la red de VPC.

Crear reglas de cortafuegos para conectores específicos

Si sigues el procedimiento que se describe en Reglas de cortafuegos obligatorias para los conectores de proyectos de servicio, se crearán reglas de cortafuegos que se aplicarán a todos los conectores, tanto a los actuales como a los que se creen en el futuro. Si no quieres que esto ocurra y, en su lugar, quieres crear reglas solo para conectores específicos, puedes acotar las reglas para que se apliquen únicamente a esos conectores.

Para limitar el ámbito de las reglas a conectores específicos, puedes usar uno de los siguientes mecanismos:

  • Etiquetas de red: cada conector tiene dos etiquetas de red: vpc-connector y vpc-connector-REGION-CONNECTOR_NAME. Usa el segundo formato para limitar el ámbito de tus reglas de cortafuegos a un conector específico.
  • Intervalos de IP: úsalo solo para las reglas de salida, ya que no funciona con las reglas de entrada. Puedes usar el intervalo de IPs de la subred del conector para limitar el ámbito de tus reglas de cortafuegos a un solo conector de VPC.

Restringir el acceso de la VM del conector a los recursos de la red de VPC

Puedes restringir el acceso de tu conector a los recursos de su red de VPC de destino mediante reglas de cortafuegos de VPC o reglas de políticas de cortafuegos. Puedes aplicar estas restricciones mediante una de las siguientes estrategias:

  • Crea reglas de entrada cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector y cuyos orígenes representen las VMs del conector.
  • Crea reglas de salida cuyos destinos representen las VMs del conector y cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector.

En los siguientes ejemplos se ilustra cada estrategia.

Restringir el acceso mediante reglas de entrada

Elige etiquetas de red o intervalos CIDR para controlar el tráfico entrante a tu red de VPC.

Etiquetas de red

En los pasos siguientes 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 que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):

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

    Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde la etiqueta de red del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu 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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, deny-vpc-connector.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

      Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos: ah, all, esp, icmp, ipip y sctp.

    • VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico.

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

        Sustituye:

        • REGION: la región del conector que quieras restringir
        • CONNECTOR_NAME: el nombre del conector que quieras restringir

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

    • VPC_NETWORK: el nombre de tu red de VPC

    • PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.

  3. Permite el tráfico del conector al recurso que debería recibirlo.

    Usa las marcas allow y target-tags para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado 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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

    • VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico. Debe coincidir con la etiqueta de red que ha especificado en el paso anterior.

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

        Sustituye:

        • REGION: la región del conector que quieras restringir
        • CONNECTOR_NAME: el nombre del conector que quieras restringir

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

    • VPC_NETWORK: el nombre de tu red de VPC

    • RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC

    • PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.

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

Intervalo CIDR

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

  1. Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):

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

    Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde el intervalo CIDR del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu red de VPC de forma predeterminada.

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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, deny-vpc-connector.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

      Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos: ah, all, esp, icmp, ipip y sctp.

    • VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir

    • VPC_NETWORK: el nombre de tu red de VPC

    • PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.

  3. Permite el tráfico del conector al recurso que debería recibirlo.

    Usa las marcas allow y target-tags para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado 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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

    • VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso estás restringiendo

    • VPC_NETWORK: el nombre de tu red de VPC

    • RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC

    • PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.

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

Restringir el acceso mediante reglas de salida

En los siguientes pasos se muestra cómo crear reglas de salida para restringir el acceso a los conectores.

  1. Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):

  2. Deniega el tráfico de salida de tu conector.

    Crea una regla de cortafuegos de salida en tu conector de acceso a VPC sin servidor para evitar que envíe tráfico saliente a cualquier destino, excepto las respuestas establecidas.

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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, deny-vpc-connector.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

      Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos: ah, all, esp, icmp, ipip y sctp.

    • VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico.

    • VPC_NETWORK: el nombre de tu red de VPC

    • PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.

  3. Permite el tráfico de salida cuando el destino esté en el intervalo CIDR al que quieras que acceda tu conector.

    Usa las marcas allow y destination-ranges para crear una regla de cortafuegos que permita el tráfico de salida de tu conector a un intervalo de destino específico. Define el intervalo de destino como el intervalo CIDR del recurso de tu red de VPC al que quieras que pueda acceder tu conector. Asigne a esta regla una prioridad inferior a la de la regla que ha creado 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

    Haz los cambios siguientes:

    • RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son tcp y udp. Por ejemplo, tcp:80,udp permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marca allow.

    • RESOURCE_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir

    • VPC_NETWORK: el nombre de tu red de VPC

    • VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico. Si ha usado la etiqueta de red única en el paso anterior, use la etiqueta de red única.

    • PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.

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

Gestionar tu conector

Controlar el tráfico de salida de un servicio

De forma predeterminada, solo las solicitudes a direcciones IP internas y nombres de DNS internos se enrutan a través de un conector de Acceso a VPC sin servidor. Puedes especificar el ajuste de salida de tu servicio en el archivo app.yaml.

Los ajustes de salida no son compatibles con el servicio de obtención de URLs. Si aún no lo has hecho, inhabilitar el valor predeterminado de URL Fetch y dejar de usar explícitamente la biblioteca urlfetch. Si se usa la biblioteca urlfetch, se ignoran los ajustes de salida y las solicitudes no se enrutarán a través de un conector de Acceso a VPC sin servidor.

Para configurar el comportamiento de salida de tu servicio de App Engine, sigue estos pasos:

  1. Añade el atributo egress_setting al campo vpc_access_connector del archivo app.yaml de tu servicio:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    Sustituye:

    • PROJECT_ID con el ID de tu proyecto Google Cloud
    • REGION con la región en la que se encuentra tu conector
    • CONNECTOR_NAME con el nombre del conector
    • EGRESS_SETTING con una de las siguientes opciones:
      • private-ranges-only Predeterminado. Solo se enrutan a tu red de VPC las solicitudes a intervalos de direcciones IP RFC 1918 y RFC 6598 o nombres de DNS internos. El resto de las solicitudes se dirigen directamente a Internet.
      • all-traffic Todas las solicitudes salientes de tu servicio se dirigen a tu red de VPC. Las solicitudes están sujetas a las reglas de cortafuegos, DNS y enrutamiento de tu red de VPC. Ten en cuenta que, si enrutas todas las solicitudes salientes a tu red de VPC, aumentará la cantidad de tráfico de salida que gestiona el conector de Acceso a VPC sin servidor y se te cobrará.
  2. Despliega el servicio:

    gcloud app deploy
    

Desconectar un servicio de una red de VPC

Para desconectar un servicio de una red de VPC, elimina el campo vpc_access_connector del archivo app.yaml y vuelve a implementar el servicio.

Los conectores siguen generando cargos aunque no tengan tráfico y estén desconectados. Para obtener más información, consulta los precios. Si ya no necesitas el conector, elimínalo para evitar que se te siga facturando.

Actualizar un conector

Puede actualizar y monitorizar los siguientes atributos de su conector mediante la Google Cloud consola, la CLI de Google Cloud o la API:

  • Tipo de máquina (instancia)
  • Número mínimo y máximo de instancias
  • Rendimiento reciente, número de instancias y uso de CPU

Actualizar el tipo de máquina

Consola

  1. Ve a la página de resumen de Acceso a VPC sin servidor.

    Ir a Acceso a VPC sin servidor

  2. Selecciona el conector que quieras editar y haz clic en Editar.

  3. En la lista Tipo de instancia, selecciona el tipo de máquina (instancia) que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para actualizar el tipo de máquina del conector, ejecuta el siguiente comando en el terminal:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    Sustituye lo siguiente:

    • CONNECTOR_NAME: el nombre de tu conector
    • REGION: el nombre de la región de tu conector
    • MACHINE_TYPE: el tipo de máquina que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.

Reducir el número mínimo y máximo de instancias

Para reducir el número mínimo y máximo de instancias, debes hacer lo siguiente:

  1. Crea un conector con los valores que prefieras.
  2. Actualiza tu servicio o función para usar el nuevo conector.
  3. Elimina el conector antiguo cuando hayas migrado su tráfico.

Aumentar el número mínimo y máximo de instancias

Consola

  1. Ve a la página de resumen de Acceso a VPC sin servidor.

    Ir a Acceso a VPC sin servidor

  2. Selecciona el conector que quieras editar y haz clic en Editar.

  3. En el campo Instancias mínimas, selecciona el número mínimo de instancias que prefieras.

    El valor más pequeño posible de este campo es el valor actual. El valor más alto posible de este campo es el valor actual del campo Número máximo de instancias menos 1. Por ejemplo, si el valor del campo Máximo de instancias es 8, el valor más alto posible del campo Mínimo de instancias es 7.

  4. En el campo Número máximo de instancias, selecciona el número máximo de instancias que prefieras.

    El valor más pequeño posible de este campo es el valor actual. El valor máximo posible de este campo es 10.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para aumentar el número mínimo o máximo de instancias del conector, ejecuta el siguiente comando en tu terminal:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    Sustituye lo siguiente:

    • CONNECTOR_NAME: el nombre de tu conector
    • REGION: el nombre de la región de tu conector
    • MIN_INSTANCES: el número mínimo de instancias que prefieras.
      • El valor más pequeño posible de este campo es el valor actual de min_instances. Para ver el valor actual, consulte Buscar los valores de atributo actuales.
      • El valor más alto posible para este campo es el valor actual de max_instances menos 1, ya que min_instances debe ser inferior a max_instances. Por ejemplo, si max_instances es 8, el valor más alto posible de este campo es 7. Si tu conector usa el valor predeterminado max-instances de 10, el valor máximo posible de este campo es 9. Para encontrar el valor de max-instances, consulte Buscar los valores de atributo actuales.
    • MAX_INSTANCES:

      • El valor más pequeño posible de este campo es el valor actual de max_instances. Para ver el valor actual, consulte Buscar los valores de atributo actuales.
      • El valor máximo posible de este campo es 10.

      Si solo quiere aumentar el número mínimo de instancias, pero no el máximo, debe especificar el número máximo de instancias. Por el contrario, si solo quiere actualizar el número máximo de instancias, pero no el mínimo, debe especificar el número mínimo de instancias. Para mantener el número mínimo o máximo de instancias en su valor actual, especifica dicho valor. Para consultar su valor actual, consulte Buscar los valores de atributo actuales.

Buscar los valores de atributo actuales

Para encontrar los valores de atributo actuales de tu conector, ejecuta lo siguiente en tu terminal:

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Sustituye lo siguiente:

  • CONNECTOR_NAME: el nombre de tu conector
  • REGION: el nombre de la región de tu conector
  • PROJECT: el nombre de tu Google Cloud proyecto

Monitorizar el uso de conectores

Monitorizar el uso a lo largo del tiempo puede ayudarte a determinar cuándo ajustar la configuración de un conector. Por ejemplo, si la utilización de la CPU aumenta de forma repentina, puede probar a aumentar el número máximo de instancias para obtener mejores resultados. O bien, si estás alcanzando el límite de rendimiento, puedes cambiar a un tipo de máquina más grande.

Para ver gráficos del rendimiento, el número de instancias y las métricas de utilización de CPU del conector a lo largo del tiempo mediante la consola, sigue estos pasos: Google Cloud

  1. Ve a la página de resumen de Acceso a VPC sin servidor.

    Ir a Acceso a VPC sin servidor

  2. Haz clic en el nombre del conector que quieras monitorizar.

  3. Seleccione el número de días que quiere mostrar (entre 1 y 90).

  4. En el gráfico Rendimiento, mantén el puntero sobre el gráfico para ver el rendimiento reciente del conector.

  5. En el gráfico Número de instancias, coloque el puntero sobre el gráfico para ver el número de instancias que ha usado recientemente el conector.

  6. En el gráfico Uso de la CPU, mantén el puntero sobre el gráfico para ver el uso reciente de la CPU del conector. El gráfico muestra el uso de la CPU distribuido entre las instancias de los percentiles 50, 95 y 99.

Eliminar un conector

Antes de eliminar un conector, debes quitarlo de los recursos sin servidor que aún lo utilicen. Si eliminas un conector antes de quitarlo de tus recursos sin servidor, no podrás eliminar la red de VPC más adelante.

Los usuarios de la VPC compartida que configuren conectores en el proyecto host de la VPC compartida pueden usar el comando gcloud compute networks vpc-access connectors describe para enumerar los proyectos en los que haya recursos sin servidor que usen un conector determinado.

Para eliminar un conector, usa la consola de Google Cloud o Google Cloud CLI:

Consola

  1. Ve a la página de resumen de Acceso a VPC sin servidor en laGoogle Cloud consola:

    Ir a Acceso a VPC sin servidor

  2. Selecciona el conector que quieras eliminar.

  3. Haz clic en Eliminar.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Usa el siguiente comando gcloud para eliminar un conector:

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

    Haz los cambios siguientes:

    • CONNECTOR_NAME con el nombre del conector que quieras eliminar
    • REGION por la región en la que se encuentra el conector

Solución de problemas

Permisos de cuenta de servicio

Para realizar operaciones en tu proyecto de Google Cloud , Acceso a VPC sin servidor usa la cuenta de servicio Agente de servicios de Acceso a VPC sin servidor. La dirección de correo 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 el rol Agente de servicio de acceso a VPC sin servidor (roles/vpcaccess.serviceAgent). Las operaciones de acceso a VPC sin servidor pueden fallar si cambias los permisos de esta cuenta.

Rendimiento de red deficiente o uso elevado de la CPU inactiva

Usar un solo conector para miles de instancias puede provocar una degradación del rendimiento y un aumento del uso de la CPU en reposo. Para solucionar este problema, fragmenta tus servicios entre varios conectores.

Problemas con la MTU personalizada

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

Errores

Error que indica que la cuenta de servicio necesita el rol de agente de servicio

Si usas la restricción de política de organización Restrict Resource Service Usage para bloquear Cloud Deployment Manager (deploymentmanager.googleapis.com), es posible que veas el siguiente mensaje de error:

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

Define la política de la organización para quitar Deployment Manager de la lista de denegación o añadirlo a la lista de permitidos.

Error al crear el conector

Si se produce un error al crear un conector, prueba lo siguiente:

  • Especifica un intervalo de IP internas RFC 1918 que no se solape con ninguna reserva de direcciones IP de la red de VPC.
  • Concede a tu proyecto permiso para usar imágenes de máquinas virtuales de Compute Engine del proyecto con el ID serverless-vpc-access-images. Para obtener más información sobre cómo actualizar la política de tu organización, consulta el artículo Definir restricciones de acceso a imágenes.

No se puede acceder a los recursos

Si has especificado un conector, pero sigues sin poder acceder a los recursos de tu red de VPC, asegúrate de que no haya reglas de cortafuegos en tu red de VPC con una prioridad inferior a 1000 que denieguen el acceso desde el intervalo de direcciones IP de tu conector.

Si configuras un conector en un proyecto de servicio de VPC compartida, asegúrate de que tus reglas de cortafuegos permitan la entrada desde tu infraestructura sin servidor al conector.

Error de conexión rechazada

Si recibes errores connection refused o connection timeout que degradan el rendimiento de la red, es posible que tus conexiones crezcan sin límite en las invocaciones de tu aplicación sin servidor. Para limitar el número máximo de conexiones que se usan por instancia, usa una biblioteca de cliente que admita grupos de conexiones. Para ver ejemplos detallados de cómo usar los grupos de conexiones, consulta Gestionar conexiones de bases de datos.

Error de recurso no encontrado

Cuando eliminas una red de VPC o una regla de cortafuegos, es posible que veas un mensaje similar al siguiente: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Para obtener información sobre este error y su solución, consulta el artículo Error "Resource not found" (Recurso no encontrado) en la documentación sobre reglas de cortafuegos de VPC.

Pasos siguientes