Velero 아키텍처 및 구성 요소

Velero 아키텍처 및 구성 요소

1️⃣ Velero Server (컨트롤 플레인 역할)

Velero의 핵심은 Velero Server로, Kubernetes 클러스터 내에서 컨트롤 플레인 역할을 수행합니다.

1. Velero Server의 주요 기능

  • 백업 및 복구 작업 관리
  • Kubernetes API와 상호작용하여 클러스터 상태를 저장
  • 스토리지 제공자(Provider)와 연동하여 백업 데이터를 저장
  • 스케줄링을 통한 자동 백업 지원

2. Velero Server의 아키텍처

아래 다이어그램은 Velero Server의 아키텍처를 보여줍니다.

📌 Velero의 주요 컴포넌트와 데이터 흐름

+------------------+       +--------------------+       +-------------------------+
|  Kubernetes API  | <---> |   Velero Server    | <---> |  Backup Storage (S3 등)  |
+------------------+       +--------------------+       +-------------------------+
                           |   - 백업/복구 관리  |
                           |   - 스냅샷 트리거  |
                           |   - Restic 통합    |
                           +--------------------+

Velero Server는 백업과 복구의 핵심 엔진 역할을 합니다.


2️⃣ Backup Storage Location (스토리지 백업 위치 설정)

Velero는 백업 데이터를 저장할 스토리지를 Backup Storage Location이라는 개념으로 관리합니다.

1. Backup Storage Location 설정 방법

  • S3 호환 스토리지(AWS S3, MinIO, GCP Cloud Storage) 지원
  • 여러 개의 백업 위치를 설정 가능
velero backup-location create my-storage \
   --provider aws \
   --bucket velero-backups \
   --config region=us-west-1

📌 백업 저장 위치는 Velero가 데이터를 보호하는 핵심 요소입니다.


3️⃣ Volume Snapshot Location (볼륨 스냅샷 저장소 설정)

Velero는 볼륨 데이터를 Volume Snapshot Location을 사용하여 저장할 수 있습니다.

1. Volume Snapshot의 역할

  • Persistent Volume (PV)의 스냅샷을 저장
  • 클라우드 CSI 드라이버와 통합하여 빠른 복구 가능
  • Velero의 VolumeSnapshotLocation 리소스로 관리
velero snapshot-location create my-snapshots \
   --provider aws \
   --config region=us-west-1

📌 볼륨 데이터 백업을 위해 스냅샷 저장소를 활용할 수 있습니다.


4️⃣ Restic Integration (파일 레벨 백업 활용)

Velero는 Restic을 통합하여 파일 레벨 백업을 지원합니다.

1. Restic을 사용하는 이유

  • 블록 레벨이 아닌 파일 단위로 백업 가능
  • CSI 스냅샷이 불가능한 환경에서도 사용 가능

2. Restic 백업 활성화

velero backup create my-backup \
   --default-volumes-to-restic

📌 Restic을 사용하면 모든 Kubernetes 환경에서 백업이 가능합니다.


5️⃣ Backup Hooks (백업 전후 실행할 스크립트)

Velero는 백업 전후에 사용자 정의 스크립트(Hook)를 실행할 수 있습니다.

1. Backup Hook 사용 예시

  • 데이터베이스의 백업 스냅샷 생성
  • 특정 애플리케이션의 정상 종료 후 백업 수행
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: my-backup
spec:
  hooks:
    resources:
      - name: backup-mysql
        pre:
          exec:
            container: mysql
            command: ["mysqldump", "-u", "root", "--all-databases", ">", "/backup/mysql.sql"]

📌 백업 전후의 작업을 자동화하여 일관된 데이터 보호가 가능합니다.


6️⃣ Plugins & Provider 지원 (AWS, GCP, Azure, MinIO 등)

Velero는 다양한 클라우드 및 스토리지 제공자를 지원하는 플러그인(Plugins) 아키텍처를 사용합니다.

1. 주요 지원 제공자(Provider)

제공자 지원 방식
AWS S3 스토리지, EBS 스냅샷
GCP Cloud Storage, Persistent Disk
Azure Blob Storage, Managed Disks
MinIO 자체 호스팅 S3 호환 스토리지

2. Velero 플러그인 설치 예시 (AWS S3)

velero plugin add velero/velero-plugin-for-aws:v1.5.0

📌 Velero는 다양한 클라우드 및 온프레미스 환경에서 사용 가능합니다.


7️⃣ Kubernetes API와의 상호작용

Velero는 Kubernetes API를 활용하여 클러스터의 리소스를 백업 및 복구합니다.

1. Velero의 API 요청 흐름

사용자 요청 -> Velero API Server -> Kubernetes API -> 클러스터 리소스 저장

2. Velero가 백업하는 주요 리소스

리소스 유형 설명
Deployments 애플리케이션 배포 정보
Services 네트워크 서비스 설정
PersistentVolumes 영구 스토리지 볼륨
ConfigMaps & Secrets 환경 변수 및 보안 정보

3. Velero API 사용 예시 (백업 목록 조회)

kubectl get backups -n velero

📌 Velero는 Kubernetes API를 통해 모든 클러스터 리소스를 안전하게 저장합니다.


RSS Feed
마지막 수정일자