Puntos de control
Create required resources with the fully automated deployment
/ 100
Conéctate a Cloud SQL desde una aplicación en Kubernetes Engine
GSP449
Descripción general
En este lab, descubrirás lo fácil que es conectar una aplicación en Kubernetes Engine a una instancia de Cloud SQL con el contenedor de proxy de Cloud SQL como un contenedor de archivo adicional. Implementarás un clúster de Kubernetes Engine y una instancia Postgres de Cloud SQL y utilizarás el contenedor del proxy de Cloud SQL para permitir la comunicación entre ellos.
Aunque este lab se enfoca en cómo conectarse a una instancia de Cloud SQL con un contenedor del proxy de Cloud SQL, los conceptos son los mismos para cualquier servicio administrado de Google Cloud que requiera acceso a la API.
Los ingenieros de GKE Helmsman crearon este lab para ayudarte a comprender mejor Cloud SQL a través de un contenedor del proxy. Puedes ver esta demostración en GitHub en la página gke-networking-demos. Cualquier contribución a los recursos es bienvenida.
Qué aprenderás
En este lab, aprenderás a hacer lo siguiente:
- Proteger tu base de datos de accesos no autorizados a través del uso de una cuenta de servicio sin privilegios en tus nodos de Kubernetes Engine
- Colocar credenciales de una cuenta de servicio con privilegios en un contenedor que se ejecuta en Kubernetes Engine
- Usar el proxy de Cloud SQL para disminuir el trabajo que implica conectarse a tu instancia de Cloud SQL y reducir el conocimiento que tus aplicaciones tienen de tu infraestructura
Cuentas de servicio sin privilegios
A cada nodo de Kubernetes Engine se le asigna la cuenta de servicio predeterminada de Compute Engine. Esta cuenta de servicio posee una gran cantidad de privilegios y tiene acceso a muchos servicios de Google Cloud. Debido a la forma en que está configurado el SDK de Cloud, el software que escribas usará las credenciales asignadas a la instancia de Compute Engine en la que se ejecuta.
Dado que lo mejor es que tus contenedores no tengan los privilegios que posee la cuenta de servicio predeterminada de Compute Engine, deberás crear una cuenta de servicio con privilegios mínimos para tus nodos de Kubernetes Engine y, luego, crear cuentas de servicio más específicas (también con privilegios mínimos) para tus contenedores.
Cuentas de servicio con privilegios en contenedores
Las únicas dos formas de conseguir credenciales de cuentas de servicio son a través de las siguientes opciones:
- Tu instancia de host (no recomendado)
- Un archivo de credenciales
En este lab, se mostrará cómo colocar el archivo de credenciales en tu contenedor que se ejecuta en Kubernetes Engine para que tu aplicación tenga los privilegios que necesita.
Proxy de Cloud SQL
El proxy de Cloud SQL se encarga de crear y mantener una conexión a tu instancia de Cloud SQL para que no debas hacerlo tú. Esto simplifica tu administración de secretos y permite que tu aplicación no conozca los detalles de la conexión. Google empaqueta el proxy de Cloud SQL como un contenedor de Docker que se puede ejecutar junto con el contenedor de tu aplicación, en el mismo pod de Kubernetes Engine.
Arquitectura
La aplicación y su contenedor de archivo adicional se implementan en un único pod de Kubernetes (K8s) que se ejecuta en el único nodo del clúster de Kubernetes Engine. La aplicación se comunica con la instancia de Cloud SQL a través del proceso del proxy de Cloud SQL que escucha en localhost.
El manifiesto de K8s compila un objeto de implementación de una sola réplica con dos contenedores: pgAdmin y el proxy de Cloud SQL. Hay dos Secrets instalados en el clúster de Kubernetes Engine: la información de conexión de la instancia de Cloud SQL y un archivo de credenciales de clave para la cuenta de servicio; los contenedores del proxy de Cloud SQL a los que llama la API de Cloud SQL utilizan ambos Secrets.
La aplicación no necesita saber cómo conectarse a Cloud SQL ni estar expuesta a su API. El proceso de proxy de Cloud SQL se encarga de eso por la aplicación. Es importante destacar que el contenedor del proxy de Cloud SQL se ejecuta en el pod como un contenedor de “archivo adicional”.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta. -
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}} También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}} También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Activa Cloud Shell
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. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
- Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Configura tu región y zona
Algunos recursos de Compute Engine se encuentran en regiones y zonas. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región tiene una o más zonas.
Ejecuta el siguiente comando para configurar una región y zona para tu lab (puedes usar la región/zona más adecuada para tu caso):
Copia la demostración
- Ejecuta el siguiente comando para copiar los archivos de este lab:
- Ve al directorio de este lab:
Tarea 1. Implementación
La implementación está completamente automatizada. La secuencia de comandos que implementarás tomará los siguientes parámetros, en orden:
- Un nombre de usuario para tu instancia de Cloud SQL
- Un nombre de usuario para la consola de pgAdmin
- USER_PASSWORD (la contraseña para acceder a la instancia de Postgres)
- PG_ADMIN_CONSOLE_PASSWORD (la contraseña para acceder a la IU de pgAdmin)
-
Puedes crear cualquier nombre de usuario para la instancia de Cloud SQL y usar cualquier correo electrónico para la consola pgAdmin; en este ejemplo, se usa “dbadmin” y tu correo electrónico de estudiante temporal.
-
Guarda tu cuenta de estudiante en una variable:
- Ejecuta el siguiente comando para implementar la secuencia de comandos y crea los 2 nombres de usuario; se te pedirá que crees una contraseña para
dbadmin
y$PG_EMAIL
(tu cuenta de student@qwiklabs.net) en el resultado:
Dado que volverás a usar las contraseñas más adelante en este lab, no es necesario que sean difíciles.
Durante la implementación, create.sh
ejecutará las siguientes secuencias de comandos:
-
enable_apis.sh
: Habilita las APIs de Kubernetes Engine y Cloud SQL Admin. -
postgres_instance.sh
: Crea la instancia de Cloud SQL y el usuario adicional de Postgres. Ten en cuenta que se agotará el tiempo de espera de gcloud mientras se crea la instancia de Cloud SQL, por lo que la secuencia de comandos verificará de forma manual que se complete. -
service_account.sh
: Crea el archivo de credenciales y la cuenta de servicio para el contenedor del proxy de Cloud SQL. -
cluster.sh
: Crea el clúster de Kubernetes Engine. -
configs_and_secrets.sh
: Crea los secretos y el objeto ConfigMap de Kubernetes Engine, que contienen las credenciales y la string de conexión de la instancia de Cloud SQL. -
pgadmin_deployment.sh
: Crea el pod de pgAdmin4.
create.sh
.
A continuación, usa el balanceador de cargas para exponer el pod y conectarte a la instancia. Cuando termines, borra los servicios para evitar accesos no autorizados.
- Ejecuta el siguiente comando para obtener el ID del pod:
- Expón el pod a través del balanceador de cargas:
- Obtén la dirección IP del servicio:
Resultado:
-
En la consola de Cloud, ve a Menú de navegación > SQL y haz clic en el ID de la instancia.
-
En el menú de la izquierda, haz clic en Conexiones y, luego, en Herramientas de redes.
-
Con la casilla IP pública marcada, haz clic en Agregar una red.
-
Nombra la red y, luego, otórgale acceso público:
-
Haz clic en Listo.
-
Haz clic en Guardar.
-
Abre una pestaña nueva y conéctate a pgAdmin en tu navegador con th pgAdmin <SVC_IP>:
- Accede a la IU de pgAdmin con la siguiente información:
- <PGADMIN_USERNAME> (tu cuenta temporal de student@qwiklabs.net) en el campo “Email Address”
- <PG_ADMIN_CONSOLE_PASSWORD> que definiste antes
-
Vuelve a la consola de Cloud y a la página de SQL. Haz clic en la pestaña Descripción general.
-
Copia la dirección IP pública.
-
En la consola de pgAdmin, en el panel del lado izquierdo, haz clic en Servers y, luego, en Add New Server.
-
En la pestaña General, asígnale un nombre a tu servidor y, luego, haz clic en la pestaña Connection.
-
Usa las credenciales <DATABASE_USER_NAME>(dbadmin) y <USER_PASSWORD> que creaste anteriormente para conectarte a 127.0.0.1:5432:
- Host name: pega la dirección IP pública que copiaste
-
Username:
<DATABASE_USER_NAME>
(dbadmin) -
Password:
<USER_PASSWORD>
que creaste
- Haz clic en Guardar.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si creaste de forma correcta los recursos necesarios con la implementación completamente automatizada, verás una puntuación de evaluación.
Tarea 2. Validación
La validación está completamente automatizada. La secuencia de comandos de validación verifica si existen la instancia de Cloud SQL, el clúster de Kubernetes Engine y el pod en ejecución. Todos estos recursos deberían existir luego de que se complete la secuencia de comandos de implementación.
- Para validar estas tres implementaciones, ejecuta el siguiente comando en Cloud Shell:
La secuencia de comandos usa los parámetros INSTANCE_NAME
: El nombre de la instancia Cloud SQL existente.
Un resultado exitoso se ve así:
Tarea 3. Eliminación
El desmontaje está completamente automatizado. La secuencia de comandos de desmontaje borra todos los recursos que haya creado la secuencia de comandos de implementación.
- Para realizar la eliminación, ejecuta el siguiente comando:
La secuencia de comandos usa el parámetro INSTANCE_NAME
: El nombre de la instancia de Cloud SQL existente.
teardown.sh
ejecuta las siguientes secuencias de comandos:
-
delete_resources.sh
: Borra todo excepto la instancia de Cloud SQL -
delete_instance.sh
: Borra la instancia de Cloud SQL
Tarea 4. Soluciona problemas en tu propio entorno
Cuando creas una instancia de Cloud SQL, obtienes el siguiente error:
Solución
No puedes volver a usar el nombre de una instancia hasta una semana después de haberla borrado. Para obtener más información, consulta cómo Borrar instancias.
¡Felicitaciones!
Conectaste una aplicación en Kubernetes Engine a una instancia de Cloud SQL con el contenedor de proxy de Cloud SQL como un contenedor de archivo adicional. Luego, implementaste un clúster de Kubernetes Engine y una instancia de Cloud SQL Postgres y utilizaste el contenedor de proxy de Cloud SQL para permitir la comunicación entre ellos.
Finaliza la Quest
Este lab de autoaprendizaje es parte de la Quest Google Kubernetes Engine Best Practices. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Próximos pasos/Más información
Consulta Instrucciones de instalación de Kubernetes, donde se muestra cómo implementar una aplicación alojada en contenedores para varias plataformas.
Última actualización del manual: 16 de octubre de 2023
Prueba más reciente del lab: 17 de octubre de 2023
Copyright 2024 Google LLC. Este software se proporciona tal como está, sin garantías ni declaraciones para ningún uso o propósito. El uso que hagas de él está sujeto a tu acuerdo con Google.