Velero


O Velero é uma ferramenta para fazer backup, restaurar e migrar dados no Kubernetes. Ele permite criar backups, restaurar estados do cluster e realizar migrações entre clusters.

Para usar o Velero, você precisa instalar a CLI do Velero na sua máquina local e configurá-la no seu cluster Kubernetes.

Pré-requisitos
Copiar link

Antes de iniciar a instalação, verifique se você tem:

  • Acesso ao seu cluster Kubernetes configurado via kubectl
  • Um bucket S3 para armazenar os backups

Crie um namespace separado para o Velero:

kubectl create namespace velero

Criar um secret S3
Copiar link

Para configurar o acesso do Velero ao bucket S3, crie um secret. Crie um arquivo de manifesto chamado velero-credentials-secret.yaml com o seguinte conteúdo:

apiVersion: v1
kind: Secret
metadata:
  name: cloud-credentials
  namespace: velero
type: Opaque
stringData:
  cloud: |
    [default]
    aws_access_key_id=S3_Access_Key
    aws_secret_access_key=S3_Secret_Access_Key

Substitua S3_Access_Key e S3_Secret_Access_Key pelas suas credenciais de acesso ao S3.

466cadd6 74b7 4fbe A78d Cf0eb18eefc0

Aplique o manifesto:

kubectl apply -f velero-credentials-secret.yaml

Verifique a criação do secret:

kubectl describe secrets cloud-credentials -n velero

O valor Data.cloud não deve estar vazio.

Instalar a CLI do Velero
Copiar link

Linux
Copiar link

Baixe o arquivo da versão mais recente do Velero na página oficial de releases do GitHub:

wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.2/velero-v1.15.2-linux-amd64.tar.gz

Extraia o arquivo:

tar -xvzf velero-v1.15.2-linux-amd64.tar.gz

Mova o binário do Velero para o diretório /usr/local/bin:

sudo mv ./velero-v1.15.2-linux-amd64/velero /usr/local/bin/

macOS
Copiar link

Para instalar o Velero no macOS:

brew install velero

Windows
Copiar link

Para instalar o Velero no Windows usando Chocolatey:

choco install velero

Verificar a instalação
Copiar link

Verifique a versão instalada:

velero version

Instalar o Velero no cluster
Copiar link

Crie um arquivo values.yaml com a configuração mínima necessária:

namespace:
  name: velero
  labels: {}

credentials:
  existingSecret: cloud-credentials

configuration:
  backupStorageLocation:
    - name: default
      provider: aws
      bucket: bucket_name
      default: true
      config:
        region: us-2
        s3ForcePathStyle: true
        s3Url: https://s3.hmstorage.net

  volumeSnapshotLocation:
    - name: default
      provider: aws
      config:
        region: us-2
initContainers:
  - name: velero-plugin-for-aws
    image: velero/velero-plugin-for-aws:v1.7.0
    volumeMounts:
      - mountPath: /target
        name: plugins

Descrição dos parâmetros:

  • backupStorageLocation: configura o armazenamento de backup
  • bucket: nome do bucket S3
  • s3Url: URL do armazenamento S3 da Hostman
  • initContainers: adiciona o plugin necessário para integração com S3
  • credentials.existingSecret: referencia o secret cloud-credentials criado anteriormente com as chaves de acesso ao S3

Via painel de controle
Copiar link

  1. Acesse a seção Kubernetes e clique no cluster
  2. Abra a aba Complementos e selecione Velero
  3. Ative Configuração avançada e envie o arquivo values.yaml clicando em Carregar configuração a partir de um arquivo
  4. Clique em Instalar

Aguarde a conclusão da instalação e verifique o status dos pods:

kubectl get pods -n velero

Via Helm
Copiar link

Você também pode instalar o Velero usando o Helm.

  1. Adicione o repositório do Velero:
helm repo add velero https://vmware-tanzu.github.io/helm-charts
helm repo update
  1. Instale o Velero usando o arquivo de configuração:
helm install velero velero/velero -f values.yaml --namespace velero
  1. Verifique a instalação:
kubectl get pods -n velero

O status dos pods do Velero deve ser Running.

Usar Velero
Copiar link

Para demonstrar como o Velero funciona, vamos criar um deployment de teste com Nginx e mostrar o processo de criar um backup, excluir recursos e depois restaurar os dados.

Criar um backup
Copiar link

Crie um deployment com Nginx em um namespace separado:

kubectl create namespace nginx-test
kubectl create deployment nginx --image=nginx -n nginx-test

Crie um backup:

velero backup create nginx-backup --include-namespaces nginx-test

Especificamos o parâmetro --include-namespaces para fazer backup do namespace inteiro. Você também pode usar outros parâmetros ao criar um backup:

  • --include-resources: inclui recursos específicos (ex.: pods, services)
  • --exclude-resources: exclui recursos específicos
  • --ttl: define o tempo de retenção do backup (ex.: 10h15m0s)

Verifique o status do backup:

velero backup describe nginx-backup

Restaurar dados
Copiar link

Exclua o namespace de teste:

kubectl delete namespace nginx-test

Restaure os recursos a partir do backup:

velero restore create --from-backup nginx-backup

Verifique se o namespace e o deployment foram restaurados:

kubectl get all -n nginx-test

Gerenciar agendamentos e status de backup
Copiar link

Além de criar backups manualmente, o Velero permite automatizar a criação de backups com agendamentos. Você também pode gerenciar backups existentes.

Configurar backups automáticos
Copiar link

Você pode definir um agendamento para backups regulares. Por exemplo, para fazer backup de todos os namespaces todos os dias à meia-noite:

velero schedule create task_name --schedule "0 0 * * *" --include-namespaces '*'
  • --schedule "0 0 * * *": agendamento no formato Cron (todos os dias às 00:00)
  • --include-namespaces '*': inclui todos os namespaces

Para criar backups de um único namespace a cada hora:

velero schedule create task_name --schedule "0 * * * *" --include-namespaces my-namespace

Verifique os agendamentos:

velero schedule get

Se uma tarefa agendada não for mais necessária, exclua com:

velero schedule delete task_name

Visualizar e gerenciar backups
Copiar link

Liste todos os backups existentes:

velero backup get

Para excluir um backup antigo:

velero backup delete backup_name

Para verificar detalhes do backup, incluindo status e recursos:

velero backup describe backup_name --details

Esses recursos oferecem um gerenciamento flexível de backups e permitem restaurar dados sempre que necessário.