AmberAx

Kubernetes Velero로 데이터 백업 및 복구하기

· 4 min read
Kubernetes Velero로 데이터 백업 및 복구하기

Kubernetes 환경에서 클러스터와 데이터를 안정적으로 관리하기 위해서는 백업과 복구 도구가 필수적입니다.

Velero는 Kubernetes 네이티브 데이터 보호 도구로, 클러스터의 리소스와 데이터를 백업하고, 필요 시 복구하며, 클러스터 간 마이그레이션도 지원합니다. 이 글에서는 Velero의 주요 기능과 사용법을 소개하고 실무에서 활용할 수 있는 팁을 공유합니다.

Velero란? #

Velero는 Kubernetes 워크로드의 백업, 복구, 마이그레이션을 지원하는 오픈 소스 도구입니다. 특히 다음과 같은 사용 사례에서 강력한 성능을 발휘합니다:

  • 클러스터 장애 시 재해 복구
  • 스테이징 및 프로덕션 환경 간 데이터 이전
  • 정기적인 데이터 백업 및 관리

주요 기능 #

  • 백업: 네임스페이스, 클러스터 리소스, Persistent Volume(PV) 데이터를 포함한 백업 생성
  • 복구: 특정 리소스 또는 전체 클러스터를 복구
  • 마이그레이션: 클러스터 간 데이터와 설정 이전
  • 스케줄링: 자동화된 정기 백업 지원
  • 스토리지 프로바이더 지원: AWS S3, Azure Blob Storage, Google Cloud Storage 등 다양한 백엔드와 통합 가능

설치 및 설정 #

Velero를 사용하려면 먼저 클러스터에 설치해야 합니다. 설치 과정은 다음과 같습니다.

요구 사항

  • kubectl 설치
  • 클러스터 관리자 권한
  • 외부 스토리지 버킷 (예: AWS S3)

Velero CLI 설치

Velero CLI는 공식 릴리스 페이지에서 다운로드할 수 있습니다:

# Linux
curl -L https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz | tar -xz
sudo mv velero-v1.11.0-linux-amd64/velero /usr/local/bin/velero

# macOS
brew install velero

# Windows
choco install velero

설치 후 Velero CLI가 정상적으로 작동하는지 확인합니다:

velero version

Helm 차트를 사용한 설치

Helm을 사용하면 Velero를 간편하게 설치할 수 있습니다:

helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm install velero vmware-tanzu/velero \
--namespace <YOUR NAMESPACE> \
--create-namespace \
--set-file credentials.secretContents.cloud=<FULL PATH TO FILE> \
--set configuration.backupStorageLocation[0].name=<BACKUP STORAGE LOCATION NAME> \
--set configuration.backupStorageLocation[0].provider=<PROVIDER NAME> \
--set configuration.backupStorageLocation[0].bucket=<BUCKET NAME> \
--set configuration.backupStorageLocation[0].config.region=<REGION> \
--set configuration.volumeSnapshotLocation[0].name=<VOLUME SNAPSHOT LOCATION NAME> \
--set configuration.volumeSnapshotLocation[0].provider=<PROVIDER NAME> \
--set configuration.volumeSnapshotLocation[0].config.region=<REGION> \
--set initContainers[0].name=velero-plugin-for-<PROVIDER NAME> \
--set initContainers[0].image=velero/velero-plugin-for-<PROVIDER NAME>:<PROVIDER PLUGIN TAG> \
--set initContainers[0].volumeMounts[0].mountPath=/target \
--set initContainers[0].volumeMounts[0].name=plugins

위 명령어에서 <your-bucket-name><your-region>은 사용자의 환경에 맞게 수정해야 합니다.

자세한 설치 문서는 아래 링크를 참고하세요.

https://github.com/fluidicon.png
helm-charts/charts/velero/README.md at main · vmware-tanzu/helm-charts · GitHub
Contains Helm charts for Kubernetes related open source tools - helm-charts/charts/velero/README.md at main · vmware-tanzu/helm-charts
https://github.com/vmware-tanzu/helm-charts/blob/main/charts/velero/README.md#installing-the-velero-server

기본 사용법 #

Velero를 설치한 후, 간단한 명령어를 통해 데이터를 백업하고 복구할 수 있습니다.

백업 생성

네임스페이스 전체를 백업하려면 다음 명령어를 실행합니다:

velero backup create my-backup --include-namespaces <namespace-name>

특정 리소스만 백업

특정 리소스 유형만 백업하려면 --include-resources 옵션을 사용합니다:

velero backup create my-backup --include-resources pods,services

복구

백업에서 데이터를 복구하려면 다음과 같이 실행합니다:

velero restore create --from-backup my-backup

스케줄 백업

정기적인 백업을 설정하려면 스케줄을 정의합니다:

velero schedule create daily-backup --schedule="0 2 * * *" --include-namespaces <namespace-name>

실전 활용 사례 #

클러스터 장애 복구

Velero를 사용하여 클러스터가 장애를 겪었을 때 데이터를 빠르게 복구할 수 있습니다. 예를 들어, 전체 클러스터의 리소스를 복구하려면 아래 명령어를 사용합니다:

velero restore create --from-backup full-cluster-backup

환경 간 마이그레이션

Velero는 클러스터 간 워크로드를 쉽게 마이그레이션할 수 있습니다. 원본 클러스터에서 백업을 생성하고, 대상 클러스터에서 복구를 수행하면 됩니다.

롤백 시나리오

애플리케이션 배포 후 문제가 발생했을 때 이전 상태로 롤백해야 하는 경우 Velero를 사용할 수 있습니다:

velero restore create --from-backup pre-deployment-backup

특정 리소스 복구

전체 복구가 필요하지 않은 경우 특정 리소스만 복구할 수도 있습니다:

velero restore create --from-backup my-backup --include-resources deployments

장점과 단점 #

장점

  • 다양한 스토리지 제공자와의 호환성
  • CLI 기반의 직관적인 명령어
  • 정기 백업 및 자동화 기능
  • 클러스터 간 마이그레이션 지원

단점

  • 대규모 클러스터에서 성능 저하 가능성
  • 특정 커스텀 리소스 처리의 제약
  • 복잡한 설정 과정 (초기 학습 곡선 존재)

팁과 트릭 #

  • 효율적인 스토리지 관리: 오래된 백업을 정기적으로 삭제하여 스토리지 비용을 최적화.
    velero backup delete <backup-name>
    
  • 디버깅: Velero의 로그를 확인하여 문제를 빠르게 해결.
    velero logs
    
  • 테스트 환경에서의 활용: 테스트 클러스터를 프로덕션과 동일하게 복제하여 애플리케이션 변경 사항을 안전하게 검증.
  • 통합 도구 사용: ArgoCD, Flux와 같은 GitOps 도구와 함께 사용하면 더 강력한 워크플로를 구성할 수 있음.

결론 #

Velero는 Kubernetes 환경에서 데이터 안정성을 보장하는 강력한 도구입니다. 이를 활용하면 클러스터 장애나 데이터 손실 위험을 최소화할 수 있으며, 클러스터 간 마이그레이션이나 정기적인 백업 관리에도 유용합니다. 초기 설정은 다소 복잡할 수 있으나, 다양한 기능과 강력한 스토리지 통합을 통해 높은 가치를 제공합니다.

Velero를 실무에 도입하여 안정적이고 효율적인 Kubernetes 환경을 구축해 보세요. 추가적인 설정이나 최적화 과정은 공식 문서를 참고하면 큰 도움이 됩니다.

추가 리소스 #

Did you find this post helpful?
Share it with others!