Cada vez mais conteinerização está presente em ambientes de desenvolvimento e operação de serviços. Desta forma, para que seja facilitada a gestão e monitoramento destes recursos faz-se necessário que ambientes conteinerizados tenham uma camada superior com a responsabilidade de gestão, orquestração, monitoramento num vasto e fértil campo de micro-serviços.
É com este objetivo que um ambiente de Contêiner como Serviço - CaaS torna-se uma necessária e imprescindível solução de apoio a Devs & Ops. CaaS consiste de uma infraestrutura que proporciona a implementação e gestão de clusters, contêineres, aplicações/seviços conteinerizados.
Neste sentido, para a solução de CaaS aqui implementada usaremos a solução Rancher (RKE)^[Rancher.io (Rancher Kubernetes Engine - RKE)], que consiste de stack de componentes para gerenciar múltiplos clusters Kubernetes^[Kubernetes] em infraestrutura própia ou em nuvem pública como Amazon ECS, Azure AKS, Alibaba ACK, Huawei CCE, Google GKE entre outras possibilidades.
Rancher is a complete software stack for teams adopting containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters across any infrastructure, while providing DevOps teams with integrated tools for running containerized workloads. - Rancher.com
Para que possamos ter uma visão do que será implementado é ideal que façamos um desenho arquitetural.
Então, como referẽncia de arquitetura aqui implementada tome a imagem apresentada a seguir:
Nesta figura pode-se observar as seguintes representações de clusters:
*.devel.local
– cluster para implementação de aplicações e serviços em situações de desenvolvimento ou até para serem “homologados” pelos clientes/usuários.<serviço>.local
ou <serviço>.example.com
– cluster para implementação de aplicações e serviços em situações de uso pelos clientes/usuários em produção.Para os serviços em produção sob CaaS a arquitetura implementada segue o desenho de referência abaixo:
No desenho central (RKE CaaS::Produção) está a referência de implementação de cluster (CaaS
) para serviços em produção, onde:
O CaaS possui recursos para gerenciar a carga de trabalho dos clusters e adicionar dinamicamente nós a um cluster que precise de tal elasticidade. Entretanto, são previamente necessárias as devidas credenciais para a integração com a solução de virtualização ou de nuvem públicas.
Por outro lado, quando necessário, em uma implementação local (on-premise) nós (ex: caas-m01NN.local
) podem ser adicionados dinamicamente usando-se Ansible Playbooks para orquestração de clusters do CaaS, como por exemplo:
A figura abaixo mostra o estado atual de clusters implementados:
Esta foi uma introdução básica, e em publicações próximas apresentarei com maiores detalhes alguns dos principais componentes desta arquitetura e da implementação realizada.