backup: install Velero v1.18 (chart 12.0.0) + daily-full schedule to R2 velero-backup
This commit is contained in:
@@ -4,20 +4,54 @@ updated: 2026-04-20
|
||||
tags: [infra, backup]
|
||||
---
|
||||
|
||||
## K8s 표준 VolumeSnapshot API
|
||||
## Velero (K8s 표준 백업 도구)
|
||||
|
||||
snapshot-controller + `snapshot.storage.k8s.io/v1` CRDs 설치됨 (2026-04-20). 향후 Velero 같은 표준 백업 도구 도입의 전제 조건.
|
||||
네임스페이스 · 앱 단위 전체 복원을 위한 표준 백업 도구. Longhorn BackupTarget(볼륨 단위)과 공존 — 목적이 다름.
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| Namespace | velero |
|
||||
| Chart | vmware-tanzu/velero `12.0.0` (app `v1.18.0`) |
|
||||
| Plugin | `velero/velero-plugin-for-aws:v1.14.0` (initContainer) |
|
||||
| Features | `EnableCSI` |
|
||||
| BackupStorageLocation | `default` → R2 버킷 `velero-backup` (ENAM), endpoint `d8e5997eb4040f8b489f09095c0f623c.r2.cloudflarestorage.com` |
|
||||
| VolumeSnapshotLocation | `default` (provider=csi) |
|
||||
| VolumeSnapshotClass | `longhorn-snapshot` (driver.longhorn.io, type=snap) |
|
||||
| Credentials 시크릿 | `velero-cloud-credentials` (namespace: velero). Vault `secret/cloud/cloudflare/r2` 재사용 (기존 `longhorn-backup-r2`와 동일 키) |
|
||||
| 클라이언트 | `brew install velero` (macOS) |
|
||||
|
||||
### 백업 스케줄 `daily-full`
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| Cron | `0 16 * * *` UTC (KST 01:00) |
|
||||
| TTL | 720h (30일) |
|
||||
| 스코프 | 전체 네임스페이스 (`*`) + cluster-scoped |
|
||||
| 제외 네임스페이스 | kube-system, kube-public, kube-node-lease, velero, longhorn-system, democratic-csi, metallb-system, cert-manager, monitoring, logging, external-secrets, nfs-provisioner, rabbitmq-system |
|
||||
| 볼륨 | CSI 스냅샷 (Longhorn 네이티브 스냅샷으로 생성) |
|
||||
|
||||
기존 Longhorn BackupTarget은 유지 (볼륨 단위 장애 복구용). Velero는 네임스페이스 단위 전체 복구용.
|
||||
|
||||
### 운영 명령
|
||||
|
||||
```bash
|
||||
velero backup get -n velero
|
||||
velero backup describe <name> -n velero --details
|
||||
velero backup logs <name> -n velero
|
||||
velero backup create adhoc-<name> --include-namespaces <ns> --snapshot-volumes -n velero --wait
|
||||
|
||||
velero schedule get -n velero
|
||||
velero restore create --from-backup <name> -n velero
|
||||
```
|
||||
|
||||
### snapshot-controller (선결 인프라)
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| snapshot-controller | v8.5.0, Deployment (kube-system, replicas=2) |
|
||||
| CRDs | VolumeSnapshot, VolumeSnapshotContent, VolumeSnapshotClass |
|
||||
| VolumeSnapshotClass | `longhorn-snapshot` (driver=driver.longhorn.io, type=snap) |
|
||||
| Velero 기본 클래스 라벨 | `velero.io/csi-volumesnapshot-class=true` (longhorn-snapshot에 부여) |
|
||||
| CRDs | snapshot.storage.k8s.io/v1 — VolumeSnapshot, VolumeSnapshotContent, VolumeSnapshotClass |
|
||||
|
||||
현재 `longhorn-snapshot` 클래스는 `type: snap`(Longhorn 내부 스냅샷, 빠름). Velero가 오브젝트 스토리지에 메타/매니페스트를 백업하고 데이터는 VolumeSnapshot으로 관리. 별도의 `type: bak` 클래스(R2 영속) 추가는 Velero 도입 시점에 재검토.
|
||||
|
||||
배경: democratic-csi의 external-snapshotter sidecar가 이 CRD를 watch하려다 404/EOF로 주기 재시작했음. 이번 설치로 원인 해소 + Velero 선결 조건 동시 달성. 이력: [[2026-04-20-snapshot-controller-velero-prep|history]]
|
||||
도입 이력: [[2026-04-20-snapshot-controller-velero-prep|prep]] · [[2026-04-20-velero-install|install]]
|
||||
|
||||
## Longhorn PVC 백업 (K3s)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user