Conéctate a Cloud SQL para PostgreSQL desde Google Kubernetes Engine
En esta página, se muestra cómo implementar una app de ejemplo en Google Kubernetes Engine (GKE) conectada a una instancia de PostgreSQL mediante la consola de Google Cloud y una aplicación cliente. Los recursos creados en esta guía de inicio rápido suelen costar menos de un dólar, bajo la suposición de que completas los pasos, incluida la limpieza, de manera correcta.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Habilita las API de Google Cloud necesarias para ejecutar una aplicación de muestra de Cloud SQL en GKE.
Console
Haz clic en Habilitar las API para habilitar las API necesarias en esta guía de inicio rápido.
Esto habilita las siguientes API:
- API de Compute Engine
- API de Cloud SQL Admin
- API de Google Kubernetes Engine
- API de Artifact Registry
- API de Cloud Build
gcloud
Haz clic en el siguiente botón para abrir Cloud Shell, que proporciona acceso de línea de comandos a tus recursos de Google Cloud directamente desde el navegador. Cloud Shell se puede usar para ejecutar los comandos de
gcloud
que se presentan en esta guía de inicio rápido.Ejecuta el comando
gcloud services enable
de la siguiente manera con Cloud Shell a fin de habilitar las API necesarias para esta guía de inicio rápido:gcloud services enable compute.googleapis.com sqladmin.googleapis.com \ container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
Este comando habilita las siguientes API:
- API de Compute Engine
- API de Cloud SQL Admin
- API de GKE
- API de Artifact Registry
- API de Cloud Build
Configura Cloud SQL
Crea una instancia de Cloud SQL
Crea una base de datos
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Selecciona
quickstart-instance
. - En el menú de navegación de SQL, selecciona Bases de datos.
- Haga clic en Crear base de datos.
- En el campo Nombre de la base de datos del cuadro de diálogo Base de datos nueva, ingresa
quickstart-db
. - Haz clic en Crear.
gcloud
Ejecuta el comando gcloud
sql databases create
para crear una base de datos.
gcloud sql databases create quickstart-db --instance=quickstart-instance
Crea un usuario
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Usuarios en el menú de navegación de SQL.
- Haz clic en Agregar cuenta de usuario.
- En la página Agrega una cuenta de usuario a la instancia instance_name, agrega la siguiente información:
- Nombre de usuario: Configurado como
quickstart-user
- Contraseña: especifica una contraseña para tu usuario de la base de datos. Toma nota de esto para usarlo en un paso posterior de esta guía de inicio rápido.
- Nombre de usuario: Configurado como
- Haz clic en Agregar.
gcloud
Antes de ejecutar el comando de la siguiente manera, reemplaza DB_PASS por una contraseña para el usuario de tu base de datos. Toma nota de esto para usarlo en un paso posterior de esta guía de inicio rápido.
Ejecuta el comando gcloud sql users create
para crear el usuario.
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
Los límites de extensión del nombre de usuario son los mismos en Cloud SQL y en PostgreSQL local.
Cree un clúster de GKE
Console
-
En la consola de Google Cloud, ve a la página Google Kubernetes Engine.
- Haz clic en Crear.
- Haz clic en Configurar para Autopilot de GKE.
- En Nombre, especifica el nombre del clúster como
gke-cloud-sql-quickstart
. - Haz clic en Crear.
gcloud
Ejecuta el comando gcloud container clusters create-auto
para crear el clúster.
gcloud container clusters create-auto gke-cloud-sql-quickstart \ --region us-central1
Clona una app de ejemplo de Cloud SQL en el editor de Cloud Shell
Con una instancia de Cloud SQL, una base de datos y un clúster de GKE, ahora puedes clonar y configurar una aplicación de muestra para conectarte a tu instancia de Cloud SQL. En los pasos restantes de esta guía de inicio rápido, se requiere el uso de las herramientas de línea de comandos de gcloud
y kubectl
. Ambas herramientas están preinstaladas en Cloud Shell.
Go
-
En el editor de Cloud Shell, abre el código fuente de la app de muestra.
Abrir el Editor de Cloud Shell -
En el cuadro de diálogo
Open in Cloud Shell
, haz clic en Confirmar para descargar el código de la app de muestra y abrir el directorio de la app de muestra en el editor de Cloud Shell.
Java
-
En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
Abrir el Editor de Cloud Shell -
En el cuadro de diálogo
Open in Cloud Shell
, haz clic en Confirmar para descargar el código de la app de muestra y abrir el directorio de la app de muestra en el editor de Cloud Shell.
Node.js
-
En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
Abrir el Editor de Cloud Shell -
En el cuadro de diálogo
Open in Cloud Shell
, haz clic en Confirmar para descargar el código de la app de muestra y abrir el directorio de la app de muestra en el editor de Cloud Shell.
Python
-
En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
Abrir el Editor de Cloud Shell -
En el cuadro de diálogo
Open in Cloud Shell
, haz clic en Confirmar para descargar el código de la app de muestra y abrir el directorio de la app de muestra en el editor de Cloud Shell.
Habilita el clúster de GKE
Habilita el clúster de GKE que acabas de crear como el clúster predeterminado que se usará para los comandos restantes en esta guía de inicio rápido.
gcloud container clusters get-credentials
de la siguiente manera para habilitar el clúster de GKE.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \ --region us-central1
Configurar una cuenta de servicio
-
Ejecuta el comando
gcloud iam service-accounts create
de la siguiente manera para crear una cuenta de servicio nueva:gcloud iam service-accounts create gke-quickstart-service-account \ --display-name="GKE Quickstart Service Account"
- Ejecuta el comando
gcloud projects add-iam-policy-binding
de la siguiente manera para agregar la función de cliente de Cloud SQL a la cuenta de servicio de Google Cloud que acabas de crear. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client"
- La app de ejemplo usa el registro, por lo que debes ejecutar el comando
gcloud projects add-iam-policy-binding
de la siguiente manera para agregar el rol de escritor de registros a la cuenta de servicio de Google Cloud que acabas de crear. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
- La cuenta de servicio debe poder extraer imágenes del repositorio de artifactory, por lo que debes ejecutar el comando
gcloud projects add-iam-policy-binding
de la siguiente manera para agregar el lector de Artifact Registry a la cuenta de servicio. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
- Crea una cuenta de servicio de Kubernetes.
- Actualiza el archivo
service-account.yaml
en el editor de Cloud Shell. Reemplaza<YOUR-KSA-NAME>
porksa-cloud-sql
. - Ejecuta el comando
kubectl apply
de la siguiente manera en Cloud Shell:kubectl apply -f service-account.yaml
- Actualiza el archivo
- Ejecuta el comando
gcloud iam service-accounts add-iam-policy-binding
a continuación para habilitar la vinculación de IAM de la cuenta de servicio de Google Cloud con la cuenta de servicio de Kubernetes. Realiza los siguientes reemplazos:- YOUR_PROJECT_ID por el ID del proyecto.
- YOUR_K8S_NAMESPACE por
default
, que es el espacio de nombres predeterminado para los clústeres creados en GKE. - YOUR_KSA_NAME con
ksa-cloud-sql
.
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \ gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- Ejecuta el comando
kubectl annotate
de la siguiente manera para anotar la cuenta de servicio de Kubernetes con vinculación de IAM. Realiza los siguientes reemplazos:- YOUR_KSA_NAME con
ksa-cloud-sql
. - YOUR_PROJECT_ID por el ID del proyecto.
kubectl annotate serviceaccount \ YOUR_KSA_NAME \ iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- YOUR_KSA_NAME con
Configura secretos
Ejecuta el comando kubectl create secret generic
a fin de crear secretos de Kubernetes para la base de datos, el usuario y la contraseña de usuario que usará la app de ejemplo. Los valores de cada secreto se basan en los valores especificados en los pasos anteriores de esta guía de inicio rápido.
Reemplaza DB_PASS por la contraseña del quickstart-user
que creaste en el paso anterior de la guía de inicio rápido, Crea un usuario.
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=quickstart-user \ --from-literal=password=DB_PASS
Compila la app de ejemplo
Go
-
Ejecuta el siguiente comando
gcloud artifacts repositories create
en Cloud Shell para crear un repositorio en Artifact Registry llamado gke-cloud-sql-repo en la misma región que tu clúster. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Ejecuta el comando
gcloud builds submit
de la siguiente manera en Cloud Shell para compilar un contenedor de Docker y publicarlo en Artifact Registry. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Java
-
Ejecuta el siguiente comando
gcloud artifacts repositories create
en Cloud Shell para crear un repositorio en Artifact Registry llamado gke-cloud-sql-repo en la misma región que tu clúster. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Ejecuta el comando
mvn
como se indica en Cloud Shell para compilar un contenedor de Docker y publicarlo en Artifact Registry. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \ -DskipTests -Djib.to.credHelper=gcloud
Node.js
-
Ejecuta el siguiente comando
gcloud artifacts repositories create
en Cloud Shell para crear un repositorio en Artifact Registry llamado gke-cloud-sql-repo en la misma región que tu clúster. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Ejecuta el comando
gcloud builds submit
de la siguiente manera en Cloud Shell para compilar un contenedor de Docker y publicarlo en Artifact Registry. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Python
-
Ejecuta el siguiente comando
gcloud artifacts repositories create
en Cloud Shell para crear un repositorio en Artifact Registry llamado gke-cloud-sql-repo en la misma región que tu clúster. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Ejecuta el comando
gcloud builds submit
de la siguiente manera en Cloud Shell para compilar un contenedor de Docker y publicarlo en Artifact Registry. Reemplaza YOUR_PROJECT_ID por el ID del proyecto.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Implementa la app de ejemplo
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Selecciona la instancia
quickstart-instance
para abrir la página de detalles de la instancia. - En la barra de íconos en la parte superior de la página, haz clic en Borrar.
- En el cuadro de diálogo Borrar instancia, escribe
quickstart-instance
y, luego, haz clic en Borrar. -
En la consola de Google Cloud, ve a la página Google Kubernetes Engine.
- Haz clic en la casilla de verificación junto al nombre del servicio
gke-cloud-sql-quickstart
. - Haz clic en el botón Borrar en la parte superior de la página de Google Kubernetes Engine.
Pasos opcionales de limpieza
Si no usas la cuenta de servicio de Google Cloud que creaste para esta guía de inicio rápido, puedes quitarla.
-
En la consola de Google Cloud, ve a la página IAM.
- Selecciona la casilla de verificación de la cuenta de IAM llamada
gke-quickstart-service-account
. - Haz clic en Quitar y confirma la eliminación.
Si no usas las API que se habilitaron como parte de esta guía de inicio rápido, puedes inhabilitarlas.
- API que se habilitaron en esta guía de inicio rápido:
- API de Compute Engine
- API de Cloud SQL Admin
- API de Google Kubernetes Engine
- API de Artifact Registry
- API de Cloud Build
En la consola de Google Cloud, ve a la página API.
Selecciona la API que quieras inhabilitar y, luego, haz clic en el botón Inhabilitar API.
¿Qué sigue?
En función de tus necesidades, puedes obtener más información para crear instancias de Cloud SQL.También puedes obtener información sobre cómo crear usuarios de PostgreSQL y bases de datos para tu instancia de Cloud SQL.
Además, puedes consultar Precios de Cloud SQL .
Conoce más sobre:
- Todas las opciones de conectividad de Cloud SQL
- La configuración de la instancia de Cloud SQL con una dirección IP pública
- La configuración de la instancia de Cloud SQL con una dirección IP privada
Además, puedes obtener información sobre la conexión a una instancia de Cloud SQL desde otras aplicaciones de Google Cloud: