Velero + MinIO (c2et.net)
Este paquete contiene:
namespace.yaml- Secrets de credenciales (
cloud-credentials-site-a,cloud-credentials-site-b) - BackupStorageLocation (BSL) por YAML:
default(site-a) ysite-b - Ejemplo de
Schedule(nightly a las 02:00 y 02:30) helm/values-approach-b.yaml: despliegue de Velero sin BSL/Secret (GitOps)ServiceMonitor(si usas Prometheus Operator)- Dashboard de Grafana (JSON)
Flujo recomendado (GitOps, Approach B)
# 1) Instala Velero por Helm sin BSL ni secrets
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm upgrade --install velero vmware-tanzu/velero -n velero --create-namespace -f helm/values-approach-b.yaml
# 2) Aplica Secrets, BSLs y Schedules
kubectl apply -f namespace.yaml
kubectl apply -f secrets/secret-site-a.yaml -f secrets/secret-site-b.yaml
kubectl apply -f bsl/bsl-default-site-a.yaml -f bsl/bsl-site-b.yaml
kubectl apply -f schedules/schedules.yaml
Cliente Velero
Para interactuar con Velero necesitas el binario en tu máquina de administración.
# Linux AMD64
wget https://github.com/vmware-tanzu/velero/releases/download/v1.16.2/velero-v1.16.2-linux-amd64.tar.gz
tar -xvf velero-v1.16.2-linux-amd64.tar.gz
sudo mv velero-v1.16.2-linux-amd64/velero /usr/local/bin/
# MacOS Intel
wget https://github.com/vmware-tanzu/velero/releases/download/v1.16.2/velero-v1.16.2-darwin-amd64.tar.gz
tar -xvf velero-v1.16.2-darwin-amd64.tar.gz
sudo mv velero-v1.16.2-darwin-amd64/velero /usr/local/bin/
Verifica la instalación:
velero version
Hacer un backup manual
Ejemplo: respaldar el namespace wireguard.
velero backup create wireguard-backup --include-namespaces wireguard --wait
velero backup describe wireguard-backup --details
Puedes excluir recursos innecesarios (ej. CRDs de KubeVirt):
velero backup create smoke --include-namespaces default --exclude-resources uploadtokenrequests.upload.cdi.kubevirt.io --wait
Programar backups (Schedules)
Ejemplo de programación diaria a las 03:15, TTL de 30 días:
velero schedule create daily-wireguard --schedule "15 3 * * *" --include-namespaces wireguard --ttl 720h --default-volumes-to-fs-backup
Los schedules también se pueden definir por YAML en schedules/schedules.yaml.
Restaurar un backup
Restaurar al mismo namespace (desastre real)
# 1) Borrar el namespace roto
kubectl delete ns wireguard
# 2) Restaurar desde el backup
velero restore create wireguard-restore --from-backup wireguard-backup --wait
velero restore describe wireguard-restore --details
Restaurar a otro namespace (ensayo)
kubectl create ns wireguard-restore
velero restore create wireguard-restore-test --from-backup wireguard-backup --namespace-mappings wireguard:wireguard-restore --wait
Notas
- MinIO requiere
s3ForcePathStyle=true. - Si usas CA propia, añade
spec.config.caCerten los BSL. ServiceMonitorrequiere Prometheus Operator; ajustametadata.labels.releaseal valor que use tu Prometheus.- Importa el dashboard JSON en Grafana (datasource
prometheus).