CaaS (RKE)

Contêiner como Serviço (CaaS)

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.

Tecnologias

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

Arquitetura

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:

RKE_CaaS__Arquitetura

Nesta figura pode-se observar as seguintes representações de clusters:

  • azul: O CaaS – cluster da plataforma de gestão de contêineres
  • preta: *.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.
  • verde: <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.
  • laranja: é um cluster previsto para homologação de aplicações e serviços.

Arquitetura para serviços em produção

Para os serviços em produção sob CaaS a arquitetura implementada segue o desenho de referência abaixo:

RKE_CaaS__Arquitetura_prod_cl01

No desenho central (RKE CaaS::Produção) está a referência de implementação de cluster (CaaS) para serviços em produção, onde:

  • image: é o conjunto de nós master para o cluster onde são mantidos os componentes etcd e control plane do Kubernetes (Kubernetes master).
  • image: conjunto de nós workers do cluster de produção. Estes nós são mantidos e gerenciados pelo Kubernetes master do cluster.

Elasticidade

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:

  • RKE CaaS (devel_cl01): cluster gerenciado para aplicações e serviços em desenvolvimento
  • RKE CaaS (prod_cl01): cluster gerenciado para aplicações e serviços em produção

A figura abaixo mostra o estado atual de clusters implementados:

image

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.

Referências