Conecta a una red de VPC

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

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

Crea un conector de acceso a VPC sin servidores

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

Configura un servicio para usar un conector

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

Console

  1. Ir a Cloud Run

  2. Haz clic en Crear servicio si deseas conectar un servicio nuevo que implementarás en una red de VPC. Si quieres conectar un servicio existente, haz clic en el servicio y, luego, en Implementar y editar una nueva revisión.

  3. Haz clic en Mostrar la configuración avanzada y ve a la pestaña Conexiones.

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

  5. Haz clic en Crear o Implementar.

Línea de comandos

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

gcloud run deploy SERVICE --image gcr.io/PROJECT_ID/IMAGE --vpc-connector CONNECTOR_NAME
  • Reemplaza SERVICE por el nombre de tu servicio.
  • Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.
  • Reemplaza IMAGE por el nombre de tu imagen.
  • Reemplaza CONNECTOR_NAME por el nombre de tu conector.

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

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

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

YAML

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

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

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

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

    gcloud beta run services replace service.yaml

Conexión a una red de VPC compartida

Si configuraste una VPC compartida, sigue estos pasos para conectar un servicio a una red de VPC compartida:

  1. Crea un conector de acceso a VPC sin servidores en el proyecto host de la VPC compartida.
  2. En los proyectos de servicio de la VPC compartida en los que quieras implementar servicios de Cloud Run (completamente administrado), habilita las API de Cloud Run y de acceso a VPC sin servidores:

    Habilita las API

  3. Otorga permisos a los servicios de Cloud Run (completamente administrado) en proyectos de servicio para usar conectores del proyecto host:

    Console

    1. Busca la dirección del agente de servicios de Cloud Run del proyecto de servicio. Aparece en la página de IAM en Cloud Console y tiene el siguiente formato:

      service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

      También puedes encontrar el número de proyecto del proyecto de servicio en la página Configuración del proyecto.

    2. Ve a la página de IAM en el proyecto host de la VPC compartida:

      Ir a IAM

    3. Haz clic en Agregar.

    4. En el campo Miembros nuevos, ingresa la dirección del agente de servicios de Cloud Run del proyecto de servicio.

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

    6. Haz clic en Guardar. Repite estos pasos para varios proyectos de servicio según sea necesario.

    gcloud

    1. Encuentra el número del proyecto de servicio mediante la ejecución del siguiente comando, en el que SERVICE_PROJECT_ID es el ID del proyecto de servicio:

      gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)"
      
    2. Otorga al agente de servicios de Cloud Run del proyecto de servicio los permisos adecuados en el proyecto host:

      gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
      --role roles/vpcaccess.user
      

      En el ejemplo anterior, HOST_PROJECT_ID es el ID del proyecto host de la VPC compartida, y SERVICE_PROJECT_NUMBER es el número de proyecto del proyecto de servicio del paso anterior.

    Repite estos pasos para varios proyectos de servicio según sea necesario.

  4. En los proyectos de servicio, cuando implementas un servicio de Cloud Run (completamente administrado), especifica el nombre completamente calificado del conector del proyecto host:

    projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME