¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Orquestación, clustering y Gestión (Docker avanzado)
Contenido perteneciente al curso Docker avanzado.
Orquestación
En la actualidad las aplicaciones son complejas y por regla general no llega con desplegar un solo contenedor en producción
Lo habitual es necesitar varios, que además deben escalar de manera diferente y otras complejidades.
Por ejemplo, un contenedor para el Front-End, uno o varios para la interfaz de servicios, otro para la base de datos… Por no hablar de si utilizas microservicios…
Todo esto da pie a la necesidad de la orquestación de contenedores, es decir, disponer de alguna herramienta o sistema que automatiza el despliegue, la gestión, el escalado, la interconexión y la disponibilidad de nuestras aplicaciones basadas en contenedores.
Un orquestador de contenedores se ocupa de cuestiones como:
- Configuración automática
- Despliegue y “levantado” automático de servicios basados en contenedores
- Balanceado de carga
- Auto-escalado y auto-reinicio de contenedores
- Control de la “salud” de cada contenedor
- Intercambio de datos y networking
- Mantenimiento de parámetros “secretos” y configuraciones
Kubernetes
Kubernetes es de hecho el motor de orquestación de contenedores más popular que existe en el mercado.
Comenzó siendo un proyecto de Google y miles de equipos de desarrolladores lo usan para desplegar contenedores en producción.
Google afirma que ejecuta miles de millones de contenedores usando Kubernetes cada semana.
La herramienta funciona agrupando contenedores que componen una aplicación en unidades lógicas para una fácil gestión y descubrimiento.
Docker Swarm
Swarm es la solución que propone Docker
Viene incluido junto al motor de Docker desde la versión 1.12.0, y ofrece muchas funciones avanzadas integradas como el descubrimiento de servicios, balanceo de carga, escalado y seguridad
Swarm sigue la filosofía de Docker de centrarse en la simplicidad y en la experiencia del desarrollador
Se podría decir que es más fácil de usar que Kubernetes de inicio, pero no tan potente y no tan adoptado por las empresas, los proveedores Cloud o por la comunidad
Google Kubernetes Engine (GKE)
Montado sobre Kubernetes, permite desplegar, gestionar y escalar aplicaciones de contenedores en la nube de Google u El objetivo de GKE es optimizar la productividad del departamento de desarrollo al mejorar la gestión de las cargas de trabajo basadas en contenedores
Oculta tanto las tareas de gestión simple como aquellas más complejas detrás de herramientas de líneas de comando, usando interfaces transparentes y fáciles de usar.
Azure Container Service (AKS)
Hace relativamente poco se le cambió el nombre de marca de ACS a AKS
El servicio de Azure es código abierto y está optimizado para su uso en las máquinas virtuales de Azure, denominadas Azure Virtual Machine
Proporciona las herramientas necesarias para crear, configurar y gestionar la infraestructura de contendedores Docker abiertos
AKS ofrece desarrollo simplificado de aplicaciones basadas en contenedores y despliegue con soporte para Kubernetes, Mesosphere DC/OS, o Swarm para la orquestación.
Amazon ECS
El servicio de AWS para orquestación de contenedores, Amazon ECS, es un sistema de gestión muy escalable que permite a los desarrolladores ejecutar aplicaciones en contenedores sobre instancias EC2.
Está formado por muchos componentes integrados que permiten la fácil planificación y despliegue de clústeres, tareas y servicios Docker.
Aunque, como principal desventaja, no existe soporte para ejecutar contenedores fuera de EC2, los aspectos a favor incluyen ventajas propias del servicio AWS tales como CloudTrail, CloudWatch, Elastic Load Balancing, etc.
Práctica
Kubernetes tiene una documentación interactiva muy buena para la introducción a su entorno: https://kubernetes.io/docs/tutorials/kubernetes-basics/
