O Kubernetes é uma plataforma poderosa para a orquestração de contêineres, amplamente adotada na indústria de TI. Uma das tarefas críticas ao trabalhar com Kubernetes é a implantação de aplicativos de forma eficiente e segura. É aqui que o conceito de “rollout” (implantação) desempenha um papel crucial. Neste artigo, vamos explorar o que é um rollout no Kubernetes e como ele pode ser usado para gerenciar implantações com precisão, ilustrando com exemplos práticos.
O que é um Rollout no Kubernetes?
Em Kubernetes, um rollout é um processo pelo qual as atualizações ou implantações de aplicativos são gerenciadas. Ele permite que você atualize um conjunto de réplicas de um aplicativo para uma nova versão de forma controlada, facilitando o controle de versões e a reversão rápida em caso de problemas.
Existem dois tipos principais de estratégias de rollout no Kubernetes:
- Rolling Update (Atualização Gradual): Esta estratégia permite que você atualize gradualmente as réplicas do aplicativo para a nova versão, substituindo-as uma por uma. Isso garante que o aplicativo esteja sempre disponível durante a atualização.
- Recreate (Recriar): Nesta estratégia, todas as réplicas antigas são interrompidas e substituídas pelas novas. Embora isso possa causar uma breve interrupção no serviço, é mais simples de implementar.
Vamos explorar como essas estratégias funcionam com exemplos práticos.
Rolling Update: Atualização Gradual
A estratégia de rolling update é a mais comumente usada em implantações de aplicativos no Kubernetes. Ela permite que você atualize as réplicas do aplicativo de forma gradual, minimizando a interrupção do serviço.
Vamos considerar um exemplo prático: você tem um aplicativo da web em execução com três réplicas e deseja atualizá-lo para uma nova versão.
- Definir a Estratégia de Implantação:
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-aplicativo
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
Neste exemplo, definimos uma estratégia de RollingUpdate
com as configurações maxSurge
e maxUnavailable
. Isso significa que, durante a atualização, uma réplica adicional (maxSurge) pode ser criada de cada vez, enquanto uma réplica (maxUnavailable) pode ser interrompida de cada vez.
- Iniciar o Rollout: Para iniciar o rollout, você pode usar o seguinte comando:
kubectl apply -f meu-aplicativo.yaml
- Monitorar o Progresso: Você pode monitorar o progresso do rollout usando o comando:
kubectl rollout status deployment/meu-aplicativo
Isso mostrará o status atual da implantação e se ela foi concluída com sucesso.
- Reverter a Atualização: Se ocorrerem problemas durante o rollout, você pode reverter para a versão anterior com o seguinte comando:
kubectl rollout undo deployment/meu-aplicativo
Isso reverterá o rollout para a versão anterior de forma segura.
Recreate: Recriar
A estratégia de recreate é mais simples, mas pode causar uma breve interrupção no serviço durante a atualização.
- Definir a Estratégia de Implantação:
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-aplicativo
spec:
replicas: 3
strategy:
type: Recreate
Neste exemplo, definimos uma estratégia de Recreate
, o que significa que todas as réplicas antigas serão interrompidas e substituídas pelas novas durante a atualização.
- Iniciar o Rollout: Você pode iniciar o rollout usando o mesmo comando anterior:
kubectl apply -f meu-aplicativo.yaml
- Monitorar o Progresso: Assim como na estratégia de rolling update, você pode monitorar o progresso usando o comando:
kubectl rollout status deployment/meu-aplicativo
- Reverter a Atualização: A reversão também é possível na estratégia de recreate:
kubectl rollout undo deployment/meu-aplicativo
No entanto, lembre-se de que pode haver uma breve interrupção do serviço ao recriar as réplicas.
O rollout no Kubernetes é uma técnica essencial para gerenciar atualizações e implantações de aplicativos de forma eficiente. Com as estratégias de rolling update e recreate, você pode escolher a abordagem mais
adequada para suas necessidades, equilibrando entre a disponibilidade contínua do serviço e a simplicidade da implantação.
Lembre-se sempre de monitorar o progresso do rollout e estar preparado para reverter a atualização em caso de problemas. Com o Kubernetes, você pode implantar e atualizar seus aplicativos de forma segura e controlada, garantindo uma experiência confiável para seus usuários.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.