Neste repositório vamos ver como fazer backup de recursos de um cluster kuberntes para um repositório remoto, neste caso iremos utilizar o MinIo Server e restaurar o backup em um novo cluster kubernetes.
Para facilitar iremos utilizar o servidor do minio no docker, dentro da pasta minio-server execute o comando para subir o servidor:
docker compose up -dFeito isto seu servidor ja estará acessível na porta 9001
Logue no seu MinIo Server e crie uma access key para ser usada na configuração do velero
Caso queira interagir com o seu servidor via linha de comando, temos a opção de instalar o cli do minio
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/mc Faça o download da versão desejada descompacte e mova para o seu $PATH (/usr/local/bin)
Neste exemplo irei utilizar o kind para simular um cluster kubernetes e vou fazer a instalação do velero nele.
Dentro da pasta kind tem um arquivo de configuração de exemplo para subir o cluster kind.
kind create cluster --config cluster1.yamlAntes de configurar o velero vamos criar um arquivo de credenciais com os dados da secret que foi criado no seu minio server.
depois execute os seguintes comandos para configurar o velero
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket velero-backup \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://10.0.0.112:9001kubectl create namespace nginx
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
kubectl apply -f manifestos/deploy-cluster01.yamlBasicamente estou criando deploy do nginx no namespace nginx e no segundo arquivo crio um deploy um configmap e uma secret com nomes **-cluster01 no namespace default
Estes recursos servirão para testar o backup/restore
velero backup create nginx-bkp --include-namespaces nginxVerificando o status do backup
velero backup describe nginx-bkpvelero backup create bkp-cluster-kind01Verificando o status do backup
velero backup describe bkp-cluster-kind01Após a criação do backup dentro do seu servidor minio será criada uma pasta backups/nome-do-seu-bkp
Antes de restaurar o backup deve ser configurado o velero também no cluster alvo
velero restore create --from-backup nginx-bkpApós a restauração do backup dentro do seu servidor minio será criada uma pasta restores/nome-do-seu-bkp
Após restaurar o backup verifique que somente o namespace do nginx será restaurado
velero restore create --from-backup bkp-cluster-kind01Após restaurar o backup verifique que todos os recursos foram restaurados, secret, configmap e deploys


