백업/복구
데이터 손실은 예고 없이 발생합니다. 정기적인 백업만이 시스템 장애, 인적 오류, 보안 사고로부터 비즈니스를 보호할 수 있습니다. KIWI를 사용하면 복잡한 백업 스크립트 없이 웹 UI에서 손쉽게 백업을 관리할 수 있습니다.

왜 백업이 중요한가요?
백업이 없으면 다음과 같은 상황에서 큰 피해를 입을 수 있습니다:
- 서버 하드웨어 장애: 백업 없이는 전체 데이터 손실이 발생하지만, 백업이 있으면 몇 시간 내에 복구할 수 있습니다.
- 실수로 데이터 삭제: 백업 없이는 복구가 불가능하지만, 백업이 있으면 이전 시점으로 복원할 수 있습니다.
- 랜섬웨어 감염: 백업 없이는 몸값을 지불하거나 포기해야 하지만, 백업이 있으면 깨끗한 백업으로 복구할 수 있습니다.
- 3개의 데이터 복사본 유지
- 2개의 다른 저장 매체에 보관
- 1개는 오프사이트(외부 스토리지)에 보관
백업 유형
KIWI에서 지원하는 백업 유형입니다:
- etcd 백업: Kubernetes 클러스터 상태를 백업합니다. 매일 백업하며, 클러스터 장애 복구에 사용합니다.
- Docker 백업: 컨테이너, 볼륨, 이미지를 백업합니다. 매일 백업하며, Docker/Podman 환경 복구에 사용합니다.
- 외부 스토리지: 백업 파일을 장기 보관합니다. 주간으로 MinIO, S3에 안전하게 보관합니다.
etcd는 Kubernetes의 모든 클러스터 상태(Pod, Service, ConfigMap 등)를 저장하는 분산 키-값 저장소입니다. etcd가 손상되면 전체 클러스터를 재구성해야 할 수 있습니다.
etcd 백업 설정하기
Kubernetes 클러스터의 etcd를 백업하는 방법입니다.
사전 조건: Kubernetes 클러스터가 **[런타임 환경]**에 등록되어 있어야 합니다.
Step 1: 백업 관리 페이지 이동
좌측 메뉴에서 **[백업 관리]**를 클릭합니다.
Step 2: etcd 백업 탭 선택
상단 탭에서 etcd 백업을 클릭합니다.
Step 3: 백업 대상 클러스터 선택
클러스터 선택 드롭다운에서 백업할 Kubernetes 클러스터를 선택합니다. 클러스터 연결 상태가 "연결됨"인지 확인하세요.
Step 4: 백업 설정 구성
백업 설정 정보를 입력합니다:
- 백업 이름: 백업을 식별할 수 있는 이름입니다. (예:
etcd-daily-backup) - 저장 위치: 백업 파일이 저장될 경로입니다. (예:
/backup/etcd/) - 보관 기간: 백업 파일을 보관할 일수입니다. (예:
30일) - 스케줄: cron 표현식으로 백업 주기를 설정합니다. (예:
0 2 * * *는 매일 새벽 2시)
Step 5: 즉시 백업 실행 (선택사항)
지금 백업 버튼을 클릭하면 즉시 백업을 실행할 수 있습니다. 백업 진행 상태를 실시간으로 확인할 수 있습니다.
Step 6: 백업 완료 확인
백업 이력 테이블에서 백업 결과를 확인합니다:
- 백업 시간
- 백업 크기
- 상태 (성공/실패)
Docker 컨테이너 백업하기
Docker 컨테이너와 볼륨을 백업하는 방법입니다.
사전 조건: Docker 런타임이 **[런타임 환경]**에 등록되어 있어야 합니다.
Step 1: 백업 관리 페이지 이동
좌측 메뉴에서 **[백업 관리]**를 클릭합니다.
Step 2: Docker 백업 탭 선택
상단 탭에서 Docker 백업을 클릭합니다.
Step 3: 백업 대상 선택
백업할 대상을 선택합니다:
- 컨테이너: 실행 중인 컨테이너의 상태를 백업합니다.
- 볼륨: 데이터 볼륨을 백업합니다.
- 이미지: 컨테이너 이미지를 백업합니다.
Step 4: 백업 옵션 설정
백업 옵션을 설정합니다:
- 압축 방식: gzip, tar 등 압축 방식을 선택합니다.
- 저장 위치: 로컬 또는 원격 경로를 지정합니다.
- 제외 패턴: 백업에서 제외할 항목을 지정합니다.
Step 5: 백업 실행
백업 시작 버튼을 클릭합니다. 백업 진행률을 모니터링할 수 있습니다.
외부 스토리지 백업 설정하기
MinIO나 S3에 백업을 저장하도록 설정하는 방법입니다.
Step 1: 스토리지 설정 탭 이동
[백업 관리] 페이지에서 스토리지 설정 탭을 클릭합니다.
Step 2: 외부 스토리지 추가
스토리지 추가 버튼을 클릭합니다. 지원되는 스토리지 유형:
- MinIO: 온프레미스 오브젝트 스토리지입니다. 자체 인프라에 백업을 저장할 때 사용합니다.
- AWS S3: Amazon S3 호환 스토리지입니다. 클라우드 백업에 적합합니다.
- NFS: 네트워크 파일 시스템입니다. 기존 NFS 인프라가 있는 경우 사용합니다.
Step 3: 스토리지 연결 정보 입력
MinIO 연결 예시:
- 엔드포인트: MinIO 서버 주소입니다. (예:
minio.company.com:9000) - Access Key: MinIO 접근 키입니다.
- Secret Key: MinIO 비밀 키입니다.
- 버킷 이름: 백업을 저장할 버킷입니다. (예:
kiwi-backup)
Step 4: 연결 테스트 및 저장
연결 테스트 버튼을 클릭하여 연결이 정상인지 확인합니다. 연결 성공 메시지가 나타나면 저장 버튼을 클릭합니다.
백업에서 복구하기
이전 백업에서 시스템을 복구하는 방법입니다.
주의: 복구 작업은 기존 데이터를 덮어씁니다. 신중히 진행하세요.
Step 1: 복구 이력 탭 이동
[백업 관리] 페이지에서 복구 이력 탭을 클릭합니다.
Step 2: 복구할 백업 선택
백업 목록에서 복구할 백업을 선택합니다. 다음 정보를 확인하세요:
- 백업 날짜/시간
- 백업 크기
- 백업 유형 (etcd/Docker/스토리지)
Step 3: 복구 대상 확인
복구 미리보기에서 복구될 항목을 확인합니다. 현재 데이터가 백업 시점으로 덮어써진다는 경고를 확인하세요.
Step 4: 복구 실행
복구 시작 버튼을 클릭합니다. 보안 확인을 위해 관리자 비밀번호를 입력합니다.
Step 5: 복구 완료 확인
복구 결과를 확인합니다:
- 복구 상태 (성공/실패)
- 복구 소요 시간
- 복구된 항목 목록
자동 백업 스케줄 설정하기
매일 자동으로 백업되도록 설정하는 방법입니다.
Step 1: 스케줄 설정 탭 이동
[백업 관리] 페이지에서 스케줄 설정 탭을 클릭합니다.
Step 2: 새 스케줄 생성
스케줄 추가 버튼을 클릭합니다.
Step 3: 스케줄 설정
스케줄 정보를 입력합니다:
- 스케줄 이름: 스케줄을 식별할 수 있는 이름입니다. (예:
daily-full-backup) - 실행 주기: 매일, 매주, 매월 중 선택합니다.
- 실행 시간: 백업을 실행할 시각입니다. (예:
02:00) - 백업 대상: etcd, Docker, 또는 전체를 선택합니다.
- 보관 정책: 보관할 백업 개수 또는 기간입니다. (예: 최근 30개)
Step 4: 알림 설정 (선택사항)
백업 완료 시 알림을 받도록 설정합니다:
- 성공 알림: 백업 성공 시 알림을 받습니다.
- 실패 알림: 백업 실패 시 알림을 받습니다.
- 이메일: 알림을 받을 이메일 주소를 입력합니다.
Step 5: 스케줄 활성화
저장 및 활성화 버튼을 클릭합니다. 스케줄 목록에서 활성 상태를 확인합니다.
자주 묻는 질문
백업이 실패합니다
오류별 해결 방법:
- "No space left on device": 저장 공간이 부족합니다. 저장 경로의 디스크 공간을 확보하세요.
- "Permission denied": 쓰기 권한이 없습니다. 저장 경로의 권한을 확인하세요.
- "Connection timeout": 네트워크 문제입니다. 대상 서버 연결 상태를 확인하세요.
복구 후 서비스가 정상 작동하지 않습니다
확인 사항:
- 버전 호환성: 백업 시점과 현재 Kubernetes/Docker 버전 차이 확인
- 설정 변경: 백업 이후 변경된 설정이 있는지 확인
- 외부 의존성: 데이터베이스, 외부 API 연결 상태 확인
- 모든 Pod가 Running 상태인지 확인
- 서비스 엔드포인트 접근 가능 여부 확인
- 로그에 오류가 없는지 확인
백업 용량이 너무 큽니다
용량 절약 방법:
- 압축 활성화: gzip 압축으로 50~70% 용량 절약
- 제외 패턴 설정: 로그, 캐시 파일 제외
- 증분 백업: 변경된 부분만 백업 (지원되는 경우)
외부 스토리지 연결이 안 됩니다
- Access Key와 Secret Key가 올바른지 확인
- 버킷이 존재하고 쓰기 권한이 있는지 확인
- 방화벽에서 해당 포트(MinIO: 9000, S3: 443)가 열려 있는지 확인