En esta página se explica cómo configurar una conexión desde una aplicación que se ejecuta en Kubernetes Engine a una instancia de Cloud SQL con la imagen Docker del proxy de Cloud SQL.
Introducción
Si quieres acceder a una instancia de Cloud SQL desde una aplicación que se ejecuta en Kubernetes Engine, usa la imagen Docker del proxy de Cloud SQL. Más información sobre el proxy de Cloud SQL Proxy en la sección sobre el proxy de Cloud SQL.
Antes de empezar
Antes de empezar este procedimiento, debes contar con los siguientes elementos:
-
Un clúster de Kubernetes Engine en el que se ejecute la versión 1.2 o posterior, con la herramienta de línea de comandos
kubectl
instalada y configurada para comunicarse con dicho clúster.Si quieres obtener ayuda sobre cómo empezar a usar Kubernetes Engine, consulta la sección sobre inicio rápido.
-
Un contenedor de aplicaciones en un pod del clúster de Kubernetes Engine.
El proxy de Cloud SQL se añade al pod mediante el patrón de pod "sidecar".
-
Una instancia de segunda generación creada.
Si quieres obtener ayuda para crear una instancia de Cloud SQL, consulta la sección sobre cómo crear instancias.
1. Habilitar la API
2. Crear una cuenta de servicio
Se necesita una cuenta de servicio con los privilegios adecuados de la instancia de Cloud SQL para el proxy. Obtén más información sobre las cuentas de servicio en la guía de Auth de GCP.
- Accede a la página sobre cuentas de servicio de Cloud SQL de la consola de Google Cloud Platform.
- Si fuera necesario, selecciona el proyecto que contiene la instancia de Cloud SQL.
- Haz clic en Crear cuenta de servicio.
- En el cuadro de diálogo Crear cuenta de servicio, introduce un nombre descriptivo para la cuenta de servicio.
-
Como Función, selecciona Cloud SQL > Cliente de Cloud SQL.
También puedes usar la función básica de editor al seleccionar Proyecto > Editor, aunque esta función incluye permisos de Google Cloud Platform.
Si no ves estas funciones, puede que tu usuario de Google Cloud Platform no cuente con el permiso
resourcemanager.projects.setIamPolicy
. Puedes consultar tus permisos mediante una búsqueda del ID de usuario en la página sobre gestión de identidades y accesos de la consola de Google Cloud Platform. - Cambia el ID de cuenta de servicio por un valor único que reconozcas para que puedas encontrar fácilmente esta cuenta de servicio más tarde si fuera necesario.
- Haz clic en Suministrar una nueva clave privada.
-
El tipo de clave predeterminado es
JSON
, que es el valor correcto que se debe usar. -
Haz clic en Crear.
El archivo de clave privada se descargará en la máquina. Puedes cambiar la ubicación en la que se encuentra. Debes proteger el archivo de clave.
Más tarde, cuando crees tus secretos en esta tarea, tendrás que establecer la ubicación de este archivo de clave en PROXY_KEY_FILE_PATH
.
3. Crear el usuario del proxy
Este comando gcloud sirve para crear la cuenta de usuario proxyuser
que el proxy usará para acceder a la instancia de Cloud SQL. Debes introducir el nombre de la instancia y la contraseña.
gcloud sql users create proxyuser cloudsqlproxy~% --instance=[INSTANCE_NAME] --password=[PASSWORD]
Si quieres obtener ayuda para crear una cuenta de usuario, consulta la sección sobre cómo crear un usuario.
4. Obtener el nombre de conexión de la instancia
El nombre de conexión de instancia permite identificar la instancia en Google Cloud Platform. Puedes obtenerlo desde la consola de Google Cloud Platform o mediante la herramienta de línea de comandos gcloud
:
gcloud sql instances describe [INSTANCE_NAME]
Por ejemplo, en el caso de la instancia myinstance1
del proyecto myproject1
, el resultado de gcloud sería el siguiente:
connectionName: myproject1:us-central1:myinstance1
Más tarde tendrás que establecer este valor en INSTANCE_CONNECTION_NAME
.
5. Crear secretos
Necesitas dos secretos para habilitar la aplicación Kubernetes Engine y poder acceder a los datos de la instancia de Cloud SQL:
- El secreto
cloudsql-instance-credentials
abarca la cuenta de servicio. - El secreto
cloudsql-db-credentials
proporciona la cuenta de usuario y la contraseña del proxy.
Si deseas crear estos secretos, debes seguir estos pasos:
-
Crea el secreto
cloudsql-instance-credentials
mediante el archivo de clave que descargaste anteriormente:kubectl create secret generic cloudsql-instance-credentials \ --from-file=credentials.json=[PROXY_KEY_FILE_PATH]
-
Crea el secreto
cloudsql-db-credentials
mediante el nombre y la contraseña del usuario del proxy que creaste anteriormente:kubectl create secret generic cloudsql-db-credentials \ --from-literal=username=proxyuser --from-literal=password=[PASSWORD]
6. Actualizar el archivo de configuración del pod
El archivo de configuración del pod debe incluir la dirección del host de la base de datos, los secretos y la ubicación de la instancia de Cloud SQL.
Los nombres exactos de las variables necesarias dependen del contenedor de la aplicación que estés usando. Si quieres que se lleve a cabo un despliegue de muestra completa con el código de muestra incluido, consulta el archivo de manifiesto del despliegue de muestra de Kubernetes en GitHub.
-
Proporciona la dirección de host
127.0.0.1:3306
con el fin de que tu aplicación la use para acceder a la base de datos.Como el proxy se ejecuta en un segundo contenedor del mismo pod, se muestra en la aplicación como
localhost
, de forma que estás usando la dirección127.0.0.1:3306
para conectarte. -
Proporciona el secreto
cloudsql-db-credentials
para permitir que la aplicación inicie sesión en la base de datos.Por ejemplo, la siguiente configuración le proporciona las variables de entorno
DB_USER
yDB_PASSWORD
a la aplicación mediante el secretocloudsql- db-credentials
.env: - name: DB_USER valueFrom: secretKeyRef: name: cloudsql-db-credentials key: username - name: DB_PASSWORD valueFrom: secretKeyRef: name: cloudsql-db-credentials key: password
-
En el archivo de despliegue de Kubernetes, especifica otro contenedor en la definición del pod para ejecutar el contenedor del proxy. Este contenedor abre el puerto 3306 y adopta el nombre de conexión de instancia que registraste anteriormente.
-
Define los volúmenes:
-
Abre el despliegue mediante el archivo de manifiesto de Kubernetes:
kubectl apply -f deployment.yaml
7. Actualizar la aplicación para conectarte a Cloud SQL
Cuando configuras tu entorno de Kubernetes Engine, te conectas a Cloud SQL al igual que cualquier otra aplicación externa que esté usando el proxy. La cadena de conexión exacta que usas depende del idioma y el framework que utilices.
Si quieres ver ejemplos de cadenas de conexión, consulta la sección sobre información específica del lenguaje con ejemplos.
¿Necesitas ayuda? Si necesitas ayuda con la solución de problemas del proxy, consulta la sección sobre solución de problemas de las conexiones del proxy de Cloud SQL. También puedes consultar nuestra página de asistencia para Cloud SQL.
Siguientes pasos
- Más información sobre el proxy y la imagen Docker del proxy
- Consultar el archivo de manifiesto de despliegue de muestra de Kubernetes en GitHub
- Obtener ayuda para solucionar problemas de conexión del proxy
- Más información sobre Kubernetes Engine
- Más información sobre las opciones de asistencia