2.7 KiB
2.7 KiB
ArgoCD 配置部署指南
版本: v3.3.6 用途: GitOps 持續部署 建立日期: 2026-03-29 (台北時間)
1. 部署 Metrics NodePort
# 在 K3s Master (192.168.0.120) 執行
kubectl apply -f k8s/argocd/argocd-metrics-nodeport.yaml
# 驗證
kubectl get svc -n argocd | grep nodeport
2. 套用 Application Health 設定
ArgoCD 必須保留 child resource health,否則 Application.status.health 會變成 top-level Degraded 但缺少子資源證據。
bash scripts/ops/apply-argocd-health-config.sh
kubectl -n argocd get app awoooi-prod \
-o jsonpath='{.status.sync.status}{" "}{.status.health.status}{"\n"}'
必要設定:
| ConfigMap | Key | 目標 |
|---|---|---|
argocd-cm |
resource.customizations.ignoreResourceUpdates.all |
不得存在;禁止全域忽略 /status |
argocd-cmd-params-cm |
controller.resource.health.persist |
必須為 "true" |
若腳本實際修改 ConfigMap,會自動重啟 argocd-redis、argocd-server 與 argocd-application-controller,讓設定與 app tree cache 生效。
3. NodePort 配置
| Service | NodePort | 用途 |
|---|---|---|
| argocd-metrics-nodeport | 30882 | Application Controller Metrics |
| argocd-server-metrics-nodeport | 30883 | ArgoCD Server Metrics |
4. Prometheus 抓取端點
http://192.168.0.121:30883/metrics # Server Metrics (Pod 在 mon1)
⚠️ 注意: ArgoCD Server Pod 運行在 mon1 (121),需使用該節點 IP
5. 關鍵指標
| 指標 | 說明 |
|---|---|
argocd_app_info |
Application 狀態資訊 |
argocd_app_sync_total |
同步次數 |
argocd_app_health_status |
健康狀態 |
argocd_cluster_api_resources_count |
API 資源數量 |
架構圖
┌─────────────────────────────────────────────────────────┐
│ Prometheus (188:9090) │
├─────────────────────────────────────────────────────────┤
│ scrape_configs: │
│ - job_name: argocd │
│ targets: │
│ - 192.168.0.120:30882 (app-controller metrics) │
│ - 192.168.0.120:30883 (server metrics) │
└─────────────────────────────────────────────────────────┘