Por que usamos deployment para gerenciar os ReplicaSets em vez de gerenciá-los diretamente?
sobes.tech IA
Resposta da IA
Deployment fornece uma abordagem declarativa para gerir ReplicaSet e Pods. Permite descrever o estado desejado da aplicação (quantas réplicas, qual a imagem do contêiner, etc.), e o controlador Deployment trabalha continuamente para alcançar esse estado.
As principais vantagens de usar Deployment:
- Gestão de atualizações e retrocessos: Deployment suporta estratégias de atualização (por exemplo, RollingUpdate) e permite regressar facilmente a versões anteriores em caso de problemas.
- RollingUpdate automático: Ao alterar a imagem do contêiner, Deployment cria automaticamente novos Pods com a nova versão, removendo gradualmente os Pods com a versão antiga, garantindo tempo de inatividade zero.
- Gestão de ReplicaSets: Deployment cria e gere ReplicaSets, que por sua vez mantêm o número desejado de réplicas de Pods.
- Histórico de revisões: Deployment rastreia o histórico de alterações, permitindo retroceder a versões anteriores.
- Facilidade de gestão: Em vez de interagir diretamente com ReplicaSets e Pods, trabalhamos com um objeto Deployment que abstrai os detalhes de baixo nível.
Gerir diretamente um ReplicaSet ou Pods complica significativamente as tarefas de atualização, escalonamento e retrocesso, exigindo operações manuais ou scripts de automação mais complexos. Deployment oferece um mecanismo pronto e estável para resolver essas tarefas.
Exemplo de manifesto Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3 # Número desejado de réplicas
selector:
matchLabels:
app: nginx
strategy:
type: RollingUpdate # Estratégia de atualização
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2 # Imagem do contêiner
ports:
- containerPort: 80
Este manifesto descreve um Deployment que deve manter 3 réplicas de Pods com a imagem nginx:1.14.2. Deployment irá gerir a criação e escalonamento do ReplicaSet para garantir esse estado.