K3s 백업 파이프라인 문서 추가 (NFS→NAS→R2)
This commit is contained in:
75
infra/k3s-backup.md
Normal file
75
infra/k3s-backup.md
Normal file
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: K3s 백업 파이프라인
|
||||
updated: 2026-03-16
|
||||
tags: [infra, backup, k3s, r2, synology]
|
||||
---
|
||||
|
||||
## 아키텍처
|
||||
|
||||
```
|
||||
K3s PVC → NFS → Synology NAS (/volume1/k3s-backup/) → Cloudflare R2 (k3s-backup)
|
||||
```
|
||||
|
||||
## K3s → NAS (NFS)
|
||||
|
||||
### NFS PV/PVC
|
||||
|
||||
| 네임스페이스 | PVC 이름 | NFS 경로 | 비고 |
|
||||
|-------------|----------|----------|------|
|
||||
| gitea | gitea-backup-nfs | /volume1/k3s-backup/gitea | gitea dump |
|
||||
|
||||
- NFS 서버: 192.168.9.100 (Synology NAS)
|
||||
- PV reclaim policy: Retain
|
||||
|
||||
### CronJob
|
||||
|
||||
| 네임스페이스 | CronJob | 스케줄 | 내용 |
|
||||
|-------------|---------|--------|------|
|
||||
| gitea | gitea-backup | 0 3 * * * (UTC) | gitea dump → NFS |
|
||||
|
||||
## NAS → R2 (Synology systemd timer)
|
||||
|
||||
### Synology 구성
|
||||
|
||||
- **rclone 설정**: `/volume1/docker/rclone/rclone.conf`
|
||||
- **rclone 실행**: Docker 컨테이너 (`rclone/rclone:latest`)
|
||||
- **systemd service**: `r2-backup.service`
|
||||
- **systemd timer**: `r2-backup.timer` — 매일 05:00 KST (±5분 jitter)
|
||||
|
||||
### R2 버킷
|
||||
|
||||
- 버킷명: `k3s-backup`
|
||||
- 엔드포인트: `https://d8e5997eb4040f8b489f09095c0f623c.r2.cloudflarestorage.com`
|
||||
- 크레덴셜: [[vault]] `secret/cloud/cloudflare/r2`
|
||||
|
||||
### 관리 명령 (Synology SSH)
|
||||
|
||||
```bash
|
||||
# 수동 sync
|
||||
sudo systemctl start r2-backup.service
|
||||
|
||||
# 상태 확인
|
||||
sudo systemctl status r2-backup.timer
|
||||
sudo systemctl list-timers r2-backup.timer
|
||||
|
||||
# 로그
|
||||
sudo journalctl -u r2-backup.service
|
||||
|
||||
# R2 내용 확인
|
||||
sudo /usr/local/bin/docker run --rm \
|
||||
-v /volume1/docker/rclone:/config:ro \
|
||||
rclone/rclone:latest \
|
||||
--config /config/rclone.conf \
|
||||
ls r2:k3s-backup/
|
||||
```
|
||||
|
||||
## 보존 정책
|
||||
|
||||
- NAS: 수동 관리 (디스크 여유에 따라)
|
||||
- R2: lifecycle rule 설정 필요 (Cloudflare 대시보드에서 30일 만료 설정)
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] R2 lifecycle rule 설정 (대시보드에서 30일 만료)
|
||||
- [ ] vault, openmemory, anvil, ironclad 등 추가 서비스 NFS 백업 CronJob 구성
|
||||
- [ ] postgres 백업 CronJob NFS 경로 `/volume1/k3s-backup/postgres`로 변경
|
||||
Reference in New Issue
Block a user