Pular para o conteúdo

Entendendo as diferenças entre Docker, Kubernetes e Openshift

Postado em 4 minutos de leitura

Empacotamento e Isolamento com Containers Docker

Docker surgiu em 2013 inicialmente como uma camada sobre a funcionalidade do Kernel do Linux chamada LXC (Linux Containers) que permite a execução de processos de maneira isolada e restrita. Posteriormente trocaram a LXC pela libcontainer permitindo seu uso além do Linux.
A tecnologia de containers possibilita rodar processos, serviços e aplicativos de maneira isolada, ou seja, um não enxerga o outro, e de forma limitada, no qual cada um possui um limite dos recursos de hardware disponíveis como quantidade de memória e espaço em disco.
Containers são mais “leves” do que máquinas virtuais pois não precisam simular o hardware e não precisam carregar um sistema operacional completo antes de executar uma aplicação. Utilizam como base Imagens Docker que são arquivos compactados contendo um sistema de arquivos e a aplicação a ser executada.
Basicamente uma aplicação é empacotada na forma de uma Imagem Docker e cada instância em execução é chamada de container.

Orquestração com Kubernetes

Orquestração de containers é a capacidade de provisionar automaticamente a infra-estrutura necessária para atender às solicitações das aplicações web através de containers do Docker.
Kubernetes, também conhecido como k8s, é uma ferramenta open source criada pela Google e distribuída em 2014 para automatização de deploys e gerenciamento de containers. Com ele é possível criar um cluster de containers em clouds privadas ou clouds públicas (AWS, Google Cloud…).
Algumas vantagens do Kubernetes:

  • Container sempre online: Verifica a saúde da aplicação e recria o container se identificar alguma anomalia.
  • Autoscaling: Obtém métricas e verifica se há necessidade de crescer horizontalmente.
  • Descoberta de Serviço: Containers recebem um endereço IP e conseguem enxergar um ao outro através de uma rede virtual.
  • Balanceador de Carga: Utiliza load balancer para dividir a carga de requisições recebidas entre os containers.
  • Execução em Batch: Permite rodar comandos em batch como containers.

Plataforma como Serviço (PaaS) usando Openshift

Openshift é uma plataforma desenvolvida pela Red Hat que utiliza como base o Kubernetes. Atualmente há 3 distribuições:

  1. Openshift Origin: Versão open source utilizada para quem deseja criar um cluster sem precisar pagar licenças.
  2. Openshift Enterprise: Versão comercializada pela Red Hat baseada no Origin e suportada oficialmente pelo Red Hat Linux.
  3. Openshift Online: Uma plataforma de serviço fornecida pela Red Hat concorrente do Heroku e Google App Engine.

Mas quais são as vantagens e diferenças entre o Openshift e Kubernetes? O Openshift introduziu algumas camadas que o tornam mais amigável e fácil de integrar com soluções de softwares utilizados no mundo corporativo. Algumas das vantagens do Openshift em relação ao Kubernetes:

  • Source to Image (S2I) e Build Config: Capacidade de obter o código fonte da aplicação a partir de um repositório Git e criar uma Imagem Docker pronta para uso. Um Build é disparado quando há uma mudança no código do repositório através de um Webhook.
  • Integrated Docker Registry: Possui um Docker Registry privado utilizado para armazenar as Imagens Docker criadas pelo processo de Source to Image.
  • Image Stream: O Openshift faz tracking das Imagens Docker e recria os containers quando detecta uma mudança na Imagem.
  • Deployment Config: Um macro serviço que detecta quando há uma alteração na configuração, por exemplo uma mudança no valor de uma variável de ambiente, e recria os containers.
  • Policies: Políticas de autorização para usuários, permitindo por exemplo que um determinado usuário consiga apenas visuzalar logs dos containers.
  • Webconsole: Uma interface web amigável que possibilita escalar containers, visualizar logs de aplicações e containers e alterar configurações de pods, services, routes, deployments, etc.

Conclusão

Containers chegaram para revolucionar a maneira como são executadas aplicações web trazendo mais segurança e agilidade. Quando há um número grande de aplicações se faz necessário uma ferramenta para um gerenciamento melhor e mais efetivo de containers e nisso o Kubernetes ajuda bastante aos adeptos da cultura DevOps. No mundo corporativo onde existem processos mais burocráticos e mecanismos de controle, Openshift é muito bem-vindo, ainda mais a versão Enterprise contando com suporte da Red Hat e integração com os sistemas operacionais Red Hat Linux Enterprise e Red Hat Linux Atomic Host.