Configurar conectores en el proyecto host de la VPC compartida
Si tu organización usa la VPC compartida, puedes configurar conectores de acceso a la VPC sin servidor en el proyecto de servicio o en el proyecto del host. En esta guía se explica cómo configurar un conector en el proyecto host.
Si necesitas configurar un conector en un proyecto de servicio, consulta el artículo Configurar conectores en proyectos de servicio. Para obtener información sobre las ventajas de cada método, consulta el artículo Conexión a una red de VPC compartida.
de Acceso a VPC sin servidor.Antes de empezar
Consulta los roles de Gestión de Identidades y Accesos (IAM) de la cuenta que estés usando. La cuenta activa debe tener los siguientes roles en el proyecto host:
Selecciona el proyecto host en el entorno que prefieras.
Consola
Abre el Google Cloud panel de control de la consola.
En la barra de menú situada en la parte superior del panel de control, haz clic en el menú desplegable de proyectos y selecciona el proyecto anfitrión.
gcloud
Define el proyecto predeterminado en gcloud CLI como el proyecto host ejecutando lo siguiente en tu terminal:
gcloud config set project HOST_PROJECT_ID
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida
Crear un conector de Acceso a VPC sin servidor
Para enviar solicitudes a tu red de VPC y recibir las respuestas correspondientes, debes crear un conector de acceso a VPC sin servidor. Puedes crear un conector mediante la Google Cloud consola, la CLI de Google Cloud o Terraform:
Consola
Habilita la API Acceso a VPC sin servidor en tu proyecto.
Ve a la página de resumen de Acceso a VPC sin servidor.
Haz clic en Crear conector.
En el campo Name (Nombre), introduce un nombre para el conector. El nombre debe seguir las convenciones de nomenclatura 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 tu conector. Debe coincidir con la región de tu 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 quieras adjuntar el conector.
Haz clic en el menú desplegable Subred:
Selecciona una
/28
subred que no esté en uso.- El conector debe usar las subredes de forma exclusiva. No se pueden usar en otros recursos, como VMs, Private Service Connect o balanceadores de carga.
- Para confirmar que tu subred no se usa en Private Service Connect ni en Cloud Load Balancing, comprueba que la subred
purpose
estáPRIVATE
. Para ello, ejecuta el siguiente comando en gcloud CLI: Sustituyegcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
por el nombre de tu subred.
(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.
- 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 a medida que aumenta el tráfico, pero no se reduce cuando el tráfico disminuye. Debe usar valores comprendidos entre
2
y10
, y el valor deMIN
debe ser inferior al deMAX
. - En el menú desplegable Tipo de instancia, elige el tipo de máquina que se usará para el conector o usa el valor predeterminado
e2-micro
. Cuando elijas el tipo de instancia, verás la barra lateral de costes a la derecha, donde se muestran las estimaciones de ancho de banda y costes.
- 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 a medida que aumenta el tráfico, pero no se reduce cuando el tráfico disminuye. Debe usar valores comprendidos entre
Haz clic en Crear.
Cuando el conector esté listo para usarse, aparecerá una marca de verificación de color verde junto a su nombre.
gcloud
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Habilita la API Serverless VPC Access en tu proyecto:
gcloud services enable vpcaccess.googleapis.com
Crea un conector de Acceso a VPC sin servidor:
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
Haz los cambios siguientes:
CONNECTOR_NAME
: el nombre del conector. El nombre debe seguir las convenciones de nomenclatura de Compute Engine y tener menos de 21 caracteres. Los guiones (-
) cuentan como dos caracteres.REGION
: una región para tu conector. Debe coincidir con la región de tu servicio sin servidor. Si tu servicio se encuentra en la regiónus-central
oeurope-west
, usaus-central1
oeurope-west1
.SUBNET
: el nombre de una subred/28
sin usar.- El conector debe usar las subredes de forma exclusiva. No se pueden usar en otros recursos, como VMs, Private Service Connect o balanceadores de carga.
- Para confirmar que tu subred no se usa en Private Service Connect ni en Cloud Load Balancing, comprueba que la subred
purpose
estéPRIVATE
. Para ello, ejecuta el siguiente comando en gcloud CLI: Sustituye lo siguiente:gcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
: el nombre de la subred
HOST_PROJECT_ID
: el ID del proyecto hostMIN
: número mínimo de instancias que se deben usar para el conector. Usa un número entero entre2
y9
. El valor predeterminado es2
. Para obtener información sobre el escalado de conectores, consulta Rendimiento y escalado.MAX
: número máximo de instancias que se pueden usar para el conector. Usa un número entero entre3
y10
. El valor predeterminado es10
. Si el tráfico lo requiere, el conector se amplía a[MAX]
instancias, pero no se reduce. Para obtener información sobre el escalado de conectores, consulta Rendimiento y escalado.MACHINE_TYPE
:f1-micro
,e2-micro
oe2-standard-4
. Para obtener información sobre el rendimiento de los conectores, incluidos el tipo de máquina y el escalado, consulta Rendimiento y escalado.
Para obtener más información y argumentos opcionales, consulta la referencia de
gcloud
.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 especificaste 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
.
Terraform
Puede usar un recurso de Terraform para habilitar la API vpcaccess.googleapis.com
.
Puedes usar módulos de Terraform para crear una red VPC y una subred, y, a continuación, crear el conector.
Habilita las funciones de Cloud Run en el proyecto de servicio
Habilita la API Cloud Run Functions en el proyecto de servicio. Esto es necesario para añadir roles de gestión de identidades y accesos en los pasos posteriores y para que el proyecto de servicio use las funciones de Cloud Run.
Consola
Abre la página de la API de funciones de Cloud Run.
En la barra de menú situada en la parte superior del panel de control, haz clic en el menú desplegable de proyectos y selecciona el proyecto de servicio.
Haz clic en Enable (Habilitar).
gcloud
Ejecuta lo siguiente en el terminal:
gcloud services enable cloudfunctions.googleapis.com --project=SERVICE_PROJECT_ID
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio
Proporcionar acceso al conector
Para proporcionar acceso al conector, asigna el rol de IAM Agente de servicio de funciones de Cloud Run Usuario de Acceso a VPC sin servidor al proyecto de servicio en el proyecto host.
Consola
Abre la página de gestión de identidades y accesos.
Haz clic en el menú desplegable de proyectos y selecciona el proyecto host.
Haz clic en Conceder acceso.
En el campo Principales nuevas, introduce la dirección de correo del agente de servicio de las funciones de Cloud Run del proyecto de servicio:
service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
Haz los cambios siguientes:
SERVICE_PROJECT_NUMBER
: el número de proyecto asociado al proyecto de servicio. Es diferente del ID de proyecto. Puedes encontrar el número de proyecto en la página Configuración del proyecto del proyecto de servicio en la consola deGoogle Cloud .
En el campo Rol, selecciona Usuario de acceso a VPC sin servidor.
Haz clic en Guardar.
gcloud
Ejecuta el siguiente comando en el terminal:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartidaSERVICE_PROJECT_NUMBER
: el número de proyecto asociado al proyecto de servicio. Es diferente del ID de proyecto. Para encontrar el número de proyecto, ejecuta el siguiente comando:gcloud projects describe SERVICE_PROJECT_ID
Hacer que el conector se pueda detectar
En la política de gestión de identidades y accesos del proyecto host, debes conceder los dos roles predefinidos siguientes a los principales que implementen servicios de Cloud Run:
- Lector de acceso a VPC sin servidor (
vpcaccess.viewer
): obligatorio. - Lector de red de Compute (
compute.networkViewer
): opcional, pero recomendado. Permite que la entidad de seguridad de gestión de identidades y accesos enumere las subredes de la red de VPC compartida.
También puede usar roles personalizados u otros roles predefinidos que incluyan todos los permisos del rol Lector de acceso a VPC sin servidor (vpcaccess.viewer
).
Consola
Abre la página de gestión de identidades y accesos.
Haz clic en el menú desplegable de proyectos y selecciona el proyecto host.
Haz clic en Conceder acceso.
En el campo Nuevos principales, introduce la dirección de correo del principal que debería poder ver el conector desde el proyecto de servicio. Puedes introducir varias direcciones de correo en este campo.
En el campo Rol, selecciona los dos roles siguientes:
- Lector de acceso a VPC sin servidor
- Lector de 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
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartidaPRINCIPAL
: la entidad que despliega servicios de Cloud Run. Consulta más información sobre la--member
marca.
Configurar la función para usar el conector
Para cada función que requiera acceso a su VPC compartida, debe especificar el conector de la función. En los siguientes pasos se muestra cómo configurar una función para que use un conector.
Consola
Abre la página de información general de Cloud Run Functions.
Haz clic en el menú desplegable de proyectos y selecciona el proyecto de servicio.
Haz clic en Crear función. También puedes hacer clic en una función para ir a su página de detalles y, a continuación, en Editar.
Despliega la configuración avanzada haciendo clic en Tiempo de ejecución, compilación....
En la pestaña Conexiones de la sección Configuración de salida, selecciona tu conector en el campo Conector de VPC.
gcloud
Configura gcloud CLI para que use el proyecto que contiene la función:
Sustituye lo siguiente:gcloud config set project PROJECT_ID
PROJECT_ID
: el ID del proyecto que contiene la función que requiere acceso a tu VPC compartida. Si la función está en el proyecto host, este es el ID del proyecto host. Si la función está en un proyecto de servicio, este es el ID del proyecto de servicio.
Usa la marca
--vpc-connector
y despliega tu función:gcloud functions deploy FUNCTION_NAME --vpc-connector=CONNECTOR_NAME
Haz los cambios siguientes:
FUNCTION_NAME
: el nombre de tu funciónCONNECTOR_NAME
: el nombre de tu conector. Usa el nombre completo cuando implementes desde un proyecto de servicio de VPC compartida (en lugar del proyecto host). Por ejemplo: dondeprojects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
HOST_PROJECT_ID
es el ID del proyecto host,CONNECTOR_REGION
es la región de tu conector yCONNECTOR_NAME
es el nombre que le has dado al conector.
Para tener más control sobre las solicitudes que se enrutan a través del conector, consulta Ajustes de salida.
.Pasos siguientes
- Conéctate a Memorystore desde funciones de Cloud Run.
- Configura los ajustes de red para las funciones de Cloud Run.
- Monitoriza la actividad de los administradores con los registros de auditoría de Acceso a VPC sin servidor.
- Protege los recursos y los datos creando un perímetro de servicio con Controles de Servicio de VPC.
- Consulta información sobre los roles de Gestión de Identidades y Accesos (IAM) asociados a Acceso a VPC sin servidor. Consulta los roles de acceso a VPC sin servidor en la documentación de gestión de identidades y accesos para ver una lista de los permisos asociados a cada rol.