niq-dev.com

想真正搞懂 Kubernetes,最快的方法就是自己搭一套。這裡是我從零 建置的 homelab:自寫認證服務、接 GitOps、跨機組集群——過程 踩過不少坑,但都是自己查出來的。

Kubernetes (kubeadm) Go OAuth2 / OIDC GitOps (Gitea + Argo CD) PostgreSQL Ansible
登入試用 → 看原始碼

這是什麼

三個核心設計,撐起整個系統

自建認證伺服器

auth 服務自己實作 OAuth2 Authorization Code + PKCE 流程與 OIDC discovery,不是接第三方身份服務。

GitOps 自動部署

自架 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