Conéctate a Cloud SQL para MySQL 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 MySQL 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

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las API de Google Cloud necesarias para ejecutar una aplicación de muestra de Cloud SQL en GKE.

    Consola

    Haz clic en Habilitar las API para habilitar las API necesarias en esta guía de inicio rápido.

    Habilita las API

    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.

    Abra Cloud Shell

    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

Consola

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Seleccione quickstart-instance.
  3. En el menú de navegación de SQL, selecciona Bases de datos.
  4. Haga clic en Crear base de datos.
    1. En el campo Nombre de la base de datos del cuadro de diálogo Crear una base de datos, ingresa quickstart-db. Deja los valores para el grupo de caracteres y la intercalación.
    2. 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

Consola

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Selecciona Usuarios en el menú de navegación de SQL.
  4. 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.
      • En la sección Nombre de host, el valor predeterminado es Permitir cualquier host, lo que significa que el usuario puede conectarse desde cualquier dirección IP.

        De manera opcional, selecciona Restringir host por dirección IP o rango de direcciones y, luego, ingresa una dirección IP o un rango de direcciones en la sección Host. Luego, el usuario solo podrá conectarse desde la dirección IP o las direcciones especificadas.

  5. Haz clic en Add.

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 longitud de los nombres de usuario son los mismos para Cloud SQL que para MySQL local: 32 caracteres en MySQL 8.0 y 16 caracteres en las versiones anteriores.

Cree un clúster de GKE

Consola

  1. En la consola de Google Cloud, ve a la página Google Kubernetes Engine.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.
  3. Haz clic en Configurar para Autopilot de GKE.
  4. En Nombre, especifica el nombre del clúster como gke-cloud-sql-quickstart.
  5. 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

  1. En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.

    Abrir Cloud Shell Editor
  2. 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

  1. En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
    Abrir el Editor de Cloud Shell
  2. 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

  1. En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
    Abrir el Editor de Cloud Shell
  2. 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

  1. En el editor de Cloud Shell, abre el código fuente de la app de ejemplo.
    Abrir el Editor de Cloud Shell
  2. 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.

Ejecuta el comando 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

Crea y configura una cuenta de servicio de Google Cloud a fin de que la use GKE para que tenga la función de Cliente de Cloud SQL con permisos para conectarse a Cloud SQL.
  1. 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"
  2. 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"
  3. 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"
Crea una cuenta de servicio de Kubernetes configurada para tener acceso a Cloud SQL mediante la vinculación a la cuenta de servicio de Google Cloud con Workload Identity.
  1. Crea una cuenta de servicio de Kubernetes.
    1. Actualiza el archivo service-account.yaml en el editor de Cloud Shell. Reemplaza <YOUR-KSA-NAME> por ksa-cloud-sql.
    2. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell:
      kubectl apply -f service-account.yaml
  2. 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
  3. 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

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

  1. 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"
  2. 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

  1. 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"
  2. 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

  1. 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"
  2. 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

  1. 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"
  2. 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

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Selecciona la instancia quickstart-instance para abrir la página de detalles de la instancia.
  3. En la barra de íconos en la parte superior de la página, haz clic en Borrar.
  4. En el cuadro de diálogo Borrar instancia, escribe quickstart-instance y, luego, haz clic en Borrar.
  5. En la consola de Google Cloud, ve a la página Google Kubernetes Engine.

    Ir a Google Kubernetes Engine

  6. Haz clic en la casilla de verificación junto al nombre del servicio gke-cloud-sql-quickstart.
  7. 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.

  1. En la consola de Google Cloud, ve a la página IAM.

    Ir a IAM

  2. Selecciona la casilla de verificación de la cuenta de IAM llamada gke-quickstart-service-account.
  3. 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
  1. En la consola de Google Cloud, ve a la página API.

    Ir a las API

  2. 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 MySQL y bases de datos para tu instancia de Cloud SQL.

Además, puedes consultar Precios de Cloud SQL .

Conoce más sobre:

Además, puedes obtener información sobre la conexión a una instancia de Cloud SQL desde otras aplicaciones de Google Cloud: