# 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) y `site-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) ```bash # 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. ```bash # 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: ```bash velero version ``` ## Hacer un backup manual Ejemplo: respaldar el namespace `wireguard`. ```bash velero backup create wireguard-backup --include-namespaces wireguard --wait velero backup describe wireguard-backup --details ``` Puedes excluir recursos innecesarios (ej. CRDs de KubeVirt): ```bash 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: ```bash 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) ```bash # 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) ```bash 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.caCert` en los BSL. - `ServiceMonitor` requiere Prometheus Operator; ajusta `metadata.labels.release` al valor que use tu Prometheus. - Importa el dashboard JSON en Grafana (datasource `prometheus`).