Configura conectores en el proyecto host de VPC compartida

Si tu organización usa una VPC compartida, puedes configurar conectores de Acceso a VPC sin servidores en el proyecto de servicio o en el proyecto host. En esta guía, se muestra cómo configurar un conector en el proyecto de servicio.

Si necesitas configurar un conector en un proyecto de servicio, consulta la sección sobre cómo configurar conectores en proyectos de servicio. Para obtener más información sobre las ventajas de cada método, consulta Conéctate a una red de VPC compartida.

Antes de comenzar

  1. Verifica los roles de Identity and Access Management (IAM) para la cuenta que usas en la actualidad. La cuenta activa debe tener los siguientes roles en el proyecto host:

  2. Selecciona el proyecto host en tu entorno preferido.

Console

  1. Ve al panel de la consola de Google Cloud.

    Ir al panel de la consola de Google Cloud

  2. En la barra de menú que se encuentra en la parte superior del panel, haz clic en el menú desplegable del proyecto y selecciona el proyecto host.

gcloud

Para configurar el proyecto predeterminado en gcloud CLI en el proyecto host, ejecuta el siguiente comando en la terminal:

gcloud config set project HOST_PROJECT_ID

Reemplaza lo siguiente:

  • HOST_PROJECT_ID: el ID del proyecto host de la VPC compartida

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

Para enviar solicitudes a la red de VPC y recibir las respuestas correspondientes, debes crear un conector de acceso a VPC sin servidores. Puedes crear un conector con la consola de Google Cloud, Google Cloud CLI o Terraform:

Console

  1. Habilita la API de acceso a VPC sin servidores para tu 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. El nombre debe seguir la convención de nombres de Compute Engine y tener menos de 21 caracteres. Los guiones (-) cuentan 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:

    Selecciona una subred /28 sin usar.

    • El conector debe usar las subredes exclusivamente. No las pueden usar otros recursos, como VM, Private Service Connect o balanceadores de cargas.
    • 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. Ejecuta el siguiente comando en gcloud CLI:
      gcloud compute networks subnets describe SUBNET_NAME
      
      Reemplaza SUBNET_NAME por el nombre de tu subred.
  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 escala horizontalmente hasta el máximo especificado a medida que el tráfico aumenta, pero no se reduce la escala cuando el tráfico disminuye. Debes usar valores entre 2 y 10, y el valor MIN debe ser menor que el valor MAX.
    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. Haz 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. Habilita la API de acceso a VPC sin servidores para tu proyecto:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Crea un conector de Acceso a VPC sin servidores:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region=REGION \
    --subnet=SUBNET \
    --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 El nombre debe seguir la convención de nombres de Compute Engine y tener menos de 21 caracteres. Los guiones (-) cuentan 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 balanceadores de cargas.
      • Para confirmar que tu subred no se usa para Private Service Connect or Cloud Load Balancing, verifica que la subred purpose sea PRIVATE a través de la ejecución del siguiente comando en gcloud CLI:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Reemplaza lo siguiente:
        • SUBNET_NAME: El nombre de tu subred
    • HOST_PROJECT_ID: El ID del proyecto host
    • 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. 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      = "~> 9.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    = "~> 9.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
  ]
}

Proporciona acceso al conector

Para proporcionar acceso al conector, otorga el rol de IAM Usuario de acceso a VPC sin servidores en el proyecto host a la principal que implementa tu servicio de App Engine.

Console

  1. Abre la página de IAM.

    Ir a IAM

  2. Haz clic en el menú desplegable del proyecto y selecciona el proyecto host.

  3. Haz clic en Agregar.

  4. En el campo Principales nuevas, agrega la principal que implementa tu servicio de App Engine.

  5. En el campo Función, selecciona Usuario de Acceso a VPC sin servidores.

  6. Haz clic en Save (Guardar).

gcloud

Ejecuta el siguiente comando en tu terminal:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.user

Reemplaza lo siguiente:

  • HOST_PROJECT_ID: el ID del proyecto host de la VPC compartida.
  • PRINCIPAL: la principal que implementa tu servicio de App Engine. Obtén más información sobre la marca --member.

Haz que el conector sea detectable

Para ver el conector, las principales necesitan ciertos roles de visualización en el proyecto host y en el proyecto de servicio. Para que el conector aparezca cuando las principales vean los conectores disponibles en la consola de Google Cloud o desde su terminal, agrega roles de IAM a las principales que implementen los servicios de App Engine.

Otorga roles de IAM en el proyecto host

En el proyecto host, otorga a las principales que implementan los servicios de App Engine el rol de Visualizador de acceso a VPC sin servidores (vpcaccess.viewer).

Console

  1. Abre la página de IAM.

    Ir a IAM

  2. Haz clic en el menú desplegable del proyecto y selecciona el proyecto host.

  3. Haz clic en Agregar.

  4. En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal que debería poder ver el conector del proyecto de servicio. Puedes ingresar varios correos electrónicos en este campo.

  5. En el campo Rol, selecciona Visualizador de acceso a VPC sin servidores.

  6. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando en tu terminal:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.viewer

Reemplaza lo siguiente:

  • HOST_PROJECT_ID: el ID del proyecto host de la VPC compartida.
  • PRINCIPAL: la principal que implementa los servicios de App Engine. Obtén más información sobre la marca --member.

Otorga roles de IAM en el proyecto de servicio

En el proyecto de servicio, otorga a las principales que implementan los servicios de App Engine el rol de Visualizador de red de Compute (compute.networkViewer).

Console

  1. Abre la página de IAM.

    Ir a IAM

  2. Haz clic en el menú desplegable del proyecto y selecciona el proyecto de servicio.

  3. Haz clic en Agregar.

  4. En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal que debería poder ver el conector del proyecto de servicio. Puedes ingresar varios correos electrónicos en este campo.

  5. En el campo Rol, selecciona Visualizador de red de Compute.

  6. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando en tu terminal:

gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/compute.networkViewer

Reemplaza lo siguiente:

  • SERVICE_PROJECT_ID: el ID del proyecto de servicio
  • PRINCIPAL: la principal que implementa los servicios de App Engine. Obtén más información sobre la marca --member.

Configura el servicio para usar un conector

Para cada servicio de App Engine que requiera acceso a tu VPC compartida, debes especificar el conector del servicio. En los siguientes pasos, se muestra cómo configurar el servicio para usar un conector.

  1. Inhabilita la configuración predeterminada de recuperación de URL y deja de usar de forma explícita la biblioteca urlfetch. El Acceso a VPC sin servidores no es compatible con el servicio de recuperación de URL.

  2. Agrega el elemento vpc_access_connector al archivo app.yaml del servicio:

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

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID: el ID del proyecto host de la VPC compartida
    • REGION: la región del conector
    • CONNECTOR_NAME: el nombre del conector
  3. Implementa el servicio:

    gcloud app deploy

Después de la implementación, tu servicio puede enviar solicitudes a tu red de VPC compartida y recibir las respuestas correspondientes.

Próximos pasos