Velero 설치 및 환경 구성
1️⃣ Velero 설치 방법
Velero를 Kubernetes 클러스터에 설치하는 방법은 여러 가지가 있습니다.
대표적으로 Helm Chart, CLI, 그리고 Operator 방식이 있습니다.
1. Helm Chart를 이용한 설치
Helm은 Kubernetes 애플리케이션을 쉽게 배포할 수 있도록 도와주는 패키지 매니저입니다.
🛠 Helm을 이용한 Velero 설치 절차
1️⃣ Helm 저장소 추가 및 업데이트
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm repo update
2️⃣ Velero 설치
helm install velero vmware-tanzu/velero --namespace velero --create-namespace
📌 Helm을 사용하면 Velero 설치가 간단하며 유지보수가 용이합니다.
2. CLI를 이용한 설치
Velero 공식 CLI를 사용하여 직접 설치할 수도 있습니다.
🛠 CLI를 이용한 설치 절차
1️⃣ Velero CLI 다운로드 및 설치
curl -fsSL https://github.com/vmware-tanzu/velero/releases/latest/download/velero-linux-amd64.tar.gz -o velero.tar.gz
tar -xvf velero.tar.gz
sudo mv velero /usr/local/bin/
2️⃣ Velero 설치
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket velero-backups \
--backup-location-config region=us-west-1
📌 CLI 설치 방법은 간편하고 유연하지만, 수동 설정이 필요할 수 있습니다.
3. Operator를 이용한 설치
Operator는 Kubernetes의 컨트롤러를 이용하여 Velero를 자동으로 관리하는 방법입니다.
🛠 Operator 기반 Velero 설치
kubectl apply -f https://github.com/vmware-tanzu/velero/releases/latest/download/velero-operator.yaml
📌 Operator 방식은 Kubernetes 네이티브 환경에서 Velero를 지속적으로 관리하는 데 적합합니다.
2️⃣ Velero Storage Backend 설정
Velero는 다양한 스토리지 백엔드를 지원합니다.
대표적으로 S3-Compatible 스토리지 및 GCP, Azure Blob Storage가 있습니다.
1. S3-Compatible 스토리지 설정 (MinIO, AWS S3, Ceph RadosGW)
Velero는 기본적으로 S3 프로토콜을 지원하며, MinIO, AWS S3, Ceph RadosGW와 호환됩니다.
🛠 AWS S3 설정 예제
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket velero-backups \
--backup-location-config region=us-west-1
🛠 MinIO 설정 예제
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket velero-minio \
--secret-file ./credentials-minio \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio-service.velero.svc:9000
📌 MinIO는 자체 호스팅 S3 스토리지로 온프레미스 환경에서 Velero를 사용할 때 유용합니다.
2. GCP, Azure Blob Storage 설정
Velero는 Google Cloud Storage 및 Azure Blob Storage와도 통합됩니다.
🛠 GCP Storage 설정 예제
velero install \
--provider gcp \
--plugins velero/velero-plugin-for-gcp:v1.5.0 \
--bucket velero-backups \
--secret-file ./credentials-gcp.json
🛠 Azure Blob Storage 설정 예제
velero install \
--provider azure \
--plugins velero/velero-plugin-for-microsoft-azure:v1.5.0 \
--bucket velero-container \
--secret-file ./credentials-azure
📌 클라우드 제공업체의 인증 정보가 필요하며, 올바른 플러그인을 사용해야 합니다.
3️⃣ Velero RBAC 설정 (권한 및 역할 기반 접근 관리)
Velero는 Kubernetes의 RBAC(Role-Based Access Control)를 활용하여 리소스 접근을 관리합니다.
1. Velero 서비스 계정 및 RBAC 역할 생성
apiVersion: v1
kind: ServiceAccount
metadata:
name: velero
namespace: velero
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: velero
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: velero
namespace: velero
📌 Velero가 클러스터 리소스에 접근하려면 적절한 권한이 필요합니다.
4️⃣ Velero와 Persistent Volume(PV) 백업 전략
Velero는 Persistent Volume을 백업할 때 두 가지 방법을 제공합니다.
1. CSI 스냅샷을 이용한 백업
- 클라우드 스토리지에서 볼륨 스냅샷을 직접 생성
- 빠르고 효율적이지만, 클라우드 제공업체 지원 필요
2. Restic을 이용한 파일 단위 백업
- 파일 기반 백업을 통해 어떤 환경에서도 사용 가능
- 볼륨을 복사하여 백업하는 방식이므로 속도가 느릴 수 있음
🛠 Restic 백업 활성화
velero backup create my-backup \
--default-volumes-to-restic
📌 클라우드 기반이면 CSI, 온프레미스 환경이면 Restic이 유용합니다.
5️⃣ 네트워크 및 방화벽 설정 고려사항
Velero는 외부 스토리지와 통신하므로 네트워크 및 방화벽 설정이 중요합니다.
1. Velero가 사용하는 네트워크 포트
포트 | 설명 |
---|---|
9000 | MinIO (S3 호환 API) |
443 | AWS S3, GCP Storage, Azure Blob Storage |
10250 | Kubernetes API Server (필요 시) |
2. 방화벽 및 네트워크 고려사항
✅ 클러스터에서 S3 또는 GCS에 접근할 수 있도록 방화벽 규칙 추가
✅ 온프레미스 환경에서는 MinIO 등의 자체 호스팅 스토리지 고려
✅ Velero가 Kubernetes API와 통신할 수 있도록 RBAC 및 네트워크 정책 구성