실제 환경에서 Kubernetes 재해 복구 및 백업 자동화 시스템 구축
발행: (2025년 12월 20일 오후 10:53 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Overview
실제 네임스페이스 삭제나 설정 손실과 같은 실수 상황을 처리하기 위해 Kubernetes 재해 복구 및 백업 자동화 시스템을 구축했습니다. Kubernetes는 파드 수준에서는 자체 복구가 가능하지만, 인간의 실수에 대해서는 보호하지 못합니다. 이 프로젝트는 클러스터의 실제 상태를 백업하고 복원하는 데 초점을 맞춥니다.
How It Works
- API Interaction: 시스템은 Node.js를 사용해 Kubernetes API에 직접 연결하고 실시간 리소스를 가져옵니다.
- YAML Cleaning: 가져온 매니페스트에서
uid,resourceVersion, 타임스탬프,status와 같은 런타임 전용 필드를 제거해 정리합니다. 이를 통해 백업을 포터블하게 만들고 동일하거나 다른 클러스터에 안전하게 재적용할 수 있습니다. - Timestamped Backups: 각 백업은 타임스탬프가 포함된 디렉터리에 저장되어 특정 시점으로 복원할 수 있게 합니다.
Testing the Recovery Process
- 프로덕션과 유사한 애플리케이션을 배포하고 정상 동작을 확인합니다.
- 재해 상황을 시뮬레이션하기 위해 리소스를 의도적으로 삭제합니다.
- 복원 로직이 정리된 YAML 파일을 읽어 리소스를 다시 생성합니다.
- 배포와 파드가 다시 실행 상태가 되는지 확인하여 복구를 검증합니다.
Production‑Ready Deployment
- Containerization: 백업 로직을 컨테이너화하여 클러스터 내부에서 Kubernetes
CronJob으로 실행합니다. - RBAC: 최소 권한 원칙을 적용한 전용
ServiceAccount를 구현해 자동화가 과도한 권한 없이 클러스터 리소스를 읽을 수 있도록 합니다.
Learnings
- Kubernetes 내부 구조와 메타데이터 처리에 대한 이해가 깊어졌습니다.
- 보안 자동화를 위한 RBAC 설계를 탐구했습니다.
- 기본적인 자체 복구를 넘어 실제 재해 복구 시스템이 어떻게 설계되는지 배웠습니다.