14 Ferramentas de orquestração de contêineres para DevOps

Vamos falar sobre algumas das ferramentas populares de orquestração de contêiner disponíveis no mercado.

O que é uma orquestração de contêineres?

Atualmente, plataformas de contêiner como o Docker são muito populares para empacotar aplicativos com base em uma arquitetura de microsserviços. Os contêineres podem ser altamente escaláveis, que podem ser criados sob demanda. Embora isso seja bom para alguns contêineres, imagine que você tenha centenas deles.

Torna-se extremamente difícil gerenciar o ciclo de vida do contêiner e seu gerenciamento quando os números aumentam dinamicamente com a demanda.

A orquestração de contêineres resolve o problema automatizando o agendamento, implantação, escalabilidade, balanceamento de carga, disponibilidade e rede de contêineres. A orquestração de contêineres é a automação e o gerenciamento do ciclo de vida de contêineres e serviços.

É um processo de gerenciamento e organização de vários contêineres e arquitetura de microsserviços em escala.

Felizmente, existem muitas ferramentas de orquestração de contêineres disponíveis no mercado.

Vamos explorá-los!

Kubernetes

Você adivinhou, não é?

Kubernetes é uma plataforma de código aberto que foi originalmente projetada pelo Google e agora mantida pela Cloud Native Computing Foundation. O Kubernetes é compatível com configuração declarativa e automação. Ele pode ajudar a automatizar a implantação, o dimensionamento e o gerenciamento de cargas de trabalho e serviços em contêineres.

Imagem por Kubernetes.io

A API do Kubernetes ajuda a estabelecer a comunicação entre usuários, componentes de cluster e componentes externos de terceiros. O plano de controle do Kubernetes e os nós são executados em um grupo de nós que juntos formam o cluster. A carga de trabalho do aplicativo consiste em um ou mais pods executados em nós do trabalhador. O plano de controle gerencia pods e nós de trabalho.

Empresas como Babylon, Booking.com, AppDirect usam amplamente o Kubernetes.

Características

  • Descoberta de serviço e balanceamento de carga
  • Orquestração de armazenamento
  • Rollouts e rollbacks automatizados
  • Escala horizontal
  • Gerenciamento de segredos e configurações
  • Autocura
  • Execução em lote
  • IPv4/IPv6 dual-stack
  • Embalagem automática da caixa

Quer aprender Kubernetes? Confira estes recursos de aprendizagem.

OpenShift

Ofertas Redhat OpenShift Container Platform as a Service (PaaS). Ele ajuda na automação de aplicativos em recursos seguros e escaláveis ​​em ambientes de nuvem híbrida. Ele fornece plataformas de nível empresarial para construção, implantação e gerenciamento de aplicativos em contêiner.

Imagem por Openshift

Ele é construído no mecanismo Redhat Enterprise Linux e Kubernetes. O Openshift possui várias funcionalidades para gerenciar clusters via UI e CLI. Redhat fornece Openshift em mais duas variantes,

  • Openshift Online – oferecido como software como serviço (SaaS)
  • OpenShift Dedicated – oferecido como serviços gerenciados

Openshift Origin (Origin Community Distribution) é um projeto de comunidade upstream de código aberto que é usado no OpenShift Container Platform, Openshift Online e OpenShift Dedicated.

Nômade

Nômade é um orquestrador de carga de trabalho simples, flexível e fácil de usar para implantar e gerenciar contêineres e aplicativos não conteinerizados no local e nas nuvens em escala. O Nomad é executado como um único binário com um pequeno volume de recursos (35 MB) e é compatível com macOS, Windows e Linux.

Os desenvolvedores usam a infraestrutura como código (IaC) declarativa para implantar seus aplicativos e definir como um aplicativo deve ser implantado. O Nomad recupera automaticamente os aplicativos de falhas.

Imagem de Nomad

Aplicativos Nomad Orchestrate de qualquer tipo (não apenas contêineres). Ele fornece suporte de primeira classe para Docker, Windows, Java, VMs e muito mais.

  11 melhores empresas de impressão sob demanda para sua nova loja online

Características

  • Simples e confiável
  • Modernize aplicativos legados sem reescrever
  • Federação fácil em escala
  • Escalabilidade comprovada
  • Multi-nuvem com facilidade
  • Integrações nativas com Terraform, Consul e Vault

Enxame Docker

Enxame Docker usa um modelo declarativo. Você pode definir o estado desejado do serviço e o Docker manterá esse estado. O Docker Enterprise Edition integrou o Kubernetes ao Swarm. O Docker agora oferece flexibilidade na escolha do mecanismo de orquestração. A CLI do mecanismo do Docker é usada para criar um enxame de mecanismos do Docker onde os serviços de aplicativo podem ser implantados.

Imagem do Docker

Os comandos do Docker são usados ​​para interagir com o cluster. As máquinas que se unem ao cluster são conhecidas como nós, e o gerenciador do Swarm trata das atividades do cluster.

O Docker Swarm consiste em dois componentes principais:

  • Gerente – os nós gerenciadores atribuem tarefas aos nós do trabalhador no enxame. Um líder é eleito com base em um algoritmo de consenso Raft. O líder lida com todas as decisões de gerenciamento de enxames e orquestração de tarefas para o enxame.
  • Worker Node – o worker Node recebe tarefas do nó gerenciador e as executa.

Características

  • Gerenciamento de cluster integrado ao Docker Engine
  • Design descentralizado
  • Modelo de serviço declarativo
  • Escala
  • Reconciliação do estado desejado
  • Rede de vários hosts
  • Descoberta de serviço
  • Balanceamento de carga
  • Seguro por padrão
  • Atualizações contínuas

Composição do Docker

Composição do Docker é para definir e executar aplicativos de vários contêineres que funcionam juntos. O Docker-compose descreve grupos de serviços interconectados que compartilham dependências de software e são orquestrados e dimensionados juntos.

Você pode usar um arquivo YAML (dockerfile) para configurar os serviços do seu aplicativo. Em seguida, com um comando docker-compose up, você cria e inicia todos os serviços de sua configuração.

Um docker-compose.yml se parece com isso:

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/

Você pode usar o Docker Compose para fatorar o código do aplicativo em vários serviços de execução independente que se comunicam usando uma rede interna. A ferramenta fornece CLI para gerenciar todo o ciclo de vida de seus aplicativos. O Docker Compose tradicionalmente se concentra nos fluxos de trabalho de desenvolvimento e teste, mas agora está se concentrando em recursos mais orientados à produção.

O Docker Engine pode ser uma instância autônoma provisionada com o Docker Machine ou um cluster inteiro do Docker Swarm.

Características

  • Vários ambientes isolados em um único host
  • Preservar dados de volume quando os contêineres são criados
  • Apenas recrie contêineres que foram alterados
  • Variáveis ​​e movendo uma composição entre ambientes

MiniKube

Minikube permite que os usuários executem o Kubernetes localmente. Com o Minikube, você pode testar aplicativos localmente dentro de um cluster Kubernetes de nó único em seu computador pessoal. O Minikube tem suporte integrado para o Kubernetes Dashboard.

O Minikube executa a versão estável mais recente do Kubernetes e oferece suporte aos seguintes recursos.

  • Balanceamento de carga
  • Vários clusters
  • Volumes persistentes
  • NodePorts
  • ConfigMaps e segredos
  • Tempo de execução do contêiner: Docker, CRI-O e contêiner
  • Ativando CNI (Container Network Interface)

Maratona

Maratona é para o Apache Mesos que tem a capacidade de orquestrar aplicativos e estruturas.

Apache Mesos é um gerenciador de cluster de software livre. Mesos é um projeto do Apache que tem a capacidade de executar cargas de trabalho em contêiner e não em contêiner. Os principais componentes em um cluster Mesos são Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks coordenam com o master para agendar tarefas em nós de agente. Os usuários interagem com a estrutura Marathon para agendar trabalhos.

  6 melhores ferramentas de escuta social para o crescimento dos negócios

O agendador do Marathon usa o ZooKeeper para localizar o mestre atual para enviar tarefas. O agendador de maratonas e o mestre Mesos têm um mestre secundário em execução para garantir alta disponibilidade. Os clientes interagem com a Marathon usando a API REST.

Características

  • Alta disponibilidade
  • Aplicativos com estado
  • Interface de usuário bonita e poderosa
  • Restrições
  • Descoberta de serviço e balanceamento de carga
  • Verificações de integridade
  • Assinatura do evento
  • Métricas
  • APIs REST

Cloudify

Cloudify é uma ferramenta de orquestração de nuvem de código aberto para automação de implantação e gerenciamento do ciclo de vida de contêineres e microsserviços. Ele fornece recursos como clusters sob demanda, recuperação automática e dimensionamento no nível da infraestrutura. A Cloudify pode gerenciar a infraestrutura de contêineres e orquestrar os serviços executados em plataformas de contêineres.

Ele pode ser facilmente integrado com gerenciadores de contêiner baseados em Docker e Docker, incluindo o seguinte.

  • Janela de encaixe
  • Enxame Docker
  • Composição do Docker
  • Kubernetes
  • Apache Mesos

O Cloudify pode ajudar a criar, curar, dimensionar e desmontar clusters de contêineres. A orquestração de contêineres é fundamental para fornecer uma infraestrutura escalável e altamente disponível na qual os gerenciadores de contêineres podem ser executados. Cloudify oferece a capacidade de orquestrar serviços heterogêneos entre plataformas. Você pode implantar aplicativos usando a CLI e o Cloudify Manager.

Rancheiro

Rancheiro é uma plataforma de código aberto que usa orquestração de contêineres conhecida como gado. Ele permite que você aproveite serviços de orquestração como Kubernetes, Swarm, Mesos. A Rancher fornece o software necessário para gerenciar contêineres para que as organizações não precisem criar plataformas de serviços de contêiner do zero usando um conjunto distinto de tecnologias de código aberto.

O Rancher 2.x permite o gerenciamento de clusters Kubernetes executados nos provedores especificados pelo cliente.

Começar com o Rancher é um processo de duas etapas.

Preparar um host Linux

Prepare um host Linux com Ubuntu 16.04 ou 18.04 de 64 bits (ou outra distribuição Linux compatível e pelo menos 4 GB de memória. Instale uma versão compatível do Docker no host.

Inicie o servidor

Para instalar e executar o Rancher, execute o seguinte comando do Docker em seu host:

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

A interface de usuário do rancher permite o gerenciamento de milhares de clusters e nós do Kubernetes.

Navio porta-contentores

O Containership é para permitir a implantação e o gerenciamento da infraestrutura Kubernetes multinuvem. É flexível para operar em ambientes de nuvem pública, privada e local a partir de uma única ferramenta. Ele permite provisionar, gerenciar e monitorar seus clusters Kubernetes em todos os principais provedores de nuvem.

O Containership é construído usando ferramentas nativas da nuvem, como Terraform para provisionamento, Prometheus para monitoramento e Calico para gerenciamento de redes e políticas. Ele é construído em cima do Kubernetes vanilla. A plataforma Containership oferece um painel intuitivo, bem como uma poderosa API REST para automação complexa.

Características

  • Painel Multicloud
  • Registros de auditoria
  • Suporte a instâncias de GPU
  • Atualizações sem interrupções
  • Mestres programáveis
  • Métricas Integradas
  • Registro em tempo real
  • Implantações sem tempo de inatividade
  • Suporte de armazenamento persistente
  • Suporte de registro privado
  • Escalonamento automático de carga de trabalho
  • Gerenciamento de chaves SSH
  Como iniciar um site de marketing de afiliados e ganhar dinheiro

AZK

AZK é uma ferramenta de orquestração de código aberto para ambientes de desenvolvimento por meio de um arquivo de manifesto (o Azkfile.js), que ajuda os desenvolvedores a instalar, configurar e executar ferramentas comumente usadas para desenvolver aplicativos da Web com diferentes tecnologias de código aberto.

O AZK usa contêineres em vez de máquinas virtuais. Os contêineres são como máquinas virtuais, com melhor desempenho e menor consumo de recursos físicos.

Os arquivos Azkfile.js podem ser reutilizados para adicionar novos componentes ou criar novos do zero. Pode ser compartilhado, o que garante total paridade entre os ambientes de desenvolvimento nas diferentes máquinas dos programadores e reduz as chances de bugs durante a implantação.

GKE

GKE fornece uma solução totalmente gerenciada para orquestração de aplicativos de contêiner no Google Cloud Platform. Os clusters do GKE são desenvolvidos pelo Kubernetes. Você pode interagir com clusters usando a CLI do Kubernetes. Os comandos do Kubernetes podem ser usados ​​para implantar e gerenciar aplicativos, executar tarefas de administração, definir políticas e monitorar a integridade das cargas de trabalho implantadas.

Imagem do GCP

Os recursos avançados de gerenciamento do Google Cloud também estão disponíveis com clusters do GKE, como balanceamento de carga do Google Cloud, pools de nós, escalonamento automático de nós, upgrades automáticos, reparo automático de nós, geração de registros e monitoramento com o pacote de operações do Google Cloud.

O Google Cloud fornece ferramentas de CI/CD para ajudar você a criar e servir contêineres de aplicativos. Você pode usar o Cloud Build para criar imagens de contêiner (como o Docker) de vários repositórios de código-fonte e o Container Registry para armazenar suas imagens de contêiner.

O GKE é uma solução pronta para empresas com modelos de implantação predefinidos.

Tem interesse em aprender o GKE? Veja isso curso iniciante.

AKS

AKS é um serviço Kubernetes totalmente gerenciado oferecido pelo Azure, que oferece Kubernetes sem servidor, segurança e governança. O AKS gerencia seu cluster Kubernetes e permite que você implante facilmente aplicativos em contêiner. O AKS configura automaticamente todos os mestres e nós do Kubernetes. Você só precisa gerenciar e manter os nós do agente.

Imagem do Azure

AKS é gratuito; você paga apenas pelos nós de agente em seu cluster e não pelos mestres. Você pode criar um cluster AKS no portal do Azure ou programaticamente. O Azure também oferece suporte a recursos adicionais, como rede avançada, integração do Azure Active Directory e monitoramento usando o Azure Monitor.

O AKS também oferece suporte a contêineres do Windows Server. Seu cluster e o desempenho do aplicativo implantado podem ser monitorados no Azure Monitor. Os logs são armazenados em um espaço de trabalho do Azure Log Analytics.

O AKS foi certificado como compatível com Kubernetes.

AWS EKS

AWS EKS é um serviço Kubernetes totalmente gerenciado. A AWS permite que você execute seu cluster EKS usando o AWS Fragrate, que é uma computação sem servidor para contêineres. A fragrância elimina a necessidade de provisionar e gerenciar servidores, permitindo o pagamento por recurso por aplicativo.

A AWS permite o uso de recursos adicionais com o EKS, como Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups e Access Management (IAM), aplicativos de monitoramento, dimensionamento e balanceamento de carga. O EKS se integra ao AWS App mesh e oferece experiência nativa do Kubernetes. O EKS executa o Kubernetes mais recente e é certificado em conformidade com o Kubernetes.

Conclusão

No final, espero que a lista acima tenha dado uma compreensão justa das várias ferramentas de orquestração de contêineres e, agora, dependendo do caso de uso, será mais fácil optar pela melhor.

Em seguida, descubra o software de gerenciamento do Kubernetes.