Managed Kubernetes da OVH

Usar o Kubernetes é uma excelente experiência, mas operar em produção é muito menos simples e construir uma plataforma de Kubernetes gerida é ainda pior...

Em novembro de 2018, lançámos a versão beta do nosso serviço Managed Kubernetes. Este foi o resultado de uma aventura que iniciámos na OVH como simples utilizadores do Kubernetes e que nos levou a construir um serviço completamente gerido, converter-nos numa plataforma Kubernetes certificada e aprender muitas coisas a respeito da construção, operação e gestão deste serviço em grande escala...

Agora que a versão beta está lançada e que estamos a acertar os últimos detalhes para o lançamento da versão final, gostaríamos de partilhar algumas das lições que aprendemos, as escolhas tecnológicas que fizemos e as ferramentas que construímos ao longo do processo.

Neste artigo, apresentaremos a nossa versão do Managed Kubernetes e explicaremos a razão pela qual a OVH decidiu criar este serviço. Em publicações posteriores, iremos analisar mais profundamente alguns aspetos concretos da arquitetura, como o dimensionamento do etcd ou a forma como iniciar os masters Kubernetes dos clientes nos nós do nosso cluster.

A aventura Kubernetes 

Quando manipula pela primeira vez o Minikube, a experiência costuma ser espantosa. Já não precisa de se preocupar em gerir as instâncias ou em controlar se os containers estão a funcionar; se uma instância for interrompida, o Kubernetes volta a criar os containers noutra instância... Parece magia!

Então, como recém-convertido, decide tentar construir um verdadeiro cluster e implementar nele aplicações maiores. Cria algumas máquinas virtuais, aprende a usar o “kubeadm” e, pouco tempo depois, apercebe-se de que gerou um novo cluster Kubernetes onde poderá implementar as suas aplicações. A magia ainda está lá, mas começa a sentir que, tal como na maioria dos contos, a magia tem um preço

Pôr o Kubernetes em produção

E quando tenta implementar em produção o seu primeiro cluster Kubernetes, num hipervisor ou numa plataforma bare-metal, descobre que o preço a pagar pode ser ligeiramente elevado... 

Implementar o cluster Kubernetes é apenas o começo, uma vez que para o poder considerar prod ready (pronto para ser colocado em produção), também tem de assegurar que: 

  • o processo de instalação é automatizável e reproduzível;
  • o processo de upgrade/rollback é seguro; 
  • existe um processo de recuperação documentado e testado;
  • o desempenho é previsível e consistente, especialmente ao utilizar volumes persistentes;
  • o cluster é operável, com suficientes traços, métricas e logs para detetar e resolver possíveis falhas e problemas;
  • o serviço é seguro e dispõe de alta disponibilidade.

A resposta da OVH a esta complexidade operacional

Mas, se pensava que implementar um novo cluster Kubernetes ia implicar toda essa experiência NoOps, parece que estava enganado. Para continuar a usar a mesma metáfora, aprender a dominar a magia exige muito tempo e é um processo que não está isento de riscos...

Assim, à semelhança de muitas tecnologias potentes, a aparente simplicidade e versatilidade do Kubernetes quanto ao Dev é acompanhada por uma grande complexidade no que diz respeito ao Ops. Não é de admirar que a maioria dos utilizadores se voltam para um serviço de Kubernetes gerido quando precisam de passar da prova de conceito para a produção.

Na OVH, uma empresa centrada nas necessidades do utilizador, quisemos responder a esta procura criando a nossa própria solução de Kubernetes gerido, completamente baseada em open-source, com a possibilidade para os clientes de mudarem de fornecedor e inteiramente compatível com qualquer solução Kubernetes pura. O nosso objetivo era oferecer aos nossos utilizadores um cluster Kubernetes chave-na-mão integralmente gerido e pronto a usar, sem os inconvenientes da instalação ou da gestão.

Nos ombros de gigantes...

Sabíamos que queríamos construir uma solução de Kubernetes gerido, mas como? O primeiro passo era simples: precisávamos de nos assegurar de que a infraestrutura subjacente era à prova de bala. Por isso, decidimos basear-nos na nossa oferta Public Cloud, baseada em OpenStack.

Certified Kubernetes

Construir a nossa plataforma com base num produto maduro, de alta disponibilidade e com padrões como o Public Cloud da OVH permitiu-nos concentrar os nossos esforços no verdadeiro problema que tínhamos em mãos: criar um serviço Kubernetes gerido altamente escalável, fácil de operar e com certificação da CNCF (Cloud Native Computing Foundation).

E agora?

Nos próximos artigos sobre este tema, iremos abordar a arquitetura do serviço Managed Kubernetes da OVH e falaremos sobre algumas das nossas escolhas tecnológicas, explicando a razão pela qual as fizemos e o seu processo para serem bem-sucedidas.

Kubinception: a execução do Kubernetes em Kubernetes
Kubinception: a execução do Kubernetes em Kubernetes

E começaremos com uma das nossas decisões mais ousadas: executar o Kubernetes em Kubernetes ou, como gostamos de lhe chamar, a Kubinception.

Horacio Gonzalez - Developer Evangelist at OVH Platform