Skip to content

test: etcd 스냅샷 기반 클러스터 복구 검증 #33

Description

@move-hoon

계층

운영 검증 — Kubernetes 상태 저장소를 백업에서 복구하는 작업입니다.

배경 및 목적

etcd snapshot에는 Kubernetes 객체와 상태가 들어 있지만 k3s server token은 들어 있지 않습니다. snapshot만 보관하고 token을 잃으면 같은 방식으로 클러스터를 복구할 수 없습니다.

운영 클러스터를 덮어쓰지 않고 별도 복구 환경에서 Backblaze B2 snapshot과 오프클러스터 token을 함께 사용합니다.

현재 상태

6시간 snapshot 설정과 복구 Runbook은 있지만 Backblaze B2 객체에서 실제 cluster-reset 복구를 수행한 기록은 없습니다.

작업 흐름

Backblaze B2 snapshot + 원본 token → 첫 서버 cluster-reset → API 확인 → 나머지 서버 재조인 → Argo CD 정합화 → 서비스 검사

구현 방향

  1. 최근 snapshot의 생성 시각, 크기와 checksum을 기록합니다.
  2. 원본 k3s token을 오프클러스터 보관소에서 준비합니다.
  3. 별도 복구 환경의 첫 서버에서 k3s를 멈추고 cluster-reset restore를 수행합니다.
  4. API와 etcd 단일 멤버 상태를 확인한 뒤 나머지 서버를 순서대로 재조인합니다.
  5. namespace, CRD, Secret과 Argo CD root application이 복구됐는지 확인합니다.
  6. Argo CD가 Git 정본과 다른 L3 상태를 정상화하도록 합니다.
  7. PostgreSQL은 별도 Runbook으로 복구하고 사용자 경로를 확인합니다.
  8. RPO, RTO와 수동 명령을 기록합니다.

완료 조건

  • Backblaze B2 snapshot과 원본 token으로 복구합니다.
  • etcd 3멤버와 노드 3대가 정상입니다.
  • 핵심 Kubernetes 객체와 Argo CD가 정상입니다.
  • GitOps 정합화 뒤 사용자 요청이 성공합니다.
  • 실제 RPO, RTO와 수동 개입 기록이 있습니다.

하지 않는 일

  • 운영 클러스터에서 첫 복구 시험을 하지 않습니다.
  • snapshot 파일 존재만으로 완료 처리하지 않습니다.

참고 자료

위험 확인

  • 관리망(management_network) 또는 방화벽(firewall) 순서에 영향을 줍니다.
  • ESO/SecretStore 경로를 변경합니다.
  • 시크릿·자격증명이 포함되지 않았음을 확인했습니다.

Metadata

Metadata

Assignees

Labels

task인프라·플랫폼 작업 항목

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions