arrow_back

Cómo usar Cloud SQL con Google Kubernetes Engine

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Cómo usar Cloud SQL con Google Kubernetes Engine

Lab 1 hora universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

En este lab, configurarás un objeto Deployment de Kubernetes de WordPress conectado a Cloud SQL a través del proxy de SQL. El proxy de SQL te permite interactuar con una instancia de Cloud SQL como si estuviera instalada localmente (localhost:3306) y, aunque esté en un puerto no seguro localmente, el proxy de SQL te brinda seguridad a través de la conexión que llega a tu instancia de Cloud SQL.

Para completar este lab, deberás crear varios componentes. Primero, crearás un clúster de GKE. Luego, crearás una instancia de Cloud SQL a la que conectarte y una cuenta de servicio con la que otorgar permiso a tus Pods para que accedan a la instancia de Cloud SQL. Esto se autenticará usando Workload Identity. Por último, implementarás WordPress en tu clúster de GKE con el proxy de SQL como archivo adicional, conectado a tu instancia de Cloud SQL.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Crear una instancia y una base de datos de Cloud SQL para WordPress
  • Crear credenciales y objetos Secret de Kubernetes para la autenticación de la aplicación
  • Configurar Workload Identity
  • Configurar un objeto Deployment con una imagen de WordPress para usar el proxy de SQL
  • Instalar el proxy de SQL como un contenedor de archivo adicional y usarlo para otorgar acceso SSL a una instancia de Cloud SQL externa al clúster de GKE

Configuración del lab

Accede a Qwiklabs

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Después de completar los pasos iniciales de acceso, aparecerá el panel del proyecto.

Activa Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1. Conéctate al clúster de GKE del lab

  1. En Cloud Shell, escribe el siguiente comando para configurar la variable de entorno correspondiente a la zona de Google Cloud y al nombre del clúster:
export my_cluster=autopilot-cluster-1 export my_project=$(gcloud config get-value project) export my_region={{{ project_0.default_region | "" }}}
  1. Configura el completado de línea de comando para la herramienta de línea de comandos de kubectl:
source <(kubectl completion bash)
  1. Configura el acceso al clúster para kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region

Tarea 2. Habilita las APIs de Cloud SQL

  1. En la consola de Google Cloud, en el menú de navegación (Ícono del menú de navegación), haz clic en APIs y servicios.

  2. Haz clic en + Habilitar APIs y servicios.

  3. En Buscar API y servicios, escribe SQL y, luego, haz clic en el mosaico de la API de Cloud SQL.

  4. Haz clic en Habilitar para habilitar la API de Cloud SQL.

Si la API ya está habilitada, verás el botón Administrar con el mensaje API habilitada. En ese caso, no deberás realizar ninguna acción.

  1. Repite el paso anterior para habilitar la API de sqladmin.

Tarea 3. Crea una instancia de Cloud SQL

  1. En Cloud Shell, ejecuta el siguiente comando para crear la instancia:
gcloud sql instances create sql-instance --tier=db-n1-standard-2 --region=$my_region
  1. En la consola de Google Cloud, navega a SQL.
  2. Deberías ver sql-instance en la lista. Haz clic en el nombre y, luego, en el menú Usuarios.
Nota: Deberás esperar unos minutos para que la instancia de Cloud SQL se aprovisione.

Cuando veas el usuario root existente en la lista, podrás continuar con el próximo paso.

  1. Haz clic en Agregar cuenta de usuario y crea una cuenta. Utiliza sqluser como nombre de usuario y sqlpassword como contraseña.

  2. Deja la opción Nombre del host establecida en Permitir cualquier host (%) y haz clic en AGREGAR.

  3. Sin salir de la instancia (sql-instance), regresa al menú Descripción general y copia el nombre de conexión de tu instancia.

Es posible que debas desplazarte hacia abajo para verlo.

  1. Crea una variable de entorno para conservar el nombre de tu instancia de Cloud SQL. Para ello, reemplaza el marcador de posición por el nombre que copiaste en el paso anterior:
export SQL_NAME=[Cloud SQL Instance Name]
  1. Tu comando debería ser similar al siguiente:
$ export SQL_NAME=qwiklabs-gcp-d03ee58ad9ad507e:us-central1:sql-instance
  1. Conéctate a tu instancia de Cloud SQL:
gcloud sql connect sql-instance
  1. Cuando se te solicite que ingreses la contraseña raíz, presiona Intro. De forma predeterminada, la contraseña de usuario SQL raíz está en blanco.

Aparecerá el mensaje mysql> para indicarte que te conectaste a la instancia de Cloud SQL usando el cliente MySQL.

  1. Crea la base de datos necesaria para WordPress. Se llamará wordpress de forma predeterminada:
create database wordpress;
  1. Selecciona la base de datos wordpress:
use wordpress;
  1. Selecciona la base de datos wordpress:
show tables;

Se informará que el conjunto está vacío, ya que aún no creaste ninguna tabla.

  1. Sal del cliente MySQL:
exit;

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una instancia de Cloud SQL

Tarea 4. Prepara una cuenta de servicio con permiso para acceder a Cloud SQL

  1. Para crear una cuenta de servicio, en la consola de Google Cloud, navega hasta IAM y administración > Cuentas de servicio.

  2. Haz clic en + Crear cuenta de servicio.

  3. Para el Nombre de la cuenta de servicio, especifica sql-access y, luego, haz clic en Crear y continuar.

  4. Haz clic en Selecciona un rol.

  5. Busca Cloud SQL, selecciona Cliente de Cloud SQL y haz clic en Continuar.

  6. Haz clic en Listo.

  7. Busca la cuenta de servicio sql-access y haz clic en el ícono de tres puntos en la columna Acciones.

  8. Selecciona Administrar claves.

  9. Luego, haz clic en AGREGAR CLAVE y selecciona Crear clave nueva.

  10. Asegúrate de que esté seleccionado el tipo de clave JSON y haz clic en CREAR.

Se creará un par de claves públicas/privadas, y el archivo de claves privadas se descargará en tu computadora automáticamente. Necesitarás este archivo JSON más adelante.

  1. Haz clic en Cerrar para cerrar el diálogo de notificación.
  2. Busca el archivo de credenciales JSON que descargaste y cámbiale el nombre a credentials.json.

Tarea 5. Crea una cuenta de servicio de Kubernetes y configura Workload Identity

  1. En Cloud Shell, ejecuta el siguiente comando para crear la cuenta de servicio de Kubernetes:
kubectl create serviceaccount gkesqlsa
  1. En Cloud Shell, ejecuta el siguiente comando para vincular la cuenta de servicio de Google Cloud con la cuenta de servicio de Kubernetes que acabas de crear:
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:$my_project.svc.id.goog[default/gkesqlsa]" \ sql-access@$my_project.iam.gserviceaccount.com
  1. En Cloud Shell, ejecuta el siguiente comando para anotar la cuenta de servicio de Kubernetes con los detalles de la cuenta de servicio de Google Cloud:
kubectl annotate serviceaccount \ gkesqlsa \ iam.gke.io/gcp-service-account=sql-access@$my_project.iam.gserviceaccount.com

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una cuenta de servicio

Tarea 6. Crea objetos Secret

Ahora, crearás dos objetos Secret de Kubernetes: uno para proporcionar las credenciales de MySQL y otro para proporcionar las credenciales de Google (la cuenta de servicio).

  1. Para crear un objeto Secret para tus credenciales de MySQL, escribe lo siguiente en Cloud Shell:
kubectl create secret generic sql-credentials \ --from-literal=username=sqluser\ --from-literal=password=sqlpassword

Si utilizaste un nombre de usuario y una contraseña diferentes cuando creaste las cuentas de usuario de Cloud SQL, sustitúyelos aquí.

  1. En Cloud Shell, haz clic en Más (Ícono Más) en el extremo derecho de la barra de menú de Cloud Shell.

  2. Selecciona Subir, deja la opción Archivo seleccionada y haz clic en Elegir archivos. Luego, sube a Cloud Shell el archivo de credenciales credentials.json que descargaste en la tarea anterior.

  3. En Cloud Shell, mueve el archivo de credenciales al directorio de trabajo actual:

mv ~/credentials.json .

Los archivos subidos a Cloud Shell se suben al directorio principal del usuario. Es más fácil trabajar con los archivos en el directorio de trabajo actual con kubectl, de modo que, si lo mueves, el próximo paso será más sencillo.

  1. Crea un Secret para las credenciales de tu cuenta de servicio de Google Cloud con el siguiente comando:
kubectl create secret generic google-credentials\ --from-file=key.json=credentials.json

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear objetos Secret

Tarea 7. Implementa el agente del proxy de SQL como un contenedor de archivo adicional

Vamos a crear un archivo de manifiesto de implementación llamado sql-proxy.yaml que implemente un contenedor de aplicaciones de WordPress de demostración con el agente del proxy de SQL como un contenedor de archivo adicional.

En la configuración del entorno del contenedor de WordPress, se utiliza la dirección IP del host local para especificar WORDPRESS_DB_HOST. El contenedor de archivo adicional cloudsql-proxy está configurado para apuntar a la instancia de Cloud SQL que creaste en la tarea anterior. El nombre de usuario y la contraseña de la base de datos se pasan al contenedor de WordPress como claves secretas, y se configura Workload Identity. También se crea un objeto Service para que puedas conectarte a la instancia de WordPress desde Internet.

Crea y abre un archivo llamado sql-proxy.yaml con nano usando el siguiente comando:

nano sql-proxy.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo sql-proxy.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: serviceAccountName: gkesqlsa containers: - name: web image: gcr.io/cloud-marketplace/google/wordpress:6.1 #image: wordpress:5.9 ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: 127.0.0.1:3306 # These secrets are required to start the pod. # [START cloudsql_secrets] - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: sql-credentials key: username - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: sql-credentials key: password # [END cloudsql_secrets] # Change '<INSTANCE_CONNECTION_NAME>' here to include your Google Cloud # project, the region of your Cloud SQL instance and the name # of your Cloud SQL instance. The format is # $PROJECT:$REGION:$INSTANCE # [START proxy_container] - name: cloudsql-proxy image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.8.0 args: - "--structured-logs" - "--port=3306" - "<INSTANCE_CONNECTION_NAME>" securityContext: runAsNonRoot: true --- apiVersion: "v1" kind: "Service" metadata: name: "wordpress-service" namespace: "default" labels: app: "wordpress" spec: ports: - protocol: "TCP" port: 80 selector: app: "wordpress" type: "LoadBalancer" loadBalancerIP: ""
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

  2. Presiona Ctrl + X para salir del editor de texto nano.

Las secciones importantes que tiene este manifiesto son las siguientes:

  • En la sección spec, la cuenta de servicio de Kubernetes está configurada.
  • En la sección env de WordPress, la variable WORDPRESS_DB_HOST está establecida en 127.0.0.1:3306. Esto se conectará a un contenedor en el mismo Pod que escucha en el puerto 3306. Este es el puerto que el proxy de SQL escucha de forma predeterminada.
  • En la sección env de WordPress, las variables WORDPRESS_DB_USER y WORDPRESS_DB_PASSWORD se establecen usando valores almacenados en el objeto Secret sql-credential que creaste en la última tarea.
  • En la sección del contenedor cloudsql-proxy, la opción del comando que define el nombre de la conexión de SQL, <INSTANCE_CONNECTION_NAME>, contiene una variable de marcador de posición que no se configura usando un objeto Secret o ConfigMap y, por lo tanto, debe actualizarse directamente en este manifiesto de ejemplo para que apunte a tu instancia de Cloud SQL.
  • La sección Service que está al final crea un objeto LoadBalancer externo llamado "wordpress-service" que permite acceder a la aplicación desde direcciones de Internet externas.
  1. Utiliza sed si quieres actualizar la variable de marcador de posición para el nombre de la conexión de SQL al nombre de tu instancia de Cloud SQL:
sed -i 's/<INSTANCE_CONNECTION_NAME>/'"${SQL_NAME}"'/g'\ sql-proxy.yaml Nota: El comando sed en UNIX significa editor de transmisiones y puede realizar muchas funciones en los archivos, como reemplazar, insertar o borrar. Sin embargo, el uso más común de sed es la función de sustitución. Con sed, puedes editar archivos incluso sin abrirlos, lo que constituye una forma mucho más rápida de buscar y reemplazar el contenido de un archivo en lugar de abrirlo primero en un editor y, luego, modificarlo.
  1. Implementa la aplicación:
kubectl apply -f sql-proxy.yaml
  1. Consulta el estado del Deployment.
kubectl get deployment wordpress Nota: Debes repetir este comando hasta que veas que una instancia está disponible.

Resultado:

NAME READY UP-TO-DATE AVAILABLE AGE wordpress 1/1 1 1 45s
  1. Genera una lista de los servicios en tu clúster de GKE:
kubectl get services

La dirección IP del LoadBalancer externo para wordpress-service es la dirección que utilizarás para conectarte a tu blog de WordPress.

  1. Repite el comando hasta obtener una dirección externa como se muestra aquí.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) kubernetes ClusterIP 10.12.0.1 443/TCP wordpress-service LoadBalancer 10.12.3.17 35.238.218.6 80:31095/TCP

Haz clic en Revisar mi progreso para verificar el objetivo.

Implementar el agente del proxy de SQL como un contenedor de archivo adicional

Tarea 7. Conéctate a tu instancia de WordPress

  1. Abre una nueva pestaña en el navegador y conéctate a tu sitio de WordPress mediante la dirección IP del LoadBalancer externo. De este modo, se iniciará el asistente de instalación inicial de WordPress.
  2. Selecciona Español (Latinoamérica) y haz clic en Continuar.
  3. Ingresa un nombre para el Título del sitio.
  4. Ingresa un Nombre de usuario y una Contraseña para administrar el sitio.
  5. Ingresa una dirección de correo electrónico.

Estos valores no tienen demasiada importancia, ya que no necesitarás usarlos.

  1. Haz clic en Instalar WordPress.

Después de unos segundos, se te notificará que la instalación se realizó correctamente. Puedes acceder si deseas explorar la interfaz de administrador de WordPress, pero no es necesario que lo hagas para este lab.

El proceso de inicialización creó nuevos datos y tablas de base de datos en la base de datos wordpress de tu instancia de Cloud SQL. Ahora, comprobarás que estas nuevas tablas de base de datos se hayan creado con el contenedor del proxy de SQL.

  1. Regresa a Cloud Shell y conéctate a tu instancia de Cloud SQL:
gcloud sql connect sql-instance
  1. Cuando se te solicite que ingreses la contraseña raíz, presiona Intro. De forma predeterminada, la contraseña de usuario SQL raíz está en blanco.

Aparecerá el mensaje mysql> para indicarte que te conectaste a la instancia de Cloud SQL usando el cliente MySQL.

  1. Selecciona la base de datos wordpress:
use wordpress;
  1. Selecciona la base de datos wordpress:
show tables;

Se mostrarán las nuevas tablas de base de datos que se crearon cuando se inicializó WordPress, lo cual demuestra que el contenedor de archivo adicional del proxy de SQL se configuró de manera correcta:

MySQL [wordpress]> show tables; +-----------------------+ | Tables_in_wordpress | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 12 rows in set (0.19 sec)
  1. Obtén una lista de todas las entradas de las tablas de usuario de WordPress:
select * from wp_users;

Se creará una lista del registro de base de datos para la cuenta de administrador de WordPress, con el correo electrónico que elegiste cuando inicializaste WordPress.

  1. Sal del cliente MySQL:
exit;

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.