본문으로 건너뛰기

백업 관리

경로: /backup

서비스 운영 중 예기치 않은 장애나 데이터 손실은 언제든 발생할 수 있습니다. [백업 관리] 페이지에서는 Velero, 컨트롤 플레인, Docker/Podman 컨테이너의 백업 및 복구를 손쉽게 관리할 수 있어, 만일의 상황에서도 빠르게 시스템을 복구할 수 있습니다.

백업 관리 화면

권한 안내

이 페이지에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.


왜 백업이 필요한가요?

백업은 다음과 같은 상황에서 여러분의 서비스를 보호합니다:

  • 시스템 장애 복구: 서버 장애, 디스크 손상 등의 상황에서 이전 상태로 빠르게 복원
  • 잘못된 변경 되돌리기: 실수로 삭제한 설정이나 데이터를 복구
  • 마이그레이션 지원: 새로운 환경으로 시스템을 이전할 때 데이터 이동
  • 감사 및 규정 준수: 특정 시점의 시스템 상태를 보존하여 감사 요건 충족
백업의 황금률

3-2-1 규칙을 따르세요: 최소 3개의 백업 사본을 2가지 다른 유형의 미디어에 저장하고, 그 중 1개는 반드시 원격 위치에 보관하세요. KIOPS의 외부 스토리지 연동 기능이 이를 쉽게 만들어줍니다.


지원하는 백업 유형

KIOPS는 다양한 런타임 환경에 맞는 백업을 지원합니다:

  • Velero 백업: Kubernetes 클러스터를 대상으로 합니다. 워크로드(Deployment, Service 등)와 PV 데이터를 외부 오브젝트 스토리지에 저장합니다. 세밀한 네임스페이스·리소스 단위 백업과 복원에 사용합니다.
  • 컨트롤 플레인 백업: Kubernetes 마스터 노드를 대상으로 합니다. etcd 스냅샷과 PKI 인증서(/etc/kubernetes/pki)를 단일 번들로 오브젝트 스토리지에 백업합니다. 클러스터 전체 재구성 수준의 DR(재해복구)에 사용합니다.
  • Docker 백업: Docker 호스트를 대상으로 합니다. 컨테이너, 볼륨, 이미지를 백업하며, Docker 기반 서비스 보호에 사용합니다.
  • Podman 백업: Podman 호스트를 대상으로 합니다. 컨테이너, 볼륨, 이미지를 백업하며, Podman 기반 서비스 보호에 사용합니다.
Velero vs 컨트롤 플레인 백업

두 가지 K8s 백업은 서로 다른 대상을 보호합니다. Velero는 애플리케이션 워크로드와 영구 볼륨 데이터를 보호하고, 컨트롤 플레인 백업은 클러스터 자체(etcd 상태 + PKI 인증서)를 보호합니다. 완전한 DR을 위해서는 두 가지를 함께 운영하는 것을 권장합니다.


UI 구성 살펴보기

백업 관리 페이지는 세 개의 탭으로 구성되어 있습니다:

  • 백업 목록: 백업을 관리합니다. 백업 생성, 조회, 삭제, 복원 실행 작업을 수행합니다.
  • 저장소 관리: 외부 스토리지(S3, 오브젝트 스토리지)를 연동하고 관리합니다. (저장소 조회 권한이 있을 때 표시됩니다.)
  • 복구 이력: 복구 기록을 확인합니다. 과거 복원 작업 결과를 조회합니다.

설정 마법사와 통계는 별도 탭이 아니라 페이지 상단의 설치 상태 영역(설정 마법사 버튼)과 헤더 통계 카드로 제공됩니다.

백업 목록에서 확인할 수 있는 정보

각 백업 항목에서는 다음 정보를 확인할 수 있습니다:

  • 이름: 백업을 식별하는 고유 이름입니다.
  • 유형: Velero, 컨트롤 플레인, Docker, Podman 중 하나입니다.
  • 파일 크기: 백업 파일의 용량입니다.
  • 생성 시간: 백업이 만들어진 날짜와 시간입니다.
  • 상태: 성공, 실패, 진행중 중 하나입니다.
  • 저장소: 백업이 저장된 외부 스토리지의 이름과 엔드포인트 주소를 표시합니다. 외부 스토리지를 사용하지 않은 경우 -로 표시됩니다.

각 백업에 대해 복원, 삭제, 다운로드 작업을 수행할 수 있습니다.


처음 시작하기: 백업 설정 마법사

처음 백업 기능을 사용한다면 설정 마법사가 단계별로 안내해드립니다.

설정 마법사 실행 방법

  1. 좌측 메뉴에서 [백업 관리] 페이지로 이동합니다.
  2. 처음 접속 시 자동으로 설정 마법사가 나타납니다.
    • 이미 설정을 완료한 경우, 페이지 상단의 설치 상태 영역에서 설정 마법사 시작 버튼을 클릭하세요.
  3. 백업 대상 선택: 백업할 환경을 선택합니다.
    • Kubernetes 환경이라면 Velero 또는 컨트롤 플레인 백업을 선택
    • Docker/Podman 환경이라면 해당 옵션을 선택
  4. 스토리지 설정: 백업 파일을 저장할 위치를 선택합니다.
  • 로컬: 서버 내 디스크에 저장합니다. 빠른 백업/복구 속도가 장점이지만, 서버 장애 시 백업도 손실될 위험이 있습니다.
  • 오브젝트 스토리지: 온프레미스 S3 호환 저장소입니다. KIOPS가 자동 설치를 지원하며, 로컬 네트워크에서 사용할 수 있습니다.
  • S3: AWS S3 또는 호환 스토리지입니다. 높은 내구성과 원격 보관이 장점이지만, 안정적인 네트워크 연결이 필요합니다.
  1. 스케줄 설정 (선택): 자동 백업 주기를 설정합니다.
  2. 완료 버튼을 클릭하여 설정을 마칩니다.
권장 설정

프로덕션 환경에서는 외부 스토리지 + 자동 스케줄을 함께 설정하는 것을 권장합니다. 로컬 서버에 문제가 생겨도 원격 저장소에서 백업을 복구할 수 있습니다.


컨트롤 플레인 백업 생성하기

컨트롤 플레인 백업은 Kubernetes 마스터 노드의 etcd 스냅샷과 PKI 인증서를 하나의 번들로 오브젝트 스토리지에 저장합니다. 클러스터 전체를 재구성해야 하는 DR 상황에서 사용합니다.

단계별 가이드

  1. 백업 관리 페이지에서 백업 목록 탭을 선택합니다.
  2. 백업 생성 버튼을 클릭한 뒤, 백업 유형으로 컨트롤플레인을 선택합니다. (K8s 백업은 Velero / 컨트롤플레인 중 선택)
  3. 백업 생성 모달에서 다음 정보를 입력합니다:
  • 인프라 선택: 백업할 Kubernetes 클러스터를 선택합니다. 마스터 노드 정보가 자동으로 로드됩니다.
  • 백업 이름: 식별하기 쉬운 이름을 입력합니다. 기본값: cp-YYYYMMDD-HHmmss
  • 마스터 노드 SSH 자격증명: 마스터 노드에 접근할 SSH 사용자명과 비밀번호를 입력합니다.
  • sudo 비밀번호: etcd 스냅샷 생성에 필요한 sudo 비밀번호를 입력합니다.
  1. 백업 생성 버튼을 클릭합니다.
  2. 백업 완료 후 컨트롤 플레인 백업 목록에서 상태가 성공으로 변경되면 완료입니다.
SSH 자격증명 보관 안내

컨트롤 플레인 백업 시 입력하는 SSH 자격증명은 서버에 저장되지 않습니다. 복원 시에도 다시 입력해야 하므로, 자격증명을 안전한 곳에 보관하세요.

백업 내용

백엔드가 마스터 노드에 SSH로 접속하여 etcd 스냅샷 저장 → PKI 인증서 압축 → 오브젝트 스토리지 업로드 순으로 자동 처리합니다.


Velero 백업 옵션

Velero 백업 생성 시 다음 옵션을 설정할 수 있습니다.

PVC 데이터 포함

  • 체크박스: PVC 데이터 포함 (기본: 활성화)
  • 활성화 시 PersistentVolume에 저장된 실제 데이터를 함께 백업합니다 (File System Backup 방식).
  • 데이터베이스, 캐시 등 스테이트풀 워크로드의 완전한 복구에 필요합니다.
NFS 환경 주의

NFS 기반 스토리지 환경에서는 PVC 데이터 백업 시 성능 영향이 발생할 수 있습니다. 트래픽이 적은 시간대에 백업하거나, 필요에 따라 옵션을 비활성화하세요.

리소스 필터링

백업에 포함할 리소스 범위를 설정합니다:

  • PV/PVC 제외 (권장): Deployment, Service, ConfigMap 등 애플리케이션 리소스만 포함합니다. PersistentVolume 관련 리소스는 제외됩니다.
  • 앱 리소스만: Deployment, StatefulSet, Service, ConfigMap, Secret, Ingress 등 핵심 앱 리소스만 포함합니다.
  • 전체 리소스: 필터 없이 모든 리소스를 백업합니다.

Docker/Podman 백업 생성하기

Docker 또는 Podman 환경에서는 컨테이너, 볼륨, 이미지를 선택적으로 백업할 수 있습니다.

단계별 가이드 (Docker)

  1. 백업 관리 페이지에서 백업 목록 탭을 선택합니다.
  2. 백업 생성 버튼을 클릭합니다.
  3. 백업 생성 모달에서 다음을 설정합니다:

Docker 백업 생성 화면

  • 유형: Docker를 선택합니다.
  • 대상 호스트: 백업할 Docker 호스트를 선택합니다.
  • 백업 대상: 컨테이너, 볼륨, 이미지 중 선택합니다.
  1. 백업 시작 버튼을 클릭합니다.

단계별 가이드 (Podman)

Podman 백업도 Docker와 동일한 방식으로 진행됩니다.

백업 대상 선택 가이드

  • 컨테이너: 실행 중인 컨테이너의 상태를 포함합니다. 컨테이너 설정과 상태 복원이 필요할 때 선택합니다.
  • 볼륨: 영구 데이터 볼륨을 포함합니다. 데이터베이스, 파일 등 데이터 보존이 중요할 때 선택합니다.
  • 이미지: 컨테이너 이미지를 포함합니다. 특정 버전의 이미지를 보존하고 싶을 때 선택합니다.
실용적인 조언

대부분의 경우 볼륨이 가장 중요합니다. 컨테이너와 이미지는 재생성이 가능하지만, 볼륨에 저장된 데이터는 백업 없이는 복구할 수 없습니다.


외부 스토리지 연동하기

백업을 더 안전하게 보관하려면 외부 스토리지를 연동하세요. 로컬 서버에 문제가 생겨도 원격 저장소에서 복구할 수 있습니다.

지원하는 스토리지

  • 오브젝트 스토리지 (SeaweedFS): S3 호환 오브젝트 스토리지입니다. 온프레미스, 프라이빗 클라우드 환경에 적합합니다.
  • AWS S3: Amazon의 클라우드 스토리지입니다. 퍼블릭 클라우드, 하이브리드 환경에 적합합니다.
  • S3 호환: S3 API를 지원하는 다른 스토리지입니다. 다양한 환경에 적합합니다.

연동 설정 단계

  1. 저장소 관리 탭을 선택합니다.
  2. 스토리지 추가 버튼을 클릭합니다.
  3. 스토리지 유형을 선택하고 연결 정보를 입력합니다:

오브젝트 스토리지 설정:

  • 엔드포인트: 오브젝트 스토리지 서버 주소입니다. 예: http://your-storage-server:8333
  • Access Key: 접근 키입니다. 예: your-access-key
  • Secret Key: 비밀 키입니다.
  • 버킷 이름: 저장할 버킷입니다. 예: kiwi-backups

AWS S3 설정:

  • 리전: AWS 리전입니다. 예: ap-northeast-2
  • Access Key: AWS 접근 키입니다. 예: AKIA...
  • Secret Key: AWS 비밀 키입니다.
  • 버킷 이름: S3 버킷입니다. 예: my-backup-bucket
  1. 연결 테스트 버튼을 클릭하여 설정이 올바른지 확인합니다.
  2. 테스트 성공 시 저장 버튼을 클릭합니다.
오브젝트 스토리지란?

S3 API와 호환되는 오브젝트 스토리지입니다. KIOPS는 SeaweedFS를 자동 설치 기본 옵션으로 지원하며, AWS S3 등 S3 호환 저장소도 직접 등록할 수 있습니다.

인프라 연결 사전 선택

스토리지를 특정 Kubernetes 인프라에 연결하는 모달을 열면, 현재 선택 중인 인프라가 자동으로 선택되어 표시됩니다. 별도로 인프라를 다시 고를 필요 없이 빠르게 연결을 완료할 수 있습니다.

보안 참고

스토리지 자격증명(Access Key, Secret Key)은 KIOPS 내부에서 암호화되어 저장됩니다. 하지만 최소 권한 원칙에 따라, 백업 전용 사용자 계정을 생성하여 사용하는 것을 권장합니다.


백업에서 복구하기

문제가 발생했을 때 이전 백업으로 시스템을 복원할 수 있습니다.

복구 전 체크리스트

복구를 시작하기 전에 다음 사항을 확인하세요:

  • 복구하려는 백업이 올바른 시점의 것인지 확인
  • 현재 상태의 백업을 먼저 생성 (복구 후 되돌리기 위해)
  • 복구 작업 중 서비스 중단이 필요한지 팀에 공유
  • 관리자 비밀번호 준비

복구 단계

  1. 백업 목록 탭에서 복구할 백업을 찾습니다.
  2. 해당 백업의 복구 버튼을 클릭합니다.
  3. 복구 미리보기 화면에서 복원될 내용을 확인합니다.

K8s(컨트롤 플레인) 복구 화면:

K8s 복구 화면

Docker/Podman 복구 화면:

Docker 복구 화면

  1. 주의사항을 주의 깊게 읽고 확인합니다.
  2. 복구 시작 버튼을 클릭합니다.
  3. 보안 확인을 위해 관리자 비밀번호를 입력합니다.
  4. 복구가 완료될 때까지 기다립니다.
  5. 복구 완료 후 시스템이 정상 동작하는지 확인합니다.
중요

복구 작업은 현재 데이터를 덮어씁니다. 복구 전에 반드시 현재 상태를 백업해두세요. 복구 후 문제가 발생하면 방금 만든 백업으로 다시 되돌릴 수 있습니다.


자동 백업 스케줄 설정하기

수동 백업은 잊기 쉽습니다. 자동 스케줄을 설정하여 정기적으로 백업이 생성되도록 하세요.

스케줄 설정 단계

  1. 페이지 상단의 설치 상태 영역을 확인합니다.
  2. 스케줄 설정 버튼을 클릭합니다.
  3. 백업 주기를 설정합니다:
  • 주기: 매일, 매주, 매월 중 선택합니다. 프로덕션은 매일, 개발은 매주를 권장합니다.
  • 실행 시간: 원하는 시각을 설정합니다. 트래픽이 적은 새벽 시간대를 권장합니다.
  • 보관 정책: 백업 보관 개수 또는 기간을 설정합니다. 최소 7일 또는 7개 이상을 권장합니다.
  1. 저장 버튼을 클릭합니다.

권장 보관 정책

  • 프로덕션: 매일 백업, 30일 보관을 권장합니다. 문제 발견까지 시간이 걸릴 수 있기 때문입니다.
  • 스테이징: 매주 백업, 14일 보관을 권장합니다. 프로덕션 배포 전 테스트용으로 사용합니다.
  • 개발: 매주 백업, 7일 보관을 권장합니다. 기본적인 보호만 필요합니다.
자동 정리

보관 정책을 설정하면 오래된 백업이 자동으로 삭제되어 스토리지 공간을 절약할 수 있습니다. 단, 너무 짧게 설정하면 필요할 때 백업이 없을 수 있으니 주의하세요.


빠른 참조: 기능별 접근 방법

  • 설정 마법사 실행: 페이지 상단 설치 상태 영역 → 설정 마법사 시작
  • 컨트롤플레인 백업 생성: 백업 목록 탭 → 백업 생성 → 유형: 컨트롤플레인
  • Docker/Podman 백업 생성: 백업 목록 탭 → 백업 생성 → 유형: Docker/Podman
  • 외부 스토리지 연동: 저장소 관리 탭 → 스토리지 추가
  • 백업 복구: 백업 목록 탭 → 대상 백업의 복구 버튼
  • 백업 삭제: 백업 목록 탭 → 대상 백업의 삭제 버튼 (휴지통 아이콘)

용어 설명

처음 접하는 용어가 있다면 아래 설명을 참고하세요:

  • 컨트롤 플레인 백업: etcd 스냅샷과 PKI 인증서를 묶어 오브젝트 스토리지에 저장하는 K8s 클러스터 단위 백업입니다.
  • etcd: Kubernetes 클러스터의 모든 상태 데이터를 저장하는 분산 키-값 저장소입니다. 클러스터의 "기억 장치" 역할을 합니다.
  • 스냅샷(Snapshot): 특정 시점의 데이터 상태를 그대로 캡처한 것입니다. 사진을 찍듯이 그 순간을 보존합니다.
  • 오브젝트 스토리지: 파일을 객체(Object) 단위로 저장하는 스토리지 시스템입니다. S3, SeaweedFS가 대표적입니다.
  • 버킷(Bucket): 오브젝트 스토리지에서 파일들을 담는 최상위 컨테이너입니다. 폴더와 유사한 개념입니다.
  • Access Key / Secret Key: 오브젝트 스토리지에 접근하기 위한 인증 정보입니다. ID/비밀번호와 유사합니다.

주의사항 및 모범 사례

백업 시 주의사항

모범 사례
  • 정기 백업 테스트: 분기에 한 번은 실제로 복구 테스트를 수행하여 백업이 정상 작동하는지 확인하세요.
  • 다중 저장소 사용: 로컬과 외부 스토리지를 함께 사용하면 더욱 안전합니다.
  • 백업 알림 설정: 백업 실패 시 알림을 받을 수 있도록 설정하세요.
주의사항
  • 복구 전 현재 상태 백업: 복구 작업은 되돌릴 수 없으므로 현재 상태를 먼저 백업하세요.
  • 대용량 백업 주의: 대용량 백업 시 네트워크 속도에 영향을 줄 수 있으므로 트래픽이 적은 시간에 수행하세요.
  • 자격증명 관리: 외부 스토리지 자격증명은 암호화되어 저장되지만, 정기적인 키 로테이션을 권장합니다.