Docker Avanzado y Kubernetes (K3s)
- Duración: 4 tardes (16 horas lectivas).
- Modalidad: Online en directo / Presencial.
- Público objetivo: Estudiantes y juniors que ya conocen las bases de Docker y necesitan dar el salto a la optimización de imágenes para producción y a los conceptos fundamentales de orquestación con Kubernetes usando K3s.
El Problema
Crear un contenedor básico para desarrollo local está bien, pero en producción surgen nuevos retos:
- Imágenes gigantes de más de 1 GB que tardan minutos en desplegarse.
- La necesidad de escalar aplicaciones cuando aumenta el tráfico.
- Gestionar caídas automáticas, enrutamiento de tráfico y configuración en clusters.
Kubernetes es el estándar de la industria, pero su versión tradicional es demasiado pesada y compleja para empezar. K3s nos permite aprender y operar exactamente los mismos conceptos de Kubernetes de forma rápida, ligera y eficiente.
Temario Detallado (Tarde por Tarde)
Lunes: Multi-Stage Builds y Optimización Extrema
- El problema de las imágenes de desarrollo en producción: Código fuente, SDKs y herramientas innecesarias en el contenedor final.
- Patrón Multi-Stage Build: Separar la etapa de compilación (build) de la etapa de ejecución (runtime).
- Elegir la imagen base adecuada: Comparativa entre imágenes Debian/Ubuntu, Alpine, Distroless y JREs ligeras.
- Seguridad en contenedores: Ejecución con usuarios no privilegiados (
USER nonroot), análisis de capas y limpieza de caché. - Ejercicio práctico: Reducir una imagen de aplicación (Java/Spring Boot o Node.js) de 800 MB a menos de 150 MB manteniendo la seguridad.
Martes: Redes Avanzadas en Docker y Registros Privados
- Profundización en redes de Docker: Drivers
bridge,host,noney redes personalizadas. - Inspección de tráfico: Diagnóstico de comunicación entre contenedores y resolución de problemas DNS internos.
- Gestión de Registros de Imágenes: Crear y ejecutar un Registro Docker local/privado.
- BuildKit y Caché Avanzada: Acelerar los tiempos de construcción de imágenes reutilizando capas de dependencias.
- Ejercicio práctico: Configurar un registro privado local, construir una imagen optimizada con BuildKit y subirla al registro.
Miércoles: Introducción a Kubernetes con K3s
- ¿Qué es Kubernetes y por qué K3s?: Ventajas de K3s como distribución ligera certificada por CNCF.
- Instalación y arquitectura: Control Plane, Worker Nodes,
k3sy la herramienta de controlkubectl. - El objeto básico (
Pod): Por qué Kubernetes no despliega contenedores directamente sino Pods. - Estrategia declarativa (YAML): Pasar de ejecutar comandos por consola a definir el estado deseado en archivos
.yaml. - Ejercicio práctico: Desplegar un cluster local de K3s y lanzar los primeros Pods mediante manifiestos YAML.
Jueves: Despliegue, Escalado y Configuración en K3s
- Gestión de réplicas y estado (
Deployment): Escalado manual de Pods, sustitución automática ante fallos y actualizaciones sin caídas (rolling updates). - Exposición de servicios (
Service): TiposClusterIPyNodePortpara comunicación interna entre Pods. - Inyección de configuración (
ConfigMapySecret): Desacoplar variables de entorno, archivos de propiedades y contraseñas del código. - Ejercicio práctico: Desplegar una API escalada a 3 réplicas conectada a una base de datos, gestionando sus credenciales de forma segura con
Secret.
Viernes: Ingress, Persistencia y Despliegue End-to-End
- Enrutamiento HTTP/HTTPS (
Ingress): Configurar el Ingress Controller de K3s (Traefik) para exponer servicios mediante dominios locales. - Persistencia en K3s: Introducción a
PersistentVolume(PV) yPersistentVolumeClaim(PVC) usando Local Path Provisioner. - Salud de la aplicación: Configuración de
LivenessProbeyReadinessProbepara reiniciar Pods colgados. - Reto final: Desplegar en el cluster K3s una arquitectura completa (Frontend + Backend + Base de Datos) con persistencia, configuración externa y punto de entrada Ingress.
Lo que te llevas
- Habilidad para escribir Dockerfiles profesionales con Multi-Stage builds listos para producción.
- Dominio de los comandos y conceptos clave de Kubernetes (
kubectl, Pods, Deployments, Services, Ingress). - La capacidad de montar y operar tus propios clusters ligeros con K3s para tus proyectos personales o profesionales.