想真正搞懂 Kubernetes,最快的方法就是自己搭一套。這裡是我從零 建置的 homelab:自寫認證服務、接 GitOps、跨機組集群——過程 踩過不少坑,但都是自己查出來的。
三個核心設計,撐起整個系統
auth 服務自己實作 OAuth2 Authorization Code +
PKCE 流程與 OIDC discovery,不是接第三方身份服務。
自架 Gitea + Argo CD:push 到 git 觸發 CI build image, Argo CD 偵測到新版本自動同步部署到叢集。
各服務原本各自一份 SQLite,逐步遷移到共用 PostgreSQL, 統一管理、統一備份,不再是分散的資料孤島。
一次登入請求的實際路徑,以及背後的 GitOps 部署流程
flowchart LR
subgraph client [使用者]
Browser[瀏覽器]
end
subgraph edge [邊界]
Traefik[Traefik Ingress]
end
subgraph app [應用服務]
Portal[portal
前端 SPA]
Gateway[gateway
統一路由 + JWT 驗證]
Auth[auth
OAuth2 + OIDC]
Kanban[kanban
REST API]
More[其他後端服務
...]
end
subgraph data [資料層]
PG[(共用 PostgreSQL)]
end
subgraph gitops [GitOps]
Gitea[Gitea
Git + Registry]
ArgoCD[Argo CD]
end
Browser -->|① 登入| Traefik --> Portal
Portal -->|② Authorization Code + PKCE| Auth
Auth -->|③ token| Portal
Portal -->|④ 帶 token 呼叫| Gateway
Gateway --> Auth
Gateway --> Kanban
Gateway --> More
Auth --> PG
Kanban --> PG
Gitea -->|push 觸發 CI| Gitea
Gitea -->|build image| Gitea
ArgoCD -->|偵測新版本並同步| app