Velero와 MinIO를 이용한 쿠버네티스 백업 & 복구 방법

velero는 쿠버네티스 자원을 백업 및 복구 할수 있도록 도와주는 도구 입니다.
velero는 helm 배포 및 velero CLI를 이용한 배포 방식이 있습니다.
이번 포스팅에서는 velero CLI를 이용합니다.
또한 제 개인 연구환경이 On-premise환경이므로 MinIO를 백엔드로 이용합니다.

Velero

velero란?

Velero는 Kubernetes 클러스터에 대한 백업 및 복구, 복제, 마이그레이션을 지원하는 오픈소스 도구입니다. Velero를 사용하면 클러스터의 리소스와 Persistent Volume(PV)의 데이터를 백업하고 복구할 수 있어, 클러스터 재해 복구 및 데이터 보호 작업을 쉽게 수행할 수 있습니다.

binary다운로드

wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.0/velero-v1.15.0-linux-amd64.tar.gz

압축 해제

압축 해제후 실행파일 경로로 복사합니다.

tar -xvf velero-v1.15.0-linux-amd64.tar.gz
cd velero-v1.14.1-linux-amd64/
cp velero /usr/bin/velero

MinIO 설정(필요)

MinIO 배포 방법은 생략합니다.

Access Key를 생성

백엔드로 사용할 MinIO에서 Access Key를 생성합니다.
(필요시 리전정보 설정이 필요 할 수 있습니다.)

버킷을 생성합니다.

Velero 추가 설정 및 배포

credential 설정

credentials-velero이름으로 MinIO접근 정보를 생성합니다.

[default]
aws_access_key_id = ######키##########
aws_secret_access_key = ######키##########

배포

CSI드라이버를 이용하는 퍼블릭 환경은 –use-node-agent옵션을 제외합니다.
MinIO Address예시: https://minio.example.com:9000

### restic 모드 설치
velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.2.1 --bucket ${bucket} --secret-file ./credentials-velero --use-volume-snapshots=false --use-node-agent --backup-location-config region=${Region},s3ForcePathStyle="true",s3Url=${MinIO Address}

velero사용

namespace기준 백업

velero backup create ${backup name} --include-namespaces ${k8s namespace}

복원

velero restore create --from-backup test-backup

참고자료

https://velero.io/docs/v1.15/file-system-backup