Pular para o conteúdo
Início » Entendendo Deployment no K8s

Entendendo Deployment no K8s

Um Deployment no Kubernetes é um recurso de nível superior que gerencia conjuntos de réplicas de Pods. Os Pods são a menor unidade implantável no Kubernetes e contêm um ou mais contêineres. O Deployment é responsável por garantir que um número especificado de réplicas do Pod esteja em execução em um determinado momento. Se um Pod falhar, o Deployment automaticamente cria e inicia um novo Pod para manter o estado desejado. Aqui estão os detalhes principais sobre Deployments no Kubernetes:

Componentes Principais do Deployment

  1. Pods: Unidades básicas de implantação no Kubernetes, contendo um ou mais contêineres.
  2. Réplicas: Número de instâncias do Pod que devem estar em execução. Especificado pelo campo replicas no manifesto do Deployment.
  3. Labels e Selectors: Usados para associar um Deployment aos Pods que ele gerencia. O Deployment utiliza selectors para identificar os Pods que devem ser gerenciados.
  4. Template de Pod: Define a estrutura do Pod, incluindo os contêineres e volumes que devem ser criados. Cada vez que o Deployment cria um novo Pod, ele usa este template.

Funcionalidades do Deployment

  1. Atualizações Declarativas: Permite atualizar Pods e contêineres para novas versões de forma declarativa, utilizando o arquivo de manifesto.
  2. Rollouts e Rollbacks: Gerencia o rollout (implantação) de novas versões e permite rollbacks (retornos) para versões anteriores em caso de falhas ou problemas.
  3. Estratégias de Implantação: Suporta diferentes estratégias de implantação, como Recreate (recria todos os Pods) e RollingUpdate (atualiza os Pods um a um).
  4. Manutenção do Estado Desejado: Continuamente monitora os Pods e recria-os se eles falharem ou forem excluídos.
  5. Escalabilidade: Permite o escalonamento para cima ou para baixo do número de réplicas de Pods.

Manifesto do Deployment

Um exemplo de manifesto do Deployment em YAML pode parecer com o seguinte:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: meu-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: minha-aplicacao
  template:
    metadata:
      labels:
        app: minha-aplicacao
    spec:
      containers:
      - name: meu-container
        image: minha-imagem:tag
        ports:
        - containerPort: 80

Neste exemplo:

  • apiVersion: Define a versão da API do Kubernetes utilizada.
  • kind: Especifica que o recurso é um Deployment.
  • metadata: Metadados sobre o Deployment, como name.
  • spec: Especificações do Deployment.
    • replicas: Número de réplicas desejadas.
    • selector: Define como o Deployment identifica os Pods que deve gerenciar.
    • template: Template para a criação de novos Pods.

Uso e Casos Práticos

Os Deployments são comumente usados para:

  • Gerenciar o ciclo de vida de aplicações stateless (sem estado).
  • Implementar padrões de implantação como zero-downtime deployments, canary releases, etc.
  • Facilitar a atualização e o rollback de aplicações.

Em resumo, o Deployment no Kubernetes é uma ferramenta poderosa e flexível para o gerenciamento de aplicações, fornecendo uma maneira declarativa de gerenciar atualizações, escalabilidade e o estado desejado dos Pods.

Marcações: