velero는 kubernetes 리소스를 백업 및 복원하는 오픈소스이다.
보통 s3나 minio 등을 사용하는데 NFS, local 경로도 사용이 가능하다.
찾아보니 velero 공식사이트에선 local이나 NAS를 사용하는 기능을 지원하지 않는 것 같지만
git 사이트에서 해당 기능을 쓸 수 있게 plugin을 만들어놨다.
필자는 worker node에 NFS를 mount 하였고
mount 된 경로에 backup 및 restore를 할 수 있도록 만들어봤다.
사전 준비 작업
- worker node <-> NFS mount
- git, make, go, docker 사전 설치
Velero 설치
curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.15.2/velero-v1.15.2-linux-amd64.tar.gz
tar -zxvf velero-v1.15.2-linux-amd64.tar.gz
mv velero-v1.15.2-linux-amd64/velero /usr/local/bin
velero version
git 소스 받기
git clone https://github.com/replicatedhq/local-volume-provider.git
빌드 및 컴파일
cd local-volume-provider
make plugin
make fileserver
make container
make ttl.sh
해당 과정을 처리하면 velero에서 사용 가능한 컨테이너 이미지가 생성된다.
make plugin
make fileserver
make container
make ttl.sh
velero install
velero install --use-node-agent \
--uploader-type=restic \
--use-volume-snapshots=false \
--namespace velero \
--no-default-backup-location \
--no-secret
생성한 plugin 설치
velero plugin add ttl.sh/<user>/local-volume-provider:12h
ex) velero plugin add ttl.sh/root/local-volume-provider:12h
BackupStorageLocation 생성
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
name: default
namespace: velero
spec:
backupSyncPeriod: 2m0s
provider: replicated.com/hostpath
objectStorage:
# This corresponds to a unique volume name
bucket: hostpath-snapshots
# A prefix inside the volume that contains the backups
# useful for migrating from a filesystem created by Minio
prefix: /velero
config:
# This path must exist on the host and be writable outside the group
path: /tmp/hostpath-snaps
# Must be provided if you're using Restic; [default mount] + [bucket] + [prefix] + "restic"
resticRepoPrefix: /var/velero-local-volume-provider/hostpath-snapshots/velero/restic
prefix: /velero => 백업 및 복원 시 사용할 폴더
path: /tmp/hostpath-snaps => node에 mount된 경로
위 값으로 BackupStorageLocation를 생성하면
workernode에 /tmp/hostpath-snaps/velero로 경로가 생긴다
백업스토리지 상태 확인
velero backup-location get
k get BackupStorageLocation -A
PHASE가 Available인지 확인
해당 상태가 UnAvailable이라면 k describe BackupStorageLocation default -n velero로 확인이 가능하다.
권한이 없는 경우가 있는데 해당 경우는 권한만 주면 된다.
velero backup 생성 및 확인
velero backup create kubernetes-0221
velero backup get
만약 오프라인 환경에서 설치를 하고자 한다면
인터넷이 되는 상태환경에서 컨테이너 이미지를 만들고
해당 이미지만 가져와서 사용해도 가능함.
추가적으로 좀 더 자세한 자료를 보고 싶다면 아래 링크를 확인하시면 된다.
https://github.com/replicatedhq/local-volume-provider?tab=readme-ov-file
GitHub - replicatedhq/local-volume-provider: A Velero plugin for backup/restore directly to Kubernetes volumes.
A Velero plugin for backup/restore directly to Kubernetes volumes. - replicatedhq/local-volume-provider
github.com