Velero 백업(Backup) 전략
1️⃣ Velero Backup 개념 및 동작 방식
Velero는 Kubernetes 클러스터의 상태를 저장하고, 필요할 때 복구할 수 있도록 백업 기능을 제공합니다.
Velero의 백업은 Kubernetes 리소스와 Persistent Volume(PV) 데이터를 저장하는 방식으로 이루어집니다.
📌 Velero의 핵심 백업 개념
Backup
: Kubernetes 리소스 및 데이터를 보존하는 단위Backup Storage Location
: 백업 데이터가 저장되는 원격 스토리지 (S3, MinIO 등)Restic
: PV 데이터를 파일 단위로 백업하는 추가 기능Volume Snapshot
: 클라우드 제공업체의 볼륨 스냅샷 기능 활용
2️⃣ Kubernetes 리소스 백업 방법
Velero를 활용하면 전체 클러스터뿐만 아니라 특정 네임스페이스 또는 개별 리소스를 백업할 수 있습니다.
1. 전체 클러스터 백업
velero backup create full-cluster-backup --include-namespaces=* --wait
- 모든 네임스페이스와 리소스를 백업
- 백업이 완료될 때까지 대기(
--wait
옵션 사용)
2. 특정 네임스페이스 백업
velero backup create my-namespace-backup --include-namespaces=my-namespace
my-namespace
네임스페이스의 모든 리소스를 백업
3. 특정 리소스(Deployment, ConfigMap, Secret 등) 백업
velero backup create my-config-backup --include-resources=configmaps,secrets
ConfigMap
및Secret
리소스만 백업
✅ 네임스페이스 및 리소스를 조합하여 백업 가능
velero backup create ns-deployment-backup --include-namespaces=app-namespace --include-resources=deployments
app-namespace
네임스페이스에서Deployment
만 백업
3️⃣ Persistent Volume(PV) 백업 방식
Kubernetes에서 PV 데이터 백업을 수행하는 방식은 두 가지입니다.
1. Volume Snapshot을 활용한 백업
📌 클라우드 제공업체(AWS, GCP, Azure)의 볼륨 스냅샷을 활용
velero backup create pv-snapshot-backup --snapshot-volumes --wait
- PV의 스냅샷을 저장
- 클라우드 환경에서 빠른 복원이 가능
✅ 스냅샷 저장 위치 설정 예제
velero backup-location create default \
--provider aws \
--bucket velero-backups \
--config region=us-west-1
2. Restic을 이용한 파일 단위 백업
📌 온프레미스 환경에서는 Restic을 활용하여 PV 파일 백업 가능
velero backup create restic-backup --default-volumes-to-restic
Restic
을 이용해 PV 데이터를 파일 단위로 백업- 클라우드 지원이 없는 환경에서도 사용 가능
✅ 특정 PVC만 Restic으로 백업하기
apiVersion: velero.io/v1
kind: Backup
metadata:
name: restic-pvc-backup
spec:
includedNamespaces:
- my-app
includedResources:
- persistentvolumeclaims
labelSelector:
matchLabels:
backup: restic
4️⃣ 백업 실행 및 스케줄링
1. velero backup create
커맨드 사용법
Velero에서 백업을 수행할 때는 velero backup create
명령을 사용합니다.
✅ 기본 백업 실행
velero backup create my-backup
✅ 특정 네임스페이스 백업
velero backup create my-app-backup --include-namespaces=my-app
✅ 백업 시점 지정 (예: 1시간 후 백업 실행)
velero backup create scheduled-backup --ttl 24h --schedule="@every 1h"
📌
--ttl
옵션을 사용하여 백업 유지 기간을 설정 가능
2. 백업 정책 자동화 (CronJob 활용)
Velero의 백업을 자동화하려면 CronJob을 활용할 수 있습니다.
✅ 매일 밤 12시에 백업 수행
velero schedule create daily-backup --schedule="0 0 * * *"
✅ 백업을 6시간마다 실행
velero schedule create periodic-backup --schedule="@every 6h"
✅ CronJob을 이용한 백업 자동화 예제
apiVersion: batch/v1
kind: CronJob
metadata:
name: velero-backup-cron
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: velero
image: velero/velero:latest
command: ["velero", "backup", "create", "cronjob-backup"]
restartPolicy: OnFailure
📌 Velero 백업을 Kubernetes CronJob으로 자동화 가능
5️⃣ 백업 주기 설정 및 유지 기간 관리
1. 백업 주기 설정 (--ttl
옵션 활용)
✅ 7일 동안 유지되는 백업 설정
velero backup create my-weekly-backup --ttl 168h
✅ 1개월(30일) 동안 유지되는 백업 설정
velero backup create my-monthly-backup --ttl 720h
📌
--ttl
을 설정하면 자동으로 백업이 삭제됨
6️⃣ 백업 로그 확인 및 검증
Velero 백업이 정상적으로 수행되었는지 확인하는 방법입니다.
✅ 백업 상태 확인
velero backup get
✅ 특정 백업의 상세 로그 확인
velero backup describe my-backup --details
✅ 백업이 저장된 객체 확인 (S3/MinIO 등)
velero backup describe my-backup --details | grep "Backup Location"
📌 백업 데이터가 올바르게 저장되었는지 주기적으로 검증 필요
7️⃣ 암호화된 백업 구성 및 보안 강화
백업 데이터를 보호하기 위해 암호화 및 보안 정책을 적용해야 합니다.
1. S3에서 암호화 활성화
✅ KMS 키를 사용한 S3 암호화 설정 예제
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--backup-location-config region=us-west-1,kmsKeyId=arn:aws:kms:us-west-1:123456789012:key/my-kms-key
2. Restic 암호화 적용
✅ Restic을 이용한 암호화된 백업 구성
export RESTIC_PASSWORD="MySuperSecurePassword"
velero backup create secure-restic-backup --default-volumes-to-restic
✅ Restic 백업 검증
velero restore describe secure-restic-backup