Skip to content

Velero

sobre

Estamos instalando o velero com suporte a restic para fazer backup de volumes sem depender de recursos do storage.

Instalando

Acesse os servidor usado para gerenciar o cluster.

ssh 1.2.3.4 -l usuario

Carregue o kubeconfig

cd /opt/cluster/infra
export KUBECONFIG=/opt/cluster/infra/kube_config_cluster.yml

Crie o arquivo com credenciais

vim credenciais.ini

Adicione o conteudo abasixo

[default]
aws_access_key_id = acess_key
aws_secret_access_key = secret_key

Instale o velero

velero install \
    --provider aws \
    --plugins velero/velero-plugin-for-aws:v1.17.0 \
    --bucket velero-cluster-dev \
    --secret-file ./credenciais.ini \
    --backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://minio.dominio.tld \
    --use-volume-snapshots=false \
    --use-restic

Checando a instalação

kubectl get deployment/velero --namespace velero

Saída esperada

NAME     READY   UP-TO-DATE   AVAILABLE   AGE
velero   1/1     1            1           2m

Verifique se o location está disponivel

velero get backup-location

Saída esperada

NAME      PROVIDER   BUCKET/PREFIX      PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
default   aws        velero-infra   Available   2025-04-07 07:41:11 -0300 -03   ReadWrite     true

Se aparecer "PHASE Available" o location está funcionando.

Pronto, tudo instalado, agora vamos ver os comandos para fazer backup, restore e agendamentos.

Marcando volumes para backup

Você pode espeficiar os volumes de um POD que precisam ir pro restic assim

kubectl annotate pod meu-pod backup.velero.io/backup-volumes=meu-volume

Ou se preferir, pode definir que todos os volumes do NS devem ir pro restic

kubectl annotate namespace meu-namespace backup.velero.io/backup-volumes=true

Operando o velero

Fazendo backup completo

velero backup create meu-backup --include-namespaces '*' --wait

Fazendo backups definindo o alvo

Existem muitas formas de fazer backup pelo velero, a mais indicada para a SEMAD é o backup do namespace completo, com seus volumes.

velero backup create bkp-20250497-ns-projetoX --include-namespaces projetoX --wait

Esse comando fará o backup do namespace e de todos os seus recursos.

Fazendo restore

velero restore create restore-bkp-20250497-ns-projetoX --from-backup bkp-20250497-ns-projetoX --wait

Note que o restore irá sobrescrever o namespace e seus dados, tenha cuidado.

Fazendo restore em outro NS

Esse método funciona para configurações, mas não funciona para volumes se for o mesmo cluster de onde o backup foi gerado.

velero restore create  --from-backup BACKUP_NAME --namespace-mappings OLD_NS:NEW_NS --wait

Agendando backups

Agendando um backup do namespace projetoX, diariamente, 01 da manha, com tempo de vida de 240h.

velero schedule create backup-diario-projetoX \
  --schedule="0 1 * * *" \
  --include-namespaces projetoX \
  --ttl 240h
  --wait

refs

  • https://velero.io
  • https://velero.io/docs
  • https://velero.io/docs/v1.17/basic-install/
  • https://velero.io/docs/v1.17/backup-reference/
  • https://velero.io/docs/v1.17/restore-reference/
  • https://velero.io/docs/v1.17/resource-filtering/