# ADR-034: GitOps 採用策略 (ArgoCD)

| 欄位 | 值 |
|------|-----|
| **狀態** | ✅ 已採用 |
| **日期** | 2026-03-28 (台北) |
| **決策者** | 首席架構師 |
| **影響範圍** | K3s 部署流程 |

---

## 背景

AWOOOI 目前使用 GitHub Actions 進行 CI/CD，部署流程為：
1. Push to main
2. GitHub Actions 建構映像檔
3. kubectl apply 部署到 K3s

此流程的問題：
- 無法追蹤部署狀態
- 手動 rollback 困難
- 配置漂移無法偵測

---

## 決策

採用 **ArgoCD** 作為 GitOps 工具，實現：
- Git 作為單一真實來源
- 自動同步 K3s 狀態
- 視覺化部署管理

### 部署架構

```
GitHub (main) → ArgoCD → K3s Cluster
                  ↓
              自動同步 / 手動同步
```

### 存取資訊

| 項目 | 值 |
|------|-----|
| URL | https://192.168.0.125:30443 |
| 帳號 | admin |
| 版本 | v3.3.6 |

---

## 選項評估

| 選項 | 優點 | 缺點 | 決策 |
|------|------|------|------|
| **ArgoCD** | CNCF 畢業專案、UI 完整 | 學習曲線 | ✅ 採用 |
| Flux | 輕量、Git-native | 無 UI | ❌ |
| 維持 kubectl | 簡單 | 無追蹤、漂移風險 | ❌ |

---

## 實施階段

| 階段 | 內容 | 狀態 |
|------|------|------|
| 1 | ArgoCD 部署 | ✅ 完成 |
| 2 | Sealed Secrets 整合 | ✅ 完成 |
| 3 | AWOOOI Application 建立 | 📋 待執行 |
| 4 | 自動同步啟用 | 📋 待評估 |

---

## 風險與緩解

| 風險 | 緩解措施 |
|------|---------|
| 自動同步造成意外部署 | 初期使用手動同步 |
| Secrets 外洩 | 使用 Sealed Secrets |
| 單點故障 | ArgoCD HA 模式 (待評估) |

---

## 相關文件

- ArgoCD 官方文檔: https://argo-cd.readthedocs.io/
- Sealed Secrets: https://github.com/bitnami-labs/sealed-secrets
- K3S-OPTIMIZATION-RUNBOOK.md Section 7
