Aprenda como realizar deploy sem downtime com o orquestrador de container Kubernetes
Realizar o deploy sem downtime com o orquestrador de container Kubernetes é uma dúvida comum e recorrente na publicação de projetos. Temos também quem questione sobre o que fazer para levar sua aplicação de onde ela está rodando hoje, localmente, para uma máquina virtual. Assim como para aplicações que estejam rodando em Docker, Prime (até mesmo nuvem), e como fazer para a migração para Kubernetes.
Pensando nisso, convidamos o especialista Cloud Native e Kubernetes, Guto Carvalho para teste de nossa plataforma e apontamento dos diferenciais encontrados e questionamentos sobre deploy, Blue Green, Elastic Searsh e Grafana. Confira!
Como realizar um deploy no orquestrador de container Kubernetes?
O primeiro passo é preparar a aplicação para rodar em container e dessa forma rodar em Kubernetes. O especialista ressalta a importância de pensar na aplicação e no deslocamento dela, para que ela extraia o melhor de um orquestrador de container.
Você pode, por exemplo, conferir o truel factor que é um framework para desenvolvimento de software, que prepara ele pra rodar na nuvem de forma nativa em cloud native usando os melhores recursos de desenvolvimento e as melhores estratégias para que seu software consiga rodar em Kubernetes, fazendo uso de recursos que possibilitem escalabilidade, elasticidade, escalar conforme demanda e reduzir o tamanho, possibilitando também alta disponibilidade para poder trabalhar com os limites da sua aplicação.
Quanto mais focar em seu desenvolvimento e usar estratégias modernas para criar seu software, irá conseguir utilizar melhor seu orquestrador de container Kubernetes.
Resumindo:
- Sua aplicação precisa estar modernizada;
- É necessário criar uma imagem Docker;
- Se possível criar também um pacote do tipo Helmet.
O pacote Helmet pode contribuir pra que você consiga instalar sua aplicação de forma fácil e reaproveitar este pacote para instalar quantas vezes quiser, por exemplo, ambiente de desenvolvimento, homologação, produção, teste, etc. Com o mesmo pacote Helmet você consegue instalar diversos tipos de instâncias da sua aplicação com diferentes configurações, mudando apenas o arquivo de valores.
Arquitetura da aplicação
É preciso refletir sobre a arquitetura da sua aplicação, pra que a aplicação consiga escalá-la horizontalmente e verticalmente.
A escalabilidade horizontal significa que você terá várias instâncias da sua aplicação rodando atrás de um balanceador e a sua aplicação continuará funcionando sem nenhum problema. Porém, para isso é necessário pensar também na sua sessão e onde irá armazenar seus dados. Confira também quais são as vantagens do escalonamento automático, em vídeo disponível no Canal do YouTube da SaveinCloud.
No caso de Kubernetes é péssimo persistir dados em disco onde está rodando o container e os pods. A indicação do especialista Guto Carvalho é a star stable, não ter persistência de dados em disco.
Você pode gravar o dado, por exemplo, no banco de dados ou em um s3, Storage externo, onde conseguirá gravar o dado e acessar quando for preciso. Essa é a melhor estratégia para estar rodando sua aplicação em Kubernetes.
Ele é um universo muito amplo que tem muitas possibilidades a oferecer. Se você se preparar bem, trabalhar a arquitetura da sua aplicação pensando em truel factor, pensando a arquitetura alinhada com a escalabilidade horizontal, terá uma aplicação que vai rodar bem e vai extrair o máximo do seu orquestrador de container, seja Kubernetes ou qualquer outro.
Estratégias de deploy: como realizar deploy com ‘Blue Green’ no Kubernetes
Para simplificar a explicação, vamos utilizar um exemplo: imagina que você já tenha sua aplicação rodando no Kubernetes chamada de green e você quer subir uma outra aplicação numa versão mais nova que vamos chamar de blue.
O que você acredita que é necessário ser feito? Podemos manter a aplicação rodando na versão atual e subir uma aplicação numa versão nova apontando a aplicação nesta versão. Depois, pode tirar a aplicação na versão mais antiga e realizar esse processo em Kubernetes de forma automatizada. Há várias formas de estar fazendo esse processo, por meio de outras tecnologias e métodos.
Além do Blue Green, a gente pode fazer o deploy do tipo Canário no Kubernetes, que é um deploy onde você vai estabelecer um pequeno grupo de usuários, uma região ou país específico. Ele permite acessar uma versão diferente do software enquanto todo o restante está acessando aquela versão comum.
É possível trabalhar também com várias tecnologias para fazer o deploy tipo Canário.
O Kubernetes por padrão já faz o deploy tipo Rollout. Ele vai subir uma aplicação nova e só depois que essa aplicação terminar de subir e foi testada ela vai começar a redirecionar o usuário para a aplicação nova. Enquanto isso, ele vai esperar que a aplicação antiga encerre todas as suas transações e conexões e a partir disso você pode tirar ela do ar.
Por padrão, o Kubernetes já faz o Rolloud mas ainda dá pra trabalhar com o deploy Blue Green, tipo Canário e outras metodologias. Ele está totalmente preparado para atender demandas relacionadas a este assunto.
Como realizar deploy ‘Elastic Search’ e ‘Grafana’ no Kubernetes?
O Elastic Search durante muitos anos fez melhorias e adaptações para que fosse possível rodar de forma exemplar dentro de um cluster Kubernetes. Hoje, o Elastic Search roda muito bem no Kubernetes e você consegue instalar ele de diferentes formas, sem restrições.
O especialista Guto Carvalho reforça que para o Grafana, funciona da mesma forma. Você pode instalar ele dentro do seu cluster Kubernetes e utilizá-lo. Inclusive tem vários pacotes para o Grafana em Helmet ou manifestos Kubernetes que instalam o Grafana.
Posso rodar o meu banco de dados no orquestrador de container kubernetes?
Atualmente, rodar o banco de dados em container já está superado. A performance em container, segurança e estabilidade já está testada e aprovada.
Você pode rodar o seu banco de dados no kubernetes seja PostgreSQL, MySQL, Clickhouse ou até mesmo banco de dados com chave e valor tipo Reds, ITCD. Tudo isso vai funcionar muito bem em Kubernetes e em container! Temos várias cases e pessoas utilizando isso no mundo todo.
O Kubernetes gerenciado da SaveinCloud é uma filter muito interessante disponível no painel de controle e com isso não é necessário se preocupar com o gerenciamento do Kubernetes. Você só precisa se atentar em colocar a sua aplicação para rodar, gerando economia e produtividade.
Gostou da explicação do especialista Cloud Native e Kubernetes, Guto Carvalho? Ele também utiliza a plataforma da SaveinCloud!
Teste GRÁTIS por 14 dias e comprove os diferenciais do Kubernetes SaveinCloud!