Velero와 클라우드 스토리지 통합
8️⃣ Velero와 클라우드 스토리지 통합
Kubernetes 환경에서 Velero를 활용하여 데이터를 안전하게 백업하려면 클라우드 스토리지와의 연동이 필수적입니다.
Velero는 AWS S3, Google Cloud Storage, Azure Blob Storage 및 다양한 온프레미스 스토리지와 통합하여 백업 및 복구를 수행할 수 있습니다.
이 문서에서는 각 클라우드 스토리지와 Velero의 연동 방법을 설명하고, 네트워크 및 성능 최적화 전략을 다룹니다.
1️⃣ AWS S3 및 EBS Snapshot을 이용한 백업
1. S3 스토리지 백업 설정
AWS S3를 Velero의 백업 스토리지로 사용하려면 IAM 권한 및 S3 버킷을 설정해야 합니다.
(1) IAM 역할 생성
aws iam create-user --user-name velero
aws iam attach-user-policy --user-name velero --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
(2) S3 버킷 생성
aws s3api create-bucket --bucket velero-backup --region us-east-1
(3) Velero 설치 및 구성
velero install \
--provider aws \
--bucket velero-backup \
--secret-file ./credentials-velero \
--backup-location-config region=us-east-1
2. AWS EBS Snapshot을 이용한 볼륨 백업
Velero는 EBS Snapshot을 활용하여 Persistent Volume (PV)을 백업할 수 있습니다.
EBS 볼륨이 마운트된 PV를 스냅샷 방식으로 백업하려면 VolumeSnapshotLocation
을 설정해야 합니다.
apiVersion: velero.io/v1
kind: Backup
metadata:
name: ebs-backup
spec:
includedNamespaces:
- default
snapshotVolumes: true
storageLocation: aws
백업 실행:
velero backup create ebs-backup --include-namespaces default
2️⃣ Google Cloud Storage 및 Persistent Disk Snapshot 활용
1. GCS (Google Cloud Storage) 백업 설정
(1) GCS 버킷 생성
gsutil mb -l us-central1 gs://velero-backup
(2) 서비스 계정 및 권한 설정
gcloud iam service-accounts create velero \
--display-name "Velero service account"
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member serviceAccount:velero@$(gcloud config get-value project).iam.gserviceaccount.com \
--role roles/storage.admin
(3) Velero 설치
velero install \
--provider gcp \
--bucket velero-backup \
--secret-file credentials.json \
--backup-location-config serviceAccountKeyFile=credentials.json
2. Persistent Disk (PD) 스냅샷 활용
Google Cloud에서는 PD Snapshot을 사용하여 볼륨 백업을 수행할 수 있습니다.
gcloud compute disks snapshot my-disk --snapshot-names my-disk-backup
3️⃣ Azure Blob Storage 및 Disk Snapshot 연동
1. Azure Blob Storage 백업 설정
(1) 스토리지 계정 및 컨테이너 생성
az storage account create --name velerobackup --resource-group myResourceGroup --sku Standard_LRS
az storage container create --name velero --account-name velerobackup
(2) Velero 설치 및 백업 구성
velero install \
--provider azure \
--bucket velero \
--secret-file credentials-velero \
--backup-location-config storageAccount=velerobackup
2. Azure Managed Disk 스냅샷을 이용한 백업
az snapshot create --resource-group myResourceGroup --source myDisk --name myDiskBackup
4️⃣ On-Prem 스토리지 (Ceph, MinIO, NFS) 연동
1. MinIO 백업 설정
MinIO는 AWS S3와 호환되는 오픈소스 오브젝트 스토리지입니다.
(1) MinIO 실행
docker run -p 9000:9000 -p 9001:9001 \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
quay.io/minio/minio server /data --console-address ":9001"
(2) Velero 설정
velero install \
--provider aws \
--bucket velero-backup \
--secret-file credentials-velero \
--backup-location-config region=minio,s3Url=http://minio-service:9000
2. Ceph RadosGW 연동
Ceph RadosGW는 S3 호환 API를 제공하므로 MinIO와 유사한 방식으로 설정할 수 있습니다.
3. NFS 백업 활용
NFS를 이용하여 백업을 수행하려면 Restic을 함께 사용하는 것이 좋습니다.
apiVersion: v1
kind: Pod
metadata:
name: nfs-app
annotations:
backup.velero.io/backup-volumes: nfs-data
spec:
volumes:
- name: nfs-data
nfs:
server: 192.168.1.100
path: /backup
백업 실행:
velero backup create nfs-backup --include-namespaces default
5️⃣ 스토리지 네트워크 및 성능 최적화 전략
1. 네트워크 최적화
- 스토리지 위치 최적화 → 클러스터와 가까운 리전에 백업 저장
- 네트워크 대역폭 제한 → QoS 정책을 활용하여 백업 트래픽 조절
2. 성능 최적화
- 병렬 백업 활성화
export VELERO_RESTIC_CONCURRENCY=5
- 스토리지 압축 사용
export VELERO_BACKUP_COMPRESSION=gzip
3. 보안 강화
- 백업 암호화 활성화
aws s3 cp my-backup s3://my-bucket/ --sse AES256
- IAM 정책을 최소 권한 원칙(Least Privilege)으로 설정