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
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:
Selecciona el proyecto host en tu entorno preferido.
Consola
Abre el panel de la consola de Google Cloud.
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 la CLI de gcloud 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:
Consola
Habilita la API de acceso a VPC sin servidores para tu proyecto.
Dirígete a la página de descripción general de Acceso a VPC sin servidores.
Haz clic en Crear conector.
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.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
oeurope-west
, usaus-central1
oeurope-west1
.En el campo Red, selecciona la red de VPC a la que conectarás el conector.
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
seaPRIVATE
mediante la ejecución del siguiente comando en la CLI de gcloud:gcloud compute networks subnets describe SUBNET_NAME
ReemplazaSUBNET_NAME
por el nombre de la subred.
(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:
- 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
y10
, y el valorMIN
debe ser menor que el valorMAX
. - 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.
- 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
Haz clic en Crear.
Aparecerá una marca de verificación verde junto al nombre del conector cuando esté listo para usar.
gcloud
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Habilita la API de acceso a VPC sin servidores para tu proyecto:
gcloud services enable vpcaccess.googleapis.com
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ónus-central
oeurope-west
, usaus-central1
oeurope-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.
- 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
seaPRIVATE
mediante la ejecución del siguiente comando en la CLI de gcloud:gcloud compute networks subnets describe SUBNET_NAME
Reemplaza lo siguiente:SUBNET_NAME
: El nombre de tu subred
HOST_PROJECT_ID
: El ID del proyecto hostMIN
: Es la cantidad mínima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre2
y9
. El valor predeterminado es2
. 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 entre3
y10
. El valor predeterminado es10
. 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
oe2-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
.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 anteriorREGION
: 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
.
Puedes usar módulos de Terraform para crear una red y subred de VPC y, luego, crear el conector.
Habilita Cloud Run para el proyecto de servicio
Habilita la API de Cloud Run para el proyecto de servicio. Esto es necesario para agregar roles de IAM en pasos posteriores y que el proyecto de servicio use Cloud Run.
Console
Abre la página de la API de Cloud Run.
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 de servicio.
Haga clic en Habilitar.
gcloud
Ejecuta el siguiente comando en tu terminal:
gcloud services enable run.googleapis.com --project=SERVICE_PROJECT_ID
Reemplaza lo siguiente:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio
Proporciona acceso al conector
Para proporcionar acceso al conector, otorga al proyecto de servicio Agente de servicio de Cloud Run el rol de IAM del Usuario de Acceso a VPC sin servidores en el proyecto host.
Console
Abre la página de IAM.
Haz clic en el menú desplegable del proyecto y selecciona el proyecto host.
Haga clic en Agregar.
En el campo Principales nuevas, ingresa la dirección de correo electrónico del agente de servicio de Cloud Run para el servicio de Cloud Run:
service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
Reemplaza lo siguiente:
SERVICE_PROJECT_NUMBER
: el número de proyecto asociado con el proyecto de servicio. Es diferente del ID del proyecto. Puedes encontrar el número de proyecto en la página Configuración del proyecto del proyecto de servicio en la consola de Google Cloud.
En el campo Función, selecciona Usuario de Acceso a VPC sin servidores.
Haz clic en Guardar.
gcloud
Ejecuta el siguiente comando en tu terminal:
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
Reemplaza lo siguiente:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartidaSERVICE_PROJECT_NUMBER
: el número de proyecto asociado con la cuenta de servicio. Es diferente del ID del proyecto. Para encontrar el número de proyecto, ejecuta lo siguiente:gcloud projects describe SERVICE_PROJECT_ID
Haz que el conector sea detectable
En la política de IAM del proyecto host, debes otorgar las siguientes dos funciones predefinidas a las principales que implementan los servicios de Cloud Run:
- Visualizador de Acceso a VPC sin servidores (
vpcaccess.viewer
): Obligatorio. - Visualizador de la red de Compute (
compute.networkViewer
): Opcional, pero recomendado. Permite que la principal de IAM enumere las subredes en la red de VPC compartida.
Como alternativa, puedes usar funciones personalizadas o algunas funciones predefinidas que incluyan todos los permisos del rol de visualizador de acceso a VPC sin servidores (vpcaccess.viewer
).
Consola
Abre la página de IAM.
Haz clic en el menú desplegable del proyecto y selecciona el proyecto host.
Haga clic en Agregar.
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.
En el campo Rol, selecciona los siguientes roles:
- Visualizador de Acceso a VPC sin servidores
- Visualizador de la red de Compute
Haz clic en Guardar.
gcloud
Ejecuta los siguientes comandos en tu terminal:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
Reemplaza lo siguiente:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartidaPRINCIPAL
: El principal que implementa los servicios de Cloud Run. Obtén más información sobre la marca--member
.
Configura el servicio para usar un conector
Para cada servicio de Cloud Run que requiera acceso a tu VPC compartida, debes especificar el conector del servicio. Puedes especificar el conector con la consola de Google Cloud, la CLI de Google Cloud, el archivo YAML o Terraform cuando implementes un servicio nuevo o actualices un servicio existente.
Consola
En la consola de Google Cloud ve a Cloud Run:
Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedor, herramientas de redes, seguridad para expandir la página de configuración del servicio.
Haz clic en la pestaña Conexiones.
- 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.
Haz clic en Crear o Implementar.
gcloud
Configura la CLI de gcloud para usar el proyecto que contiene el recurso de Cloud Run:
gcloud config set project PROJECT_ID
Reemplaza lo siguiente:PROJECT_ID
: El ID del proyecto que contiene el recurso de Cloud Run que requiere acceso a la VPC compartida. Si el recurso de Cloud Run está en el proyecto host, este es el ID del proyecto host. Si el recurso de Cloud Run está en un proyecto de servicio, este es el ID del proyecto de servicio.
Usa la marca
--vpc-connector
.
- Para servicios existentes:
gcloud run services update SERVICE --vpc-connector=CONNECTOR_NAME
- Para servicios nuevos:
gcloud run deploy SERVICE --image=IMAGE_URL --vpc-connector=CONNECTOR_NAME
Reemplaza lo siguiente:SERVICE
: el nombre de tu servicio.IMAGE_URL
por una referencia a la imagen del contenedor, comous-docker.pkg.dev/cloudrun/container/hello:latest
CONNECTOR_NAME
: El nombre del conector Usa el nombre completamente calificado cuando realices implementaciones desde un proyecto de servicio de VPC compartida (en lugar del proyecto host), por ejemplo:projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
en el queHOST_PROJECT_ID
es el ID del proyecto host,CONNECTOR_REGION
es la región del conector yCONNECTOR_NAME
es el nombre que le asignaste a tu conector.
YAML
Configura la CLI de gcloud para usar el proyecto que contiene el recurso de Cloud Run:
gcloud config set project PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto que contiene el recurso de Cloud Run que requiere acceso a la VPC compartida. Si el recurso de Cloud Run está en el proyecto host, este es el ID del proyecto host. Si el recurso de Cloud Run está en un proyecto de servicio, este es el ID del proyecto de servicio.
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Agrega o actualiza el atributo
run.googleapis.com/vpc-access-connector
en el atributoannotations
, en el atributo de nivel superiorspec
: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: El nombre de tu servicio de Cloud Run.
- CONNECTOR_NAME: el nombre del conector Usa el nombre completamente calificado cuando realices implementaciones desde un proyecto de servicio de VPC compartida (en lugar del proyecto host), por ejemplo:
projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
en el queHOST_PROJECT_ID
es el ID del proyecto host,CONNECTOR_REGION
es la región del conector yCONNECTOR_NAME
es el nombre que le asignaste a 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
- Comienza con
Reemplaza el servicio por la configuración nueva mediante el siguiente comando:
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.
Próximos pasos
- Supervisa la actividad del administrador con los registros de auditoría de Acceso a VPC sin servidores.
- Protege los recursos y los datos mediante la creación de un perímetro de servicio con los Controles del servicio de VPC.
- Obtén más información sobre las funciones de la Identity and Access Management (IAM) asociadas con el Acceso a VPC sin servidores. Consulta Funciones de Acceso a VPC sin servidores en la documentación de IAM para obtener una lista de permisos asociados con cada función.
- Obtén más información para conectarte a Memorystore.