Resumen
En este laboratorio se trabaja el despliegue de aplicaciones basadas en contenedores en clouds diferentes. Se practicará creando una imagen de una aplicación y subiéndola a Docker Hub. Posteriormente, se preparará una máquina virtual con Docker en OpenStack y se desplegará la imagen de Docker Hub. Finalmente, se desplegará la misma imagen en una máquina virtual de Google Compute Engine y en Google Cloud Run.
-
Crear imágenes propias
-
Subir imágenes a un registro de contenedores
-
Desplegar contenedores en máquinas virtuales
-
Interactuar con el Google Container Registry
-
Desplegar contenedores en Cloud Run
1. Recursos
Puedes aprender a usar Docker siguiendo el Tutorial Desarrollo de aplicaciones con Docker o bien en forma de videos donde se dan las explicaciones con mayor detalle:
-
Introducción
-
Bind mounts
-
Imágenes
-
Docker Compose
-
Desarrollo de una aplicación con Docker Compose
2. Actividades
2.1. Creación de imagen
-
Clonar el repositorio con el proyecto de una web estática básica.
-
Modificar el código del
index.html
añadiendo debajo del encabezado<h1 class="display-3">Web estática básica</h1>
la línea siguiente
<h2 class="display-6">Nombre Completo (<usuarioUALSin@inlumine.ual.es>)</h2>
sustituyendo los valores por tu nombre completo y tu usuario UAL sin
@inlumine.ual.es
. -
Modificar el
Dockerfile
para que:-
Tome como base una imagen de Apache (httpd)
-
Añada el código de la aplicación al directorio donde Apache sirve su contenido (
/usr/local/apache2/htdocs/
) -
Cambie el punto de montaje del volumen a
/usr/local/apache2/htdocs/
-
-
Crear una imagen Docker con el tag
<usuarioDockerHub>/web-estatica-basica:v0
(cambiando el usuario de Docker Hub por el valor correspondiente). -
Subir la imagen a Docker Hub
2.2. Creación de una máquina virtual en OpenStack-DI con un contenedor desplegado
-
Lanzar una instancia (máquina virtual) seleccionando una imagen disponible de Ubuntu 22.04.3 LTS (Jammy Jellyfish).
ImportantEn el paso del Asistente de OpenStack para la creación de una nueva instancia especificar que No cree un nuevo volumen para la nueva instancia.
-
Configurar el grupo de seguridad default y añadir las reglas del puerto
SSH
(22) para que se pueda acceder a ella por SSH yHTTP
(80) para que se pueda acceder a ella por el puerto 80. -
Seleccionar el Sabor (Tamaño) de la instancia:
small
(1 vCPU, 2 GB RAM y 20 GB de disco). -
En
Configuración
, añadir enCustomization Script
el script de instalación de Docker y Docker Compose. -
Asignar una IP flotante a la instancia creada.
-
Acceder a la instancia creada mediante una terminal indicando su IP flotante.
-
Editar el archivo
/home/ubuntu/.ssh/authorized_keys
y añadir la clave pública del profesor, disponible en el foro general de la asignatura en Aula virtual. -
Ejecutar un contenedor en modo dettached con
docker run
a partir de la imagen de Docker Hub del ejercicio anterior haciendo que el contenedor se muestre en el puerto 80. -
Adjuntar en la actividad disponible en Aula Virtual la dirección IP flotante de la instancia creada.
Al acceder a la instancia desde un navegador debe mostrarse la web que está ejecutando el contenedor y mostrar un resultado similar al de esta figura.
2.3. Creación de una máquina virtual en Google Cloud con un contenedor desplegado
Google Cloud Compute Engine permite la creación de una instancia inicializada con una imagen Docker. Sigue los pasos siguientes:
-
Crear en Google Cloud Compute Engine una nueva instancia de máquina virtual con las características siguientes:
-
Nombre:
web-estatica-basica
-
Configuración de máquina
-
Serie:
N1
-
Tipo de máquina:
g1-small
(1 vCPU y 1.7 GB de RAM)
-
-
-
Activar la casilla de verificación
Desplegar una imagen de contenedor en esta instancia de VM
-
En
Imagen del contenedor
introducir el nombre completo de la imagen subida a Docker Hub en el ejercicio anterior (p.e.ualmtorres/web-estatica-basica:v0
)NoteAl activar el despliegue de una imagen de contenedor en la instancia, la imagen del disco de arranque pasa a ser una imagen optimizada para contenedores.
-
Activar la casilla de verificación
Permitir el tráfico HTTP
-
Crear la instancia.
-
Adjuntar en la actividad disponible en Aula Virtual la dirección IP de la instancia creada.
Transcurridos unos instantes, la instancia será creada y se desplegará la imagen seleccionada. Google Cloud le asignará una IP externa. Al pulsarla se mostrará la web desplegada en el contenedor con la personalización de nuestro nombre y usuario en la UAL.
2.4. Desplegar un contenedor en Google Cloud Run
Google Cloud Run es una plataforma gestionada para el despliegue y escalado de aplicaciones basadas en contenedores. Cloud Run aumenta o disminuye la infraestructura de forma elástica en función del tráfico en un modelo de pago por uso.
Sigue los pasos siguientes:
-
Seleccionar Cloud Run en la sección Compute del menú de navegación.
-
En la barra de herramientas superior selecciona
Crear servicio
. -
Dejar Cloud Run` como plataforma de despliegue, elegir una región e introducir un nombre de servicio (p.e.
web-estatica-basica
) -
Pulsar
Seleccionar
para seleccionar la imagen subida al Container Registry.Aparecerá un cuadro de diálogo para que indiquemos la versión exacta de la imagen que queremos desplegar. Container Registry mantiene un control de versiones sobre las imágenes. Seleccionar la versión deseada.
-
Desplegar Configuración avanzada e introducir el puerto del contenedor al que se envían las peticiones
Revisar los valores de capacidad de memoria, CPU, tiempos de espera y peticiones por contenedor. Estos valores son lo que se usarán para aumentar o reducir el número de instancias del contenedor en función de su carga. Prestar atención al número de instancias para el autoescalado.
-
Ir al paso siguiente
-
Configurar las peticiones HTTP sin autenticar. Es la opción para webs y APIs públicas.
-
Crear el servicio
-
Adjuntar en la actividad disponible en Aula Virtual la URL del servicio creado.
El servicio ha quedado desplegado como un contenedor y está disponible en la URL indicada. Cloud Run muestra información de interés sobre el servicio creado incluyendo URL de la imagen, puertos, capacidad asignada, instancias para el autoescalado, y demás.
También proporciona gráficos con métricas de uso, registro de logs y otras opciones interesantes.
Note
|
Cada servicio de Cloud Run tiene un punto de conexión único y autoescala los contenedores desplegados. Además, a partir de dos imágenes desplegadas es posible gestionar el tráfico que se dirige a cada uno de los contenedores de cada versión. |
La figura siguiente ilustra la aplicación desplegada.
3. Detener los recursos iniciados
La instancia creada en Compute Engine y el contenedor desplegado en Cloud Run consumen crédito del cupón de la asignatura mientras estén activos. Haz una parada de los recursos no necesarios para no malgastar el crédito del cupón de la asignatura en Google Cloud. Se trata de detenerlos, no de eliminarlos. En otras actividades los volveremos a iniciar. Mientras tanto, deben quedar detenidos.