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.
Antes de iniciar a instalação, verifique se você tem:
kubectlCrie um namespace separado para o Velero:
kubectl create namespace velero
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.

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.
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/
Para instalar o Velero no macOS:
brew install velero
Para instalar o Velero no Windows usando Chocolatey:
choco install velero
Verifique a versão instalada:
velero version
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 backupbucket: nome do bucket S3s3Url: URL do armazenamento S3 da HostmaninitContainers: adiciona o plugin necessário para integração com S3credentials.existingSecret: referencia o secret cloud-credentials criado anteriormente com as chaves de acesso ao S3values.yaml clicando em Carregar configuração a partir de um arquivoAguarde a conclusão da instalação e verifique o status dos pods:
kubectl get pods -n velero
Você também pode instalar o Velero usando o Helm.
helm repo add velero https://vmware-tanzu.github.io/helm-charts
helm repo update
helm install velero velero/velero -f values.yaml --namespace velero
kubectl get pods -n velero
O status dos pods do Velero deve ser Running.
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.
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
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
Além de criar backups manualmente, o Velero permite automatizar a criação de backups com agendamentos. Você também pode gerenciar backups existentes.
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 namespacesPara 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
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.