Longhorn recurring-job 라벨 키 오타 정정 + 인시던트 기록
- infra/k3s-backup.md: recurringjob-group → recurring-job-group (대시 포함). silent failure 주의 callout 추가 - history/2026-04-15-longhorn-label-typo.md: 18볼륨 백업 미동작 인시던트 기록
This commit is contained in:
45
history/2026-04-15-longhorn-label-typo.md
Normal file
45
history/2026-04-15-longhorn-label-typo.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Longhorn 백업 라벨 키 오타로 18볼륨 백업 전면 미동작
|
||||
date: 2026-04-15
|
||||
tags: [history, incident, longhorn, backup, k3s]
|
||||
---
|
||||
|
||||
## 사건 요약
|
||||
|
||||
2026-04-14 Longhorn 볼륨 백업 파이프라인 신규 구축. RecurringJob 4종(critical/standard × snapshot/backup) 등록 후 정상 동작으로 판단하여 종료. 다음 날(04-15) 정기 점검에서 K8s CronJob은 발화되지만 매번 "Found 0 volumes"로 noop 종료, R2 `longhorn-backup` 버킷에 e2e 테스트 99KB만 존재함을 확인.
|
||||
|
||||
## 근본 원인
|
||||
|
||||
볼륨에 부착한 라벨 키 오타.
|
||||
|
||||
- **정**: `recurring-job-group.longhorn.io/<group>` (대시 포함, 컨트롤러 셀렉터)
|
||||
- **오**: `recurringjob-group.longhorn.io/<group>` (대시 없음, 18볼륨에 부착됨)
|
||||
|
||||
RecurringJob 컨트롤러는 셀렉터 매칭 실패 시 에러나 경고 없이 "Found 0 volumes"로 조용히 Complete 처리하므로 K8s CronJob 상태만 보면 정상으로 보임. R2 객체 증가 부재나 BackupVolume CR 부재로만 감지 가능.
|
||||
|
||||
오타가 어디서 들어왔는지(ops-agents-tofu / Helm values / ArgoCD manifest)는 헤임달이 추적 중. Obsidian `infra/k3s-backup.md` 문서에도 동일 오타로 적혀 있어 향후 신규 볼륨 분류 시 재발 위험이 있었음 → 04-15 수정 완료.
|
||||
|
||||
## 영향
|
||||
|
||||
- 2026-04-14 04:27 UTC ~ 2026-04-15 라벨 수정 시각까지 production 18볼륨 정기 백업·스냅샷 0건
|
||||
- R2 longhorn-backup 버킷 사용량: e2e 테스트 잔존물 99KB (production 0)
|
||||
- 데이터 손실은 발생하지 않음 (앱 레벨 dump 백업은 정상 동작 — Gitea pg_dump 등)
|
||||
|
||||
## 조치
|
||||
|
||||
1. 헤임달이 18볼륨 라벨 재부착 (`recurringjob-group...` 제거 → `recurring-job-group...=enabled`)
|
||||
2. critical-snapshot 다음 hourly 발화에서 "Found 13 volumes" 로그 확인
|
||||
3. critical-backup 6h 경계에서 BackupVolume CR 생성 + R2 객체 증가 확인
|
||||
4. 오타 소스 (Tofu/Helm/ArgoCD) 추적 및 소스 단계에서 수정 (헤임달)
|
||||
5. Obsidian `infra/k3s-backup.md` 라벨 키 정정 + warning callout 추가 (이 문서)
|
||||
|
||||
## 교훈
|
||||
|
||||
- **초기 구축 후 최소 1주기 경과 후 실 작동 검증 필수.** 등록 직후 BackupTarget AVAILABLE/RecurringJob 등록 확인만으로는 부족 — recurring 컨트롤러가 실제로 매칭한 볼륨 수와 BackupVolume CR 생성 여부를 확인해야 함.
|
||||
- **Longhorn recurring 라벨 오류는 silent failure.** 모니터링 알림에 "최근 24h backups CR 0건" 또는 "BackupVolume 마지막 시각 > N시간" 임계값을 추가할 필요.
|
||||
- **공식 키와 문서 키 일치 검증.** Longhorn 공식 문서의 라벨 키와 운영 문서/Tofu 코드를 cross-check.
|
||||
|
||||
## 관련 문서
|
||||
|
||||
- 운영 문서: `infra/k3s-backup.md`
|
||||
- 점검 리포트: Outline `Longhorn 백업 상태 점검 — 2026-04-15` (id `7549c8ac-eebc-4cf4-8d1d-2a5e34c27c2f`)
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: K3s 백업 파이프라인
|
||||
updated: 2026-04-14 Longhorn 볼륨 백업 레이어 추가 (R2 직접)
|
||||
updated: 2026-04-15 Longhorn 라벨 키 오타 수정 (recurring-job-group, 대시 포함). 자세히는 history/2026-04-15-longhorn-label-typo.md 참조
|
||||
tags: [infra, backup, k3s, r2, longhorn, synology]
|
||||
---
|
||||
|
||||
@@ -110,7 +110,10 @@ sudo /usr/local/bin/docker run --rm \
|
||||
> [!info] 보존 정책 통일 (2026-04-14)
|
||||
> 백업 보존을 일관적으로 **7일 기준**으로 통일. snapshot은 CoW 체인이라 개수보다 보존 기간이 중요 — critical은 1일치 시간 단위, standard는 7일치 일단위로 유지.
|
||||
|
||||
## 볼륨 분류 (2026-04-14 기준, 라벨 `recurringjob-group.longhorn.io/<group>=enabled`)
|
||||
## 볼륨 분류 (2026-04-14 기준, 라벨 `recurring-job-group.longhorn.io/<group>=enabled`)
|
||||
|
||||
> [!warning] 라벨 키 주의 (2026-04-15 정정)
|
||||
> 정확한 키는 `recurring-job-group.longhorn.io/<group>` (**대시 포함**). 2026-04-14 초기 구축 시 `recurringjob-group.longhorn.io/<group>` (대시 없음) 오타로 18볼륨 백업이 전부 noop 동작했음. RecurringJob 컨트롤러는 셀렉터 매칭 실패 시 에러 없이 "Found 0 volumes"로 조용히 종료하므로 라벨 키는 반드시 대시 포함 형식으로 부착할 것.
|
||||
|
||||
### critical (13 볼륨)
|
||||
|
||||
@@ -129,7 +132,7 @@ SafeLine 런타임 로그/상태 6종 (휘발성 OK), nfs-provisioner 마운트
|
||||
```bash
|
||||
vol=$(kubectl -n <ns> get pvc <pvc-name> -o jsonpath='{.spec.volumeName}')
|
||||
kubectl -n longhorn-system label volume $vol \
|
||||
recurringjob-group.longhorn.io/critical=enabled --overwrite
|
||||
recurring-job-group.longhorn.io/critical=enabled --overwrite
|
||||
# 또는 standard
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user