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. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    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

    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

IP pública

Crea una instancia con una dirección IP pública

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en Crear instancia.
  3. Haz clic en MySQL.
  4. Ingresa quickstart-instance en ID de la instancia.
  5. Ingresa una contraseña para el usuario raíz. Guarda esta contraseña para usarla más adelante.
  6. Haz clic en la opción Zona única para elegir la región y la disponibilidad zonal.
  7. Haz clic y expande la sección Mostrar configuraciones.
  8. En el menú desplegable Tipo de máquina, selecciona Mantenimiento ligero.
  9. Haz clic en Crear instancia y espera a que la instancia se inicialice.

Crea una instancia con una dirección IP pública

Antes de ejecutar el comando gcloud sql instances create de la siguiente manera, reemplaza DB_ROOT_PASSWORD por la contraseña del usuario de la base de datos.

De manera opcional, modifica los valores para los siguientes parámetros:

  • --database_version: el tipo de motor de la base de datos y la versión. Si no se especifica, se usa la configuración predeterminada de API. Consulta la documentación de las versiones de la base de datos de gcloud para ver las versiones actualmente disponibles.
  • --cpu: Es la cantidad de núcleos deseados en la máquina.
  • --memory: valor de número entero que indica la cantidad de memoria que se desea en la máquina. Se debe proporcionar una unidad de tamaño (por ejemplo, 3,072 MB o 9 GB). Si no se especifican unidades, se supone que es GB.
  • --region: ubicación regional de la instancia (por ejemplo, asia-east1, us-east1). Si no se especifica, el valor predeterminado es us-central. Consulta la lista completa de regiones.

Ejecuta el comando gcloud sql instances create para crear una instancia de Cloud SQL.

gcloud sql instances create quickstart-instance \
--database-version=MYSQL_8_0 \
--cpu=1 \
--memory=4GB \
--region=us-central1 \
--root-password=DB_ROOT_PASSWORD

Crea una instancia con una dirección IP privada y SSL habilitado

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en Crear instancia.
  3. Haz clic en MySQL.
  4. Ingresa quickstart-instance en ID de la instancia.
  5. Ingresa una contraseña para el usuario raíz. Guarda esta contraseña para usarla más adelante.
  6. Haz clic en la opción Zona única para elegir la región y la disponibilidad zonal.
  7. Haz clic y expande Mostrar opciones de configuración.
  8. En Tipo de máquina, selecciona Ligera.
  9. En Conexiones, selecciona IP privada.
  10. Selecciona configuración predeterminada en el menú desplegable Red.
  11. Si ves un cuadro de diálogo que indica se requiere una conexión de acceso privado a servicios, haz clic en el botón Configurar conexión.
    • En el cuadro de diálogo Habilitar API de Herramientas de redes de servicios, haz clic en el botón Habilitar API.
    • En el cuadro de diálogo Asignar un rango de IP, selecciona Usar un rango de IP asignado de forma automática y haz clic en Continuar.
    • En el diálogo Crear una conexión, haz clic en Crear conexión.
  12. Desmarca la casilla de verificación IP pública para crear una instancia solo con una IP privada.
  13. Haz clic en Crear instancia y espera a que la instancia se inicialice y se inicie.
  14. Haz clic en Conexiones.
  15. En la sección Seguridad, selecciona Solo permitir conexiones SSL para habilitar las conexiones SSL.
  16. En el cuadro de diálogo Habilitar SSL, haz clic en Habilitar y reiniciar y, luego, espera a que la instancia se reinicie.

Crea una instancia con una dirección IP privada y SSL habilitado

Crear una instancia con una dirección IP privada solo requiere configurar el acceso privado a servicios para habilitar conexiones de otros servicios de Google Cloud , como GKE.

  1. Ejecuta el comando gcloud compute addresses create a fin de asignar un rango de IP para una conexión de acceso a servicios privados:
  2. gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=default
  3. Ejecuta el comando gcloud services vpc-peerings connect para crear la conexión de acceso privado a servicios:
  4. gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default
  5. Antes de ejecutar el comando gcloud sql instances create para crear una instancia, reemplaza DB_ROOT_PASSWORD por la contraseña del usuario de la base de datos.

  6. De manera opcional, modifica los valores para los siguientes parámetros:

    • --database_version: el tipo de motor de la base de datos y la versión. Si no se especifica, se usa la configuración predeterminada de API. Consulta versiones de bases de datos de gcloud para obtener una lista de las versiones disponibles actualmente.
    • --cpu: Es la cantidad de núcleos en la máquina.
    • --memory: Es un número entero que indica cuánta memoria se debe incluir en la máquina. Se puede proporcionar una unidad de tamaño (por ejemplo, 3,072 MB o 9 GB). Si no se especifican unidades, se supone que es GB.
    • --region: Es la ubicación regional de la instancia (por ejemplo, asia-east1, us-east1). Si no se especifica, el valor predeterminado es us-central1. Consulta la lista completa de regiones.

    Ejecuta el comando gcloud sql instances create para crear una instancia de Cloud SQL con una dirección IP privada.

     gcloud beta sql instances create quickstart-instance \
    --database-version=MYSQL_8_0 \
    --cpu=1 \
    --memory=4GB \
    --region=us-central1 \
    --root-password=DB_ROOT_PASSWORD \
    --no-assign-ip \
    --network=default
  7. Ejecuta el comando gcloud sql instances patch a fin de permitir solo conexiones SSL para la instancia.

  8. gcloud sql instances patch quickstart-instance --require-ssl

Crea una base de datos

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

    Ir a Instancias de Cloud SQL

  2. Selecciona 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.

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

  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 Agregar.

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 posteriores, y 16 caracteres en las versiones anteriores.

Cree un clúster de GKE

  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.

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.

  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.
  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.
  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.
  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 Google Cloud cuenta de servicio que usará GKE para que tenga el rol 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 el rol de cliente de Cloud SQL a la cuenta de servicio 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"
  4. 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 configurada para tener acceso a Cloud SQL mediante la vinculación a la cuenta de servicio de Google Cloud con Workload Identity Federation for GKE.
  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 y 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

  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 .
  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
  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 .
  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

IP pública

Una vez configurada la app de ejemplo , puedes implementarla.

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos:
    • <YOUR_KSA_NAME> con ksa-cloud-sql.
    • <LOCATION> con us-central1.
    • <YOUR_PROJECT_ID> por el ID del proyecto.
    • <YOUR-DB-SECRET> con gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

La app de muestra implementada se conecta a tu instancia de Cloud SQL con el conector Java de Cloud SQL.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos:
    • <YOUR_KSA_NAME> con ksa-cloud-sql.
    • <LOCATION> con us-central1.
    • <YOUR_PROJECT_ID> por el ID del proyecto.
    • <YOUR-DB-SECRET> con gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos:
    • <YOUR_KSA_NAME> con ksa-cloud-sql.
    • <LOCATION> con us-central1.
    • <YOUR_PROJECT_ID> por el ID del proyecto.
    • <YOUR-DB-SECRET> con gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

cloud-sql/mysql/mysql/deployment.yaml

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos:
    • <YOUR_KSA_NAME> con ksa-cloud-sql.
    • <LOCATION> con us-central1.
    • <YOUR_PROJECT_ID> por el ID del proyecto.
    • <YOUR-DB-SECRET> con gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

Una vez configurada la app de ejemplo , puedes implementarla.

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos y ediciones:
    • Reemplaza <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Reemplaza <LOCATION> por us-central1.
    • Reemplaza <YOUR_PROJECT_ID> por el ID del proyecto.
    • Reemplaza <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Reemplaza <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    • Habilita el proxy de autenticación de Cloud SQL para conectarte a tu instancia de Cloud SQL mediante su dirección IP privada. Quita el comentario de la marca "-ip_address_types=PRIVATE" mediante la eliminación del símbolo de comentario # y su espacio en blanco final. La marca sin comentarios debería verse así:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

La app de muestra implementada se conecta a tu instancia de Cloud SQL con el conector Java de Cloud SQL.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos:
    • <YOUR_KSA_NAME> con ksa-cloud-sql.
    • <LOCATION> con us-central1.
    • <YOUR_PROJECT_ID> por el ID del proyecto.
    • <YOUR-DB-SECRET> con gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos y ediciones:
    • Reemplaza <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Reemplaza <LOCATION> por us-central1.
    • Reemplaza <YOUR_PROJECT_ID> por el ID del proyecto.
    • Reemplaza <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Reemplaza <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    • Habilita el proxy de autenticación de Cloud SQL para conectarte a tu instancia de Cloud SQL mediante su dirección IP privada. Quita el comentario de la marca "-ip_address_types=PRIVATE" mediante la eliminación del símbolo de comentario # y su espacio en blanco final. La marca sin comentarios debería verse así:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

cloud-sql/mysql/mysql/deployment.yaml

La app de ejemplo implementada se conectará a tu instancia de Cloud SQL mediante el proxy de Cloud SQL que se ejecuta en un patrón de sidecar de Kubernetes. El patrón de sidecar se logra mediante la implementación de una carga de trabajo con un contenedor adicional que comparte el mismo Pod de Kubernetes que el contenedor de la app de ejemplo.

  1. Obtén el nombre de conexión de la instancia de Cloud SQL ejecutando el comando gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Actualiza el archivo deployment.yaml en el editor de Cloud Shell. Realiza los siguientes reemplazos y ediciones:
    • Reemplaza <YOUR_KSA_NAME> por ksa-cloud-sql.
    • Reemplaza <LOCATION> por us-central1.
    • Reemplaza <YOUR_PROJECT_ID> por el ID del proyecto.
    • Reemplaza <YOUR-DB-SECRET> por gke-cloud-sql-secrets.
    • Reemplaza <INSTANCE_CONNECTION_NAME> por el nombre de conexión de la instancia de Cloud SQL recuperada del comando gcloud en el paso anterior. El formato es project_id:region:instance_name. El nombre de conexión de la instancia también se puede ver en la página Descripción general de la instancia de Cloud SQL.
    • Habilita el proxy de autenticación de Cloud SQL para conectarte a tu instancia de Cloud SQL mediante su dirección IP privada. Quita el comentario de la marca "-ip_address_types=PRIVATE" mediante la eliminación del símbolo de comentario # y su espacio en blanco final. La marca sin comentarios debería verse así:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Ejecuta el comando kubectl apply de la siguiente manera en Cloud Shell para implementar la app de muestra:
    kubectl apply -f deployment.yaml
  4. Ejecuta el comando kubectl apply de la siguiente manera para agregar un balanceador de cargas frente a la implementación, de modo que puedas acceder a él a través de Internet:
    kubectl apply -f service.yaml
  5. Ejecuta el comando kubectl get de la siguiente manera para obtener los detalles del servicio:
    kubectl get services
  6. Copie la dirección IP externa cuando esté disponible en los detalles del servicio, lo que puede tomar unos minutos.
  7. Visualiza la app de ejemplo implementada. Abre una ventana del navegador y ve a la dirección IP externa del servicio.

    Visualiza la app de muestra que se implementó

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.

  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 Google Cloud cuenta de servicio 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: