0Pricing
Kubernetes Basics · Aula

Atualizações contínuas e reversões

Implemente atualizações de aplicações sem indisponibilidade e reverta para versões anteriores se surgirem problemas.

Atualizações contínuas e reversões é uma aula grátis de Kubernetes Basics no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kubernetes Basics, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kubernetes Basics inclui 4 aulas no total.

Atualizações sem tempo de inatividade: por quê?

Imagine atualizar um aplicativo em produção. Sem um planejamento cuidadoso, os usuários podem enfrentar indisponibilidade ou erros. É nesse cenário que as atualizações graduais do Kubernetes se destacam!

As atualizações graduais permitem atualizar seu aplicativo para uma nova versão sem interromper o serviço. As novas versões são implementadas gradualmente, garantindo que seu aplicativo permaneça disponível.

Como as implantações lidam com atualizações

Quando você atualiza o modelo de Pod de uma implantação, por exemplo, alterando a imagem do contêiner, o Kubernetes não simplesmente encerra tudo e reinicia. Em vez disso, ele usa a estratégia RollingUpdate por padrão.

  • Ele cria novos Pods com a configuração atualizada.
  • Encerra gradualmente os Pods antigos quando os novos estão prontos.
  • Esse processo garante uma transição tranquila, com tempo de inatividade mínimo ou inexistente.

Controlando a velocidade da implementação

Você pode ajustar detalhadamente o comportamento das atualizações graduais usando dois parâmetros importantes na seção .spec.strategy.rollingUpdate da sua implantação:

  • maxUnavailable: o número máximo de Pods que podem ficar indisponíveis durante a atualização. Pode ser um número absoluto ou uma porcentagem.
  • maxSurge: o número máximo de Pods que podem ser criados além do número desejado de Pods. Também pode ser um número absoluto ou uma porcentagem.

Por padrão, ambos são definidos como 25%.

Nossa implantação inicial

Vamos começar com uma implantação simples do Nginx. Este YAML define nosso aplicativo inicial executando 3 réplicas de nginx:1.14.2.

Usaremos isso como base para realizar uma atualização gradual na próxima etapa.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Realizando uma atualização gradual

Agora, vamos atualizar nossa versão do Nginx de 1.14.2 para 1.15.0. Basta alterar a imagem no YAML e aplicá-lo.

O Kubernetes detectará a alteração e iniciará automaticamente uma atualização gradual. Observe o campo image abaixo:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.0
        ports:
        - containerPort: 80

Monitorando o status da implementação

Depois de aplicar o YAML atualizado, você pode monitorar o progresso da atualização gradual usando o comando kubectl rollout status:

kubectl rollout status deployment/my-nginx

Você verá mensagens indicando que novos Pods estão sendo criados e os antigos, encerrados, até que a atualização seja concluída. Você também pode usar kubectl get rs para ver os ReplicaSets antigo e novo.

Verificando o histórico da implementação

O Kubernetes mantém um histórico das revisões das suas implantações. Isso é extremamente útil para entender as alterações e realizar possíveis reversões.

Para ver o histórico, use o comando:

kubectl rollout history deployment/my-nginx

Você verá uma lista de revisões, cada uma representando um estado distinto da sua implantação. A CHANGE-CAUSE geralmente reflete o comando ou a alteração no YAML.

Quando uma reversão é necessária

Mesmo com testes cuidadosos, às vezes uma nova versão do aplicativo introduz erros ou problemas de desempenho que não foram detectados. Nessas situações críticas, você precisa de uma maneira rápida de voltar a um estado estável conhecido.

É nesse momento que entram as reversões. Elas permitem desfazer uma atualização problemática e retornar sua implantação a uma versão anterior e funcional do histórico.

Executando uma reversão

Para reverter para a revisão imediatamente anterior, use:

kubectl rollout undo deployment/my-nginx

Se quiser reverter para uma revisão específica, por exemplo, a revisão 1, você poderá especificá-la:

kubectl rollout undo deployment/my-nginx --to-revision=1

O Kubernetes realizará outra atualização gradual para reverter os Pods à configuração histórica especificada.

Verificação da estratégia de implementação

Quais dos parâmetros a seguir podem ser usados para controlar o comportamento da estratégia RollingUpdate de uma implantação do Kubernetes?

Recapitulação: atualizações tranquilas e redes de segurança

Exploramos como as implantações do Kubernetes permitem atualizações graduais sem tempo de inatividade, fazendo uma transição tranquila dos seus aplicativos para novas versões. Você aprendeu:

  • As implantações usam RollingUpdate por padrão.
  • maxUnavailable e maxSurge controlam a velocidade da atualização.
  • kubectl rollout status monitora o progresso.
  • kubectl rollout history acompanha as revisões.
  • kubectl rollout undo permite realizar reversões rápidas para versões estáveis.

Esses recursos são essenciais para manter a alta disponibilidade e a confiabilidade dos seus aplicativos!

Perguntas Frequentes

A aula “Atualizações contínuas e reversões” é grátis?

Sim — o texto completo de “Atualizações contínuas e reversões” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kubernetes Basics, atualize para CoddyKit PRO. O curso de Kubernetes Basics inclui 4 aulas no total.

O que vou aprender em “Atualizações contínuas e reversões”?

Implemente atualizações de aplicações sem indisponibilidade e reverta para versões anteriores se surgirem problemas. Você pratica Kubernetes Basics com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kubernetes Basics?

Nenhuma experiência prévia é necessária. Kubernetes Basics no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Atualizações contínuas e reversões”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kubernetes Basics?

Sim. Cada aula de Kubernetes Basics inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entendendo as implantações
  2. Dimensionamento de aplicações com ReplicaSets
  3. Atualizações contínuas e reversões
  4. Estratégias de implantação: azul-verde e canário
← Voltar para Kubernetes Basics