Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you restart it, you'll have to start from the beginning.
- Click Start lab to begin
Create required resources with the fully automated deployment
/ 100
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.
En este lab, aprenderás a hacer lo siguiente:
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.
Las únicas dos formas de conseguir credenciales de cuentas de servicio son a través de las siguientes opciones:
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.
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.
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”.
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:
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:
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.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
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.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
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.
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.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
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):
La implementación está completamente automatizada. La secuencia de comandos que implementarás tomará los siguientes parámetros, en orden:
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:
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.
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>:
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:
<DATABASE_USER_NAME>
(dbadmin)<USER_PASSWORD>
que creastePrueba 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.
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.
La secuencia de comandos usa los parámetros INSTANCE_NAME
: El nombre de la instancia Cloud SQL existente.
Un resultado exitoso se ve así:
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.
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 SQLdelete_instance.sh
: Borra la instancia de Cloud SQLCuando creas una instancia de Cloud SQL, obtienes el siguiente error:
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.
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.
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.
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.