Esta página contiene información y ejemplos para conectarse a una instancia de Cloud SQL desde un servicio que se ejecuta en Cloud Run.
Para obtener instrucciones paso a paso sobre cómo ejecutar una aplicación web de muestra de Cloud Run conectada a Cloud SQL, consulte la guía de inicio rápido para conectarse desde Cloud Run .
Cloud SQL es un servicio de base de datos completamente administrado que le ayuda a configurar, mantener, administrar y gestionar sus bases de datos relacionales en la nube.
Cloud Run es una plataforma informática administrada que le permite ejecutar contenedores directamente sobre Google Cloud infraestructura.
Configurar una instancia de Cloud SQL
- Habilite la API de administración de Cloud SQL en el Google Cloud proyecto desde el que te estás conectando, si aún no lo has hecho:
- Cree una instancia de Cloud SQL para PostgreSQL . Le recomendamos que elija una ubicación de instancia de Cloud SQL en la misma región que su servicio Cloud Run para mejorar la latencia, evitar costos de red y reducir el riesgo de fallos entre regiones.
De forma predeterminada, Cloud SQL asigna una dirección IP pública a cada nueva instancia. También puede asignar una dirección IP privada. Para obtener más información sobre las opciones de conectividad para ambas instancias, consulte la página "Resumen de la conexión" .
Configurar Cloud Run
Los pasos para configurar Cloud Run dependen del tipo de dirección IP asignada a su instancia de Cloud SQL. Si enruta todo el tráfico de salida a través de la salida directa de VPC o un conector de acceso a VPC sin servidor, use una dirección IP privada. Compare los dos métodos de salida de red .IP pública (predeterminada)
- Asegúrese de que la instancia tenga una dirección IP pública. Puede verificarlo en la página Descripción general de su instancia en Google Cloud consola . Si necesita agregar una, consulte la página "Configuración de IP pública" para obtener instrucciones.
- Obtenga el INSTANCE_CONNECTION_NAME de su instancia. Puede encontrar este valor en la página de descripción general de su instancia en Google Cloud consola o ejecutando el siguiente comando
gcloud sql instances describe
: Reemplace INSTANCE_NAME con el nombre de su instancia de Cloud SQL.gcloud sql instances describe INSTANCE_NAME
- Obtén el CLOUD_RUN_SERVICE_ACCOUNT_NAME para tu servicio de Cloud Run. Puedes encontrar este valor en la página de IAM del proyecto que aloja el servicio de Cloud Run en Google Cloud consola o ejecutando el siguiente comando
gcloud run services describe
en el proyecto que aloja el servicio Cloud Run: Reemplace las siguientes variables:gcloud run services describe CLOUD_RUN_SERVICE_NAME --region CLOUD_RUN_SERVICE_REGION --format="value(spec.template.spec.serviceAccountName)"
- CLOUD_RUN_SERVICE_NAME : el nombre de su servicio Cloud Run
- CLOUD_RUN_SERVICE_REGION : la región de su servicio Cloud Run
- Configure la cuenta de servicio para su servicio de Cloud Run. Para conectarse a Cloud SQL, asegúrese de que la cuenta de servicio tenga el rol de IAM
Cloud SQL Client
. - Si va a agregar una conexión de Cloud SQL a un nuevo servicio, debe contenerizarlo y subirlo al Registro de Contenedores o al Registro de Artefactos. Si aún no tiene una conexión, consulte estas instrucciones sobre cómo crear e implementar una imagen de contenedor.
Como cualquier cambio de configuración, establecer una nueva configuración para la conexión de Cloud SQL genera una nueva revisión de Cloud Run. Las revisiones posteriores también obtendrán automáticamente esta conexión de Cloud SQL, a menos que realice actualizaciones explícitas para cambiarla.
Consola
Comience a configurar el servicio. Para agregar conexiones de Cloud SQL a un servicio existente, siga estos pasos:
- En la lista de Servicios , haga clic en el nombre del servicio que desee.
- Haga clic en Editar e implementar nueva revisión .
- Habilitar la conexión a una instancia de Cloud SQL:
- Haga clic en Contenedor(es) y luego en Configuración .
- Desplácese hasta Conexiones de Cloud SQL .
- Haga clic en Agregar conexión .
- Haga clic en el botón Habilitar el administrador de Cloud SQL si aún no ha habilitado la API de administrador de Cloud SQL.
- Si está agregando una conexión a una instancia de Cloud SQL en su proyecto, seleccione la instancia de Cloud SQL que desee en el menú.
- Si está utilizando una instancia de Cloud SQL de otro proyecto, seleccione la cadena de conexión personalizada en el menú e ingrese el nombre completo de la conexión de la instancia en el formato PROJECT-ID:REGION:INSTANCE-ID .
- Para eliminar una conexión, mantenga el cursor a la derecha de la conexión para que aparezca el ícono y haga clic en él.
Haga clic en Crear o Implementar .
Línea de comandos
Antes de utilizar cualquiera de los siguientes comandos, realice las siguientes sustituciones:
- IMAGE con la imagen que estás implementando
- SERVICE_NAME con el nombre de su servicio Cloud Run
INSTANCE_CONNECTION_NAME con el nombre de conexión de instancia de su instancia de Cloud SQL o una lista delimitada por comas de nombres de conexión.
Si está implementando un nuevo contenedor, utilice el siguiente comando:
Si está actualizando un servicio existente, utilice el siguiente comando:gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraformar
El siguiente código crea un contenedor base de Cloud Run, con una instancia de Cloud SQL conectada.
- Aplique los cambios ingresando
terraform apply
. - Verifique los cambios revisando el servicio Cloud Run , haciendo clic en la pestaña Revisiones y luego en la pestaña Conexiones .
IP privada
Si la cuenta de servicio autorizadora pertenece a un proyecto diferente al que contiene la instancia de Cloud SQL, haga lo siguiente:
- En ambos proyectos, habilite la API de administración de Cloud SQL.
- Para la cuenta de servicio en el proyecto que contiene la instancia de Cloud SQL, agregue los permisos de IAM .
- Asegúrese de que la instancia de Cloud SQL creada previamente tenga una dirección IP privada. Para agregar una dirección IP interna, consulte Configurar una IP privada .
- Configure su método de salida para conectarse a la misma red de VPC que su instancia de Cloud SQL. Tenga en cuenta las siguientes condiciones:
- Tanto la salida directa de VPC como el acceso a VPC sin servidor admiten la comunicación con redes de VPC conectadas mediante Cloud VPN y VPC Network Peering .
- La salida directa de VPC y el acceso a VPC sin servidor no admiten redes heredadas .
- A menos que esté usando VPC compartida , un conector debe compartir el mismo proyecto y región que el recurso que lo usa, aunque el conector puede enviar tráfico a recursos en diferentes regiones.
- Conéctese utilizando la dirección IP privada de su instancia y el puerto
5432
.
Conectarse a Cloud SQL
Después de configurar Cloud Run, puede conectarse a su instancia de Cloud SQL.
IP pública (predeterminada)
Para las rutas de IP públicas, Cloud Run proporciona cifrado y se conecta mediante el proxy de autenticación de Cloud SQL de dos maneras:
- A través de sockets Unix
- Mediante el uso de un conector de Cloud SQL
Utilice el administrador de secretos
Google recomienda usar Secret Manager para almacenar información confidencial, como credenciales de SQL. Puedes pasar secretos como variables de entorno o montarlos como un volumen con Cloud Run.
Después de crear un secreto en Secret Manager, actualice un servicio existente con el siguiente comando:
Línea de comandos
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraformar
A continuación, se crean recursos secretos para almacenar de forma segura los valores de usuario, contraseña y nombre de la base de datos mediante google_secret_manager_secret
y google_secret_manager_secret_version
. Tenga en cuenta que debe actualizar la cuenta de servicio de cómputo del proyecto para acceder a cada secreto.
Actualice el recurso principal de Cloud Run para incluir los nuevos secretos.
Aplique los cambios ingresando terraform apply
.
El comando de ejemplo utiliza la versión secreta, latest ; sin embargo, Google recomienda fijar el secreto a una versión específica, SECRET_NAME:v1 .
IP privada
Para las rutas IP privadas, la aplicación se conecta directamente a la instancia a través de una red VPC. Este método utiliza TCP para conectarse directamente a la instancia de Cloud SQL sin usar el proxy de autenticación de Cloud SQL.
Conectarse con TCP
Conéctese utilizando la dirección IP privada de su instancia de Cloud SQL como host y el puerto 5432
.
Pitón
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Java
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Nota:
- CLOUD_SQL_CONNECTION_NAME debe representarse como <MI-PROYECTO>:<REGIÓN-DE-INSTANCIA>:<NOMBRE-DE-INSTANCIA>
- El uso del argumento ipTypes=PRIVATE obligará a SocketFactory a conectarse con la IP privada asociada a una instancia
- Consulte los requisitos de la versión de fábrica del socket JDBC para el archivo pom.xml aquí .
Node.js
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Ir
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
DO#
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Rubí
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
PHP
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Mejores prácticas y otra información
Puedes usar el proxy de autenticación de Cloud SQL al probar tu aplicación localmente. Consulta la guía de inicio rápido para usar el proxy de autenticación de Cloud SQL para obtener instrucciones detalladas.
También puedes probar usando el proxy Cloud SQL a través de un contenedor Docker .
Grupos de conexiones
Las conexiones a las bases de datos subyacentes pueden interrumpirse, ya sea por el propio servidor de bases de datos o por la infraestructura de la plataforma. Recomendamos usar una biblioteca de cliente compatible con grupos de conexiones que reconectan automáticamente las conexiones de cliente interrumpidas. Para obtener ejemplos más detallados sobre cómo usar los grupos de conexiones, consulte la página "Administrar conexiones de bases de datos" .Límites de conexión
Las ediciones MySQL y PostgreSQL de Cloud SQL imponen un límite máximo de conexiones simultáneas, y estos límites pueden variar según el motor de base de datos elegido (consulte la página Cuotas y límites de Cloud SQL ).Las instancias de contenedor de Cloud Run tienen un límite de 100 conexiones a una base de datos de Cloud SQL. Cada instancia de un servicio o trabajo de Cloud Run puede tener 100 conexiones a la base de datos y, a medida que este servicio o trabajo escala, el número total de conexiones por implementación puede aumentar.
Puede limitar el número máximo de conexiones por instancia mediante un grupo de conexiones. Para obtener ejemplos más detallados sobre cómo limitar el número de conexiones, consulte la página "Administrar conexiones de base de datos" .
Límites de cuota de API
Cloud Run proporciona un mecanismo que se conecta mediante el proxy de autenticación de Cloud SQL, que utiliza la API de administración de Cloud SQL. Se aplican límites de cuota de API al proxy de autenticación de Cloud SQL. La cuota de la API de administración de Cloud SQL utilizada es aproximadamente el doble de la cantidad de instancias de Cloud SQL configuradas por la cantidad de instancias de Cloud Run de un servicio específico implementadas simultáneamente. Puede limitar o aumentar la cantidad de instancias de Cloud Run para modificar la cuota de API esperada.¿Qué sigue?
- Obtenga más información sobre Cloud Run .
- Obtenga más información sobre cómo crear e implementar imágenes de contenedores.
- Vea un ejemplo completo en Python para usar Cloud Run con PostgreSQL .