fix(k8s): 修復 ArgoCD probe 失敗 + drift-scanner egress 封鎖
All checks were successful
CD Pipeline / build-and-deploy (push) Successful in 14m36s

問題 1 — ArgoCD "All connection attempts failed":
- ARGOCD_URL 指向 192.168.0.120:30443,但 node 120 kube-proxy 對
  30443 有路由 bug(ArgoCD pod 在 121)
- 修復: ARGOCD_URL → 192.168.0.121:30443
- NetworkPolicy: 補白名單 192.168.0.121/32:30443
- NetworkPolicy: 補白名單 192.168.0.125/32:30443 (keepalived VIP)

問題 2 — drift-scanner Error x5 / 系統沉默 9.4h:
- CronJob pod template 缺少 system=awoooi label
- default-deny-all 封鎖所有 egress,allow-required-egress 僅對
  system=awoooi pods 生效
- 修復: drift-cronjob pod template 新增 system: awoooi

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-14 15:28:52 +08:00
parent aae7c12645
commit 2c6ed4e9cf
3 changed files with 22 additions and 3 deletions

View File

@@ -1,8 +1,9 @@
# AWOOOI 正式環境零信任網路策略
# 負責人: CIO
# 版本: v1.4
# 日期: 2026-04-11
# 版本: v1.5
# 日期: 2026-04-14
# 變更:
# - v1.5: 新增 keepalived VIP 192.168.0.125/32 ArgoCD NodePort 30443 egress修復 heartbeat probe
# - v1.4: 新增 ArgoCD MCP egressargocd namespace port 80/443
# - v1.3: 新增 192.168.0.111 Ollama 主機 (M1 Pro),移除 188 的 Ollama port
# - v1.2: 修復 DNS 規則使用 namespaceSelector (ADR-011 Appendix B)
@@ -187,6 +188,16 @@ spec:
- protocol: TCP
port: 30443
# keepalived VIP — ArgoCD NodePort 存取點
# 2026-04-14 Claude Sonnet 4.6: VIP=192.168.0.125 當前在 mon(120)ARGOCD_URL 指向 VIP
# 修復: heartbeat _probe_argocd_sync() 連 VIP:30443 被 NetworkPolicy 擋All connection attempts failed
- to:
- ipBlock:
cidr: 192.168.0.125/32 # keepalived VIP
ports:
- protocol: TCP
port: 30443
# 允許訪問 ArgoCD MCPMCP Phase 32026-04-11
# ArgoCD Server Pod 在 argocd namespace (10.42.0.252),但 DNS 解析到 ClusterIP (10.43.16.201)
# 必須同時允許 namespace+pod selectorPod IP和 ClusterIP
@@ -205,12 +216,15 @@ spec:
# 允許訪問 192.168.0.121 K3s Worker (mon1)
# 2026-04-09 新增: NodePort 32334(API)/32335(Web) 在 121 上host probe 需要
# 2026-04-14 新增: 30443 — ArgoCD server pod 在 121kube-proxy DNAT 從此節點
- to:
- ipBlock:
cidr: 192.168.0.121/32
ports:
- protocol: TCP
port: 6443
- protocol: TCP
port: 30443
- protocol: TCP
port: 32334
- protocol: TCP

View File

@@ -113,7 +113,9 @@ data:
# MCP Phase 3 (2026-04-11 Claude Sonnet 4.6): ArgoCD + Sentry MCP 啟用
# ARGOCD_API_TOKEN 在 Secrets 中配置
ARGOCD_MCP_ENABLED: "true"
ARGOCD_URL: "https://192.168.0.120:30443"
# 2026-04-14 Claude Sonnet 4.6: 改指向 121 — node 120 kube-proxy 對 30443 有路由 bug
# 測試結果: 120:30443 → 000(FAIL), 121:30443 → 405(ArgoCD 正常), VIP:30443 → 000(經由120故障)
ARGOCD_URL: "https://192.168.0.121:30443"
SENTRY_MCP_ENABLED: "true"
# Prometheus server 在 110:9090 (非 188)
PROMETHEUS_URL: "http://192.168.0.110:9090"

View File

@@ -38,6 +38,9 @@ spec:
labels:
app: awoooi
component: drift-scanner
# 2026-04-14 Claude Sonnet 4.6: 補 system=awoooi — allow-required-egress 以此篩選
# 缺此 label 導致 default-deny-all 封鎖所有 egress系統沉默 9.4h 根因)
system: awoooi
spec:
restartPolicy: Never
# 2026-04-09 Claude Sonnet 4.6: awoooi-api SA 不存在,改用 default只需呼叫內部 API不需 K8s 權限)