背景
- 社群以 GitOps 維運一座 Kubernetes 叢集,承載 36 個應用:Argo CD 管理部署,Cilium 負責網路政策,OpenBao 搭配 External Secrets 管理機密,CloudNativePG 與 Longhorn 負責資料與備份,並有完整的 metrics、logs 與 traces 可觀測性。
- 我參與叢集設計與日常 release,並主導下列服務的開發。
零信任的正式環境機密初始化
- 問題:身分與審核核心服務第一次上正式環境時,需要一個臨時的 Keycloak 管理員與一批服務機密,但不能留下長期有效的高權限憑證。
- 做法:由 controller 產生機密並寫入 OpenBao,工作負載只讀取同步回來的 Secret;以 Argo CD 的 sync-wave 與 hook 固定順序:建立 Keycloak、執行臨時 reconciler、加固設定、建立正式管理員並驗證,全部通過後才刪除臨時管理員,任何一步失敗就停止。
- 結果:正式環境不保留任何臨時高權限帳號;完整的機密生命週期寫入文件。
正式環境只接受版本化映像
- 問題:CI runner 故障期間,正式環境曾暫時接受 latest 標籤的映像,部署內容無法追溯。
- 做法:先寫計畫文件,再以測試先行實作不依賴其他工具的檢查器,並接入 CI。
- 結果:正式環境的映像只能使用 SemVer 版本號(可附 digest),不合規的 manifest 無法合併。
我主導的服務
- coz-planner:我發起的陽明交大選課查詢網站,以 Go(Gin、GORM)與 SvelteKit 開發,自行實作 OAuth 授權伺服器(PKCE)與 MCP 工具,支援透過學校 OAuth 同步課表、課程篩選與 ICS/CSV 匯出。
- Core System:社群的身分與審核核心。我從零實作 FXP,讓審核通過的程式以 Kubernetes Job 執行並使用 federated workload identity,也完成兩輪資安修補與 RBAC 強化。
- Events:校園活動系統。我負責 UI 重構、修正 NYCU OAuth token 交換、正式環境 session 強化與問卷功能。
畫面來源說明:取自 NYCU LIFE 官網的產品截圖。

