Skip to content

Velero Minio

sobre

Estamos instalando o velero em cluster K8S usando driver da AWS compatível com MINIO.

O cluster k8s usa volumes NFS sem suporte a SNAPSHOT.

Em nosso caso estamos usando stoageclass NFS-Client.

Vamos usar o MINIO para o backup dos arquivos e um agent para copiar o filesystem direto dos nodes.

O tipo de upload a ser utilizado vai ser kopia, o sucessor do restic.

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 = access_key
aws_secret_access_key = secret_key

Instale o velero

velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.13.2 \
  --bucket NOME_DO_BUCKET \
  --prefix NOME_DO_DIRETORIO \
  --secret-file ./credenciais.ini \
  --use-node-agent \
  --uploader-type kopia \
  --backup-location-config \
    region=minio,\
    s3ForcePathStyle=true,\
    s3Url=http://minio.velero.svc:9000

O que cada parâmetro faz

--provider define o provedor
--plugins define o plugin a ser usado
--bucket define o nome do bucket da ser usado
--prefix define o o diretorio a ser usado
--secret-file define o arquivo com as credenciais
--backup-location-config configurações do backup

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

Acesse

  • https://mkdocs.gutocarvalho.net/k8s/install/velero/comandos/

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/