14 herramientas de orquestación de contenedores para DevOps

Hablemos de algunas de las herramientas populares de orquestación de contenedores disponibles en el mercado.

¿Qué es una orquestación de contenedores?

Las plataformas de contenedores como Docker son muy populares en estos días para empaquetar aplicaciones basadas en una arquitectura de microservicios. Los contenedores se pueden hacer altamente escalables, que se pueden crear a pedido. Si bien esto es bueno para algunos contenedores, imagine que tiene cientos de ellos.

Se vuelve extremadamente difícil gestionar el ciclo de vida de los contenedores y su gestión cuando los números aumentan dinámicamente con la demanda.

La orquestación de contenedores resuelve el problema al automatizar la programación, la implementación, la escalabilidad, el equilibrio de carga, la disponibilidad y la conexión en red de los contenedores. La orquestación de contenedores es la automatización y gestión del ciclo de vida de contenedores y servicios.

Es un proceso de gestión y organización de múltiples contenedores y arquitectura de microservicios a escala.

Afortunadamente, hay muchas herramientas de orquestación de contenedores disponibles en el mercado.

¡Explorémoslos!

Kubernetes

Lo has adivinado, ¿no?

Kubernetes es una plataforma de código abierto diseñada originalmente por Google y ahora mantenida por Cloud Native Computing Foundation. Kubernetes admite tanto la configuración declarativa como la automatización. Puede ayudar a automatizar la implementación, el escalado y la gestión de cargas de trabajo y servicios en contenedores.

Imagen de Kubernetes.io

La API de Kubernetes ayuda a establecer la comunicación entre los usuarios, los componentes del clúster y los componentes externos de terceros. El plano de control y los nodos de Kubernetes se ejecutan en un grupo de nodos que juntos forman el clúster. La carga de trabajo de la aplicación consta de uno o más pods que se ejecutan en los nodos de trabajo. El plano de control administra los pods y los nodos de trabajo.

Empresas como Babylon, Booking.com, AppDirect utilizan ampliamente Kubernetes.

Características

  • Detección de servicios y equilibrio de carga
  • Orquestación de almacenamiento
  • Despliegues y reversiones automatizados
  • Escalado horizontal
  • Gestión de secretos y configuraciones
  • Autosanación
  • Ejecución por lotes
  • Doble pila IPv4/IPv6
  • Embalaje automático en contenedores

¿Quieres aprender Kubernetes? Echa un vistazo a estos recursos de aprendizaje.

OpenShift

ofertas redhat OpenShift Plataforma de contenedores como servicio (PaaS). Ayuda en la automatización de aplicaciones sobre recursos seguros y escalables en entornos de nube híbrida. Proporciona plataformas de nivel empresarial para crear, implementar y administrar aplicaciones en contenedores.

Imagen de Openshift

Está construido sobre el motor Redhat Enterprise Linux y Kubernetes. Openshift tiene varias funcionalidades para administrar clústeres a través de UI y CLI. Redhat ofrece Openshift en dos variantes más,

  • Openshift Online: ofrecido como software como servicio (SaaS)
  • OpenShift Dedicated: ofrecido como servicios gestionados

Openshift Origin (Origin Community Distribution) es un proyecto comunitario ascendente de código abierto que se utiliza en OpenShift Container Platform, Openshift Online y OpenShift Dedicated.

Nómada

Nómada es un orquestador de cargas de trabajo simple, flexible y fácil de usar para implementar y administrar contenedores y aplicaciones no en contenedores en las instalaciones y en la nube a escala. Nomad se ejecuta como un solo binario con una pequeña huella de recursos (35 MB) y es compatible con macOS, Windows y Linux.

Los desarrolladores utilizan la infraestructura declarativa como código (IaC) para implementar sus aplicaciones y definir cómo se debe implementar una aplicación. Nomad recupera automáticamente las aplicaciones de las fallas.

Imagen de Nomad

Nomad Orchestrate aplicaciones de cualquier tipo (no solo contenedores). Proporciona soporte de primera clase para Docker, Windows, Java, máquinas virtuales y más.

Características

  • Sencillo y Confiable
  • Modernice las aplicaciones heredadas sin reescribir
  • Federación sencilla a escala
  • Escalabilidad comprobada
  • Nubes múltiples con facilidad
  • Integraciones nativas con Terraform, Consul y Vault

Enjambre Docker

Enjambre Docker utiliza un modelo declarativo. Puede definir el estado deseado del servicio y Docker mantendrá ese estado. Docker Enterprise Edition ha integrado Kubernetes con Swarm. Docker ahora brinda flexibilidad en la elección del motor de orquestación. La CLI del motor de Docker se usa para crear un enjambre de motores de Docker donde se pueden implementar los servicios de aplicaciones.

Imagen de Docker

Los comandos de Docker se utilizan para interactuar con el clúster. Las máquinas que se unen al clúster se conocen como nodos, y el administrador de Swarm maneja las actividades del clúster.

Docker Swarm consta de dos componentes principales:

  • Administrador: los nodos administradores asignan tareas a los nodos trabajadores en el enjambre. Se elige un líder en base a un algoritmo de consenso de Raft. El líder maneja todas las decisiones de administración de enjambres y orquestación de tareas para el enjambre.
  • Nodo trabajador: el nodo trabajador recibe tareas del nodo administrador y las ejecuta.

Características

  • Gestión de clústeres integrada con Docker Engine
  • Diseño descentralizado
  • modelo de servicio declarativo
  • Escalada
  • Reconciliación del estado deseado
  • Redes de varios hosts
  • Descubrimiento de servicios
  • Balanceo de carga
  • Seguro por defecto
  • Actualizaciones continuas

Componer ventana acoplable

Componer ventana acoplable es para definir y ejecutar aplicaciones de múltiples contenedores que funcionan juntas. Docker-compose describe grupos de servicios interconectados que comparten dependencias de software y se organizan y escalan juntos.

Puede usar un archivo YAML (dockerfile) para configurar los servicios de su aplicación. Luego, con un comando docker-compose up, crea e inicia todos los servicios desde su configuración.

Un docker-compose.yml se ve así:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Puede usar Docker Compose para factorizar el código de la aplicación en varios servicios que se ejecutan de forma independiente y que se comunican mediante una red interna. La herramienta proporciona CLI para administrar todo el ciclo de vida de sus aplicaciones. Docker Compose se ha centrado tradicionalmente en los flujos de trabajo de desarrollo y prueba, pero ahora se están centrando en funciones más orientadas a la producción.

Docker Engine puede ser una instancia independiente aprovisionada con Docker Machine o un clúster completo de Docker Swarm.

Características

  • Múltiples entornos aislados en un solo host
  • Conservar datos de volumen cuando se crean contenedores
  • Solo recrear contenedores que han cambiado
  • Variables y movimiento de una composición entre entornos

minikube

minicubo permite a los usuarios ejecutar Kubernetes localmente. Con Minikube, puede probar aplicaciones localmente dentro de un clúster de Kubernetes de un solo nodo en su computadora personal. Minikube tiene soporte integrado para Kubernetes Dashboard.

Minikube ejecuta la última versión estable de Kubernetes y es compatible con las siguientes características.

  • Balanceo de carga
  • Multi-clúster
  • Volúmenes persistentes
  • Puertos de nodo
  • ConfigMaps y secretos
  • Tiempo de ejecución de contenedor: Docker, CRI-O y contenedor
  • Habilitación de CNI (interfaz de red de contenedores)

Maratón

Maratón es para Apache Mesos que tiene la capacidad de orquestar aplicaciones y marcos.

Apache Mesos es un administrador de clústeres de código abierto. Mesos es un proyecto de Apache que tiene la capacidad de ejecutar cargas de trabajo en contenedores y no en contenedores. Los principales componentes de un clúster de Mesos son Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks: los frameworks se coordinan con el maestro para programar tareas en los nodos de agente. Los usuarios interactúan con el marco de Marathon para programar trabajos.

El programador de Marathon usa ZooKeeper para ubicar el maestro actual para enviar tareas. El planificador de Marathon y el maestro Mesos tienen un maestro secundario en ejecución para garantizar una alta disponibilidad. Los clientes interactúan con Marathon mediante la API REST.

Características

  • Alta disponibilidad
  • aplicaciones con estado
  • Hermosa y poderosa interfaz de usuario
  • Restricciones
  • Descubrimiento de servicios y equilibrio de carga
  • Comprobaciones de salud
  • Suscripción a eventos
  • Métrica
  • API REST

Cloudificar

Cloudificar es una herramienta de orquestación en la nube de código abierto para la automatización de la implementación y la gestión del ciclo de vida de contenedores y microservicios. Proporciona funciones como clústeres a pedido, reparación automática y escalado a nivel de infraestructura. Cloudify puede administrar la infraestructura de contenedores y orquestar los servicios que se ejecutan en las plataformas de contenedores.

Se puede integrar fácilmente con los administradores de contenedores basados ​​en Docker y Docker, incluidos los siguientes.

  • Estibador
  • Enjambre Docker
  • Componer ventana acoplable
  • Kubernetes
  • apache mesos

Cloudify puede ayudar a crear, curar, escalar y desmantelar clústeres de contenedores. La orquestación de contenedores es clave para proporcionar una infraestructura escalable y de alta disponibilidad en la que se pueden ejecutar los administradores de contenedores. Cloudify brinda la capacidad de orquestar servicios heterogéneos en todas las plataformas. Puede implementar aplicaciones mediante la CLI y Cloudify Manager.

Ranchero

Ranchero es una plataforma de código abierto que utiliza la orquestación de contenedores conocida como ganado. Le permite aprovechar los servicios de orquestación como Kubernetes, Swarm, Mesos. Rancher proporciona el software necesario para gestionar contenedores de modo que las organizaciones no necesiten crear plataformas de servicios de contenedores desde cero utilizando un conjunto distinto de tecnologías de código abierto.

Rancher 2.x permite la gestión de clústeres de Kubernetes que se ejecutan en los proveedores especificados por el cliente.

Comenzar con Rancher es un proceso de dos pasos.

Preparar un host Linux

Prepare un host Linux con Ubuntu 16.04 o 18.04 de 64 bits (u otra distribución de Linux compatible y al menos 4 GB de memoria. Instale una versión compatible de Docker en el host.

Inicie el servidor

Para instalar y ejecutar Rancher, ejecute el siguiente comando de Docker en su host:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

La interfaz de usuario de rancher permite la gestión de miles de clústeres y nodos de Kubernetes.

Barco mercante

Containership es para permitir la implementación y la gestión de la infraestructura Kubernetes de múltiples nubes. Es flexible para operar en entornos locales, de nube privada y públicos desde una sola herramienta. Permite el aprovisionamiento, la gestión y la supervisión de sus clústeres de Kubernetes en todos los principales proveedores de la nube.

Containership se construye utilizando herramientas nativas de la nube, como Terraform para el aprovisionamiento, Prometheus para el monitoreo y Calico para la administración de redes y políticas. Está construido sobre Vanilla Kubernetes. La plataforma Containership ofrece un panel intuitivo, así como una potente API REST para una automatización compleja.

Características

  • Panel multinube
  • Registros de auditoría
  • Compatibilidad con instancias de GPU
  • Actualizaciones sin interrupciones
  • Másteres Programables
  • Métricas integradas
  • Registro en tiempo real
  • Implementaciones sin tiempo de inactividad
  • Soporte de almacenamiento persistente
  • Soporte de registro privado
  • Escalado automático de cargas de trabajo
  • Gestión de claves SSH

AZK

AZK es una herramienta de orquestación de código abierto para entornos de desarrollo a través de un archivo de manifiesto (Azkfile.js), que ayuda a los desarrolladores a instalar, configurar y ejecutar herramientas de uso común para desarrollar aplicaciones web con diferentes tecnologías de código abierto.

AZK usa contenedores en lugar de máquinas virtuales. Los contenedores son como máquinas virtuales, con mejor rendimiento y menor consumo de recursos físicos.

Los archivos Azkfile.js se pueden reutilizar para agregar nuevos componentes o crear nuevos desde cero. Se puede compartir, lo que asegura la paridad total entre los entornos de desarrollo en las máquinas de diferentes programadores y reduce las posibilidades de errores durante la implementación.

GKE

GKE proporciona una solución completamente administrada para la orquestación de aplicaciones de contenedores en Google Cloud Platform. Los clústeres de GKE funcionan con Kubernetes. Puede interactuar con clústeres mediante la CLI de Kubernetes. Los comandos de Kubernetes se pueden usar para implementar y administrar aplicaciones, realizar tareas de administración, establecer políticas y monitorear el estado de las cargas de trabajo implementadas.

Imagen de GCP

Las funciones de administración avanzada de Google Cloud también están disponibles con los clústeres de GKE, como el equilibrio de carga de Google Cloud, los grupos de nodos, el escalado automático de nodos, las actualizaciones automáticas, la reparación automática de nodos, el registro y la supervisión con el paquete de operaciones de Google Cloud.

Google Cloud proporciona herramientas de CI/CD para ayudarlo a crear y entregar contenedores de aplicaciones. Puede usar Cloud Build para crear imágenes de contenedores (como Docker) a partir de una variedad de repositorios de código fuente y Container Registry para almacenar sus imágenes de contenedores.

GKE es una solución lista para la empresa con plantillas de implementación prediseñadas.

¿Interesado en aprender GKE? Mira esto curso para principiantes.

AKS

AKS es un servicio de Kubernetes completamente administrado ofrecido por Azure, que ofrece Kubernetes, seguridad y gobernanza sin servidor. AKS administra su clúster de Kubernetes y le permite implementar fácilmente aplicaciones en contenedores. AKS configura automáticamente todos los nodos y maestros de Kubernetes. Solo necesita administrar y mantener los nodos de agente.

Imagen de Azure

AKS es gratis; solo paga por los nodos de agente dentro de su clúster y no por los maestros. Puede crear un clúster de AKS en Azure Portal o mediante programación. Azure también admite funciones adicionales, como redes avanzadas, integración de Azure Active Directory y supervisión mediante Azure Monitor.

AKS también admite contenedores de Windows Server. Su clúster y el rendimiento de las aplicaciones implementadas se pueden monitorear desde Azure Monitor. Los registros se almacenan en un área de trabajo de Azure Log Analytics.

AKS ha sido certificado como compatible con Kubernetes.

EKS de AWS

EKS de AWS es un servicio de Kubernetes completamente administrado. AWS le permite ejecutar su clúster de EKS con AWS Fragrate, que es una computación sin servidor para contenedores. Fragrance elimina la necesidad de aprovisionar y administrar servidores, lo que permite pagar por recurso por aplicación.

AWS permite el uso de funciones adicionales con EKS, como Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups y Access Management (IAM), monitorear, escalar y equilibrar aplicaciones. EKS se integra con la malla de aplicaciones de AWS y proporciona una experiencia nativa de Kubernetes. EKS ejecuta el último Kubernetes y está certificado conforme a Kubernetes.

Conclusión

Al final, espero que la lista anterior haya brindado una comprensión justa de las diversas herramientas de orquestación de contenedores, y ahora, según el caso de uso, será más fácil optar por la mejor.

A continuación, descubra el software de gestión de Kubernetes.