Velero 백업(Backup) 전략

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
  • ConfigMapSecret 리소스만 백업

네임스페이스 및 리소스를 조합하여 백업 가능

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

RSS Feed
마지막 수정일자