mmrajput/kubernetes-platform-foundation

GitHub: mmrajput/kubernetes-platform-foundation

这是一个基于生产工程实践的Kubernetes平台基础架构,集成了GitOps、可观测性、安全等核心功能,解决快速搭建可管理、安全容器化环境的需求。

Stars: 1 | Forks: 0

# Kubernetes 平台工程 - 基础 [![Kubernetes](https://img.shields.io/badge/Kubernetes-v1.31-326CE5?logo=kubernetes&logoColor=white)](https://kubernetes.io/) [![Proxmox](https://img.shields.io/badge/Proxmox-VE_8.x-E57000?logo=proxmox&logoColor=white)](https://www.proxmox.com/) [![Ubuntu](https://img.shields.io/badge/Ubuntu-24.04_LTS-E95420?logo=ubuntu&logoColor=white)](https://ubuntu.com/) [![ArgoCD](https://img.shields.io/badge/ArgoCD-GitOps-EF7B4D?logo=argo&logoColor=white)](https://argoproj.github.io/cd/) [![Prometheus](https://img.shields.io/badge/Prometheus-Monitoring-E6522C?logo=prometheus&logoColor=white)](https://prometheus.io/) [![Grafana](https://img.shields.io/badge/Grafana-Dashboards-F46800?logo=grafana&logoColor=white)](https://grafana.com/) [![Cloudflare](https://img.shields.io/badge/Cloudflare-Tunnel_·_Access-F38020?logo=cloudflare&logoColor=white)](https://www.cloudflare.com/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ## 架构 ![平台架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c86bb5af8f111717.png) ### 图例 - 灰色实线 用户请求流量(Cloudflare → ingress → 工作负载) - 灰色虚线 备份与灾难恢复流程(Velero → MinIO → rclone → OneDrive) - 蓝色虚线 GitOps 协调(GitHub → ArgoCD → 集群) - 紫色虚线 Webhook 证书配置与 SSO 认证 - 红色虚线 密钥注入(Vault → ESO → 工作负载) - 绿色虚线 指标采集与日志传输(Promtail → Loki) - 绿色实线 仪表板查询流(Grafana → Prometheus / Loki) 上图展示了完整的平台架构,该架构部署在一个使用 Calico CNI 的三节点 kubeadm v1.31 集群上。平台被组织成六个功能关注组,所有配置均通过 GitOps 声明式管理。 ### 外部层 - 平台工程师仅通过 Git 与集群交互——所有变更都是提交,绝不直接使用 `kubectl apply` - 代码更改被推送到 GitHub 作为唯一事实来源——ArgoCD 从此处持续协调集群状态 - 镜像推广工作流通过 GitHub Actions 手动触发,由在集群内运行的 ARC 自托管运行器执行 - 所有外部访问通过 **Cloudflare Tunnel** 路由,在家庭网络上提供安全的 ingress 而无需任何开放的入站端口 - TLS 在 Cloudflare 边缘终止——家庭网络上没有暴露的入站端口 ### 网络 · GitOps 管理 - **ingress-nginx** 使用基于主机的 Ingress 规则将所有外部流量路由到内部服务 - **cert-manager** 管理操作员准入 Webhook(CNPG, ESO)的 TLS 证书——外部流量的 TLS 在 Cloudflare 边缘终止 - **NetworkPolicies** 在每个命名空间强制执行默认拒绝策略——所有服务间通信都需显式声明,防止平台组件和工作负载之间的横向移动 ### CI/CD · GitOps 管理 - **ARC (Actions Runner Controller)** 以基于 Webhook 的缩容至零模式,在集群内运行自托管的 GitHub Actions 运行器 - **ArgoCD** 以轮询模式(每 120 秒)持续将集群状态与 Git 进行协调 - CI 流水线从 Docker Hub 拉取上游镜像,使用 Trivy 扫描,通过 crane 镜像到 ghcr.io,并将更新的镜像标签提交到 Git values 文件——不构建自定义镜像 - ArgoCD 检测到 Git 中的标签变更,并自动同步集群 ### 工作负载 · GitOps 管理 - **Nextcloud** 是主要的平台工作负载,为自主文件共享而部署 - **CloudNativePG** 管理 PostgreSQL 数据库,存储 Nextcloud 的元数据、用户账户和应用状态 - **Longhorn** 为用户文件存储提供复制持久卷(RF=2) - **Redis** 处理会话缓存和文件锁定,以防止并发访问时的写入冲突 - **Keycloak** 通过 Nextcloud 的 `user_oidc` 应用为其提供 SSO,在 Nextcloud 管理 UI 中进行配置 - 选择 Nextcloud 作为参考工作负载是因为它同时使用了每个平台层——存储、数据库、身份、密钥、可观察性、备份和网络 ### 数据 · 存储 · 备份 · GitOps 管理 - **Longhorn v1.7.2**(RF=2)是默认的 StorageClass,在工作节点间提供复制的块存储 - **CloudNativePG (CNPG)** 管理 PostgreSQL 集群,通过 Barman 将 WAL 持续归档到 MinIO 以实现时间点恢复 - **MinIO**(S3 兼容)是中央对象存储,支持 Loki 日志存储、Velero 备份快照和 CNPG WAL 归档 - **Velero** 通过 Kopia 备份 Kubernetes 资源和持久卷,将快照存储在 MinIO 中 - **rclone** 作为夜间 CronJob 运行,将两个 MinIO 存储桶同步到 OneDrive 以获得异地灾难恢复副本——完成 3-2-1 备份态势 ### 安全 · 身份 · GitOps 管理 - **HashiCorp Vault**(KV v2)是密钥后端,在组件命名空间路径下存储所有平台密钥 - **External Secrets Operator (ESO)** 将 Vault 中的密钥同步到工作负载、数据库和平台服务中,作为原生 Kubernetes Secret 对象——没有应用直接从 Vault 读取 - **Keycloak 26** 为平台提供集中的 OIDC 身份认证,通过 homelab realm 在 ArgoCD 和 Grafana 之间集成 SSO - **Falco** 通过 eBPF 系统调用检查(`modern_ebpf` 驱动)提供运行时威胁检测,通过 Falcosidekick 将警报转发到 Loki——与 Prometheus 指标一起显示在公共 Grafana 仪表板中 ### 可观察性 · GitOps 管理 - **Prometheus & Alertmanager** 从所有平台组件抓取指标并管理警报规则 - **Grafana** 在统一的仪表板上可视化来自 Prometheus 的指标和来自 Loki 的日志数据 - **Loki** 聚合来自整个集群的日志,由 MinIO 支持持久的日志块存储 - **Promtail** 作为 DaemonSet 在每个节点上运行,收集并传输容器和系统日志到 Loki ### 数据流摘要 ## | 流程 | 路径 | |------|------| | 外部流量 | Cloudflare → cloudflared → nginx-ingress → 工作负载 | | 密钥 | Vault → ESO → Kubernetes Secrets → 工作负载 · 数据库 · 平台服务 | | 用户文件 | 工作负载 → Longhorn PVC | | 数据库 | CNPG (PostgreSQL) → WAL 归档 → MinIO | | 备份 | Velero (Kopia) → MinIO · CNPG Barman → MinIO | | 异地灾备 | MinIO → rclone → OneDrive | | 指标 | 所有组件 → Prometheus → Grafana | | 日志 | 所有节点 → Promtail → Loki (MinIO 支持) → Grafana | ## 当前状态 | 阶段 | 描述 | 状态 | |-------|-------------|--------| | 阶段 1 | 架构设计与规划 | ✅ 完成 | | 阶段 2 | 虚拟化基础(Proxmox VE) | ✅ 完成 | | 阶段 3 | 虚拟机供应(cloud-init + Ansible) | ✅ 完成 | | 阶段 4 | Kubernetes 集群(kubeadm + Calico) | ✅ 完成 | | 阶段 5 | GitOps 与平台服务(ArgoCD) | ✅ 完成 | | 阶段 6 | 可观察性技术栈(Prometheus + Loki + Grafana) | ✅ 完成 | | 阶段 7 | 安全加固(cert-manager + NetworkPolicies + Vault + ESO + Falco) | ✅ 完成 | | 阶段 8 | 存储与备份(Longhorn + MinIO + Velero) | ✅ 完成 | | 阶段 9 | 身份与有状态工作负载(Keycloak + CloudNativePG + Nextcloud) | ✅ 完成 | | 阶段 10 | CI/CD 流水线(ARC + GitHub Actions) | ✅ 完成 | ## 平台技术栈 | 层 | 技术 | |-------|------------| | 虚拟化平台 | Proxmox VE 8.x | | 操作系统 | Ubuntu 24.04 LTS · cloud-init | | Kubernetes | v1.31 · kubeadm · 1 个控制平面 · 2 个工作节点 | | CNI | Calico | | GitOps | ArgoCD (App-of-Apps) | | Ingress | nginx-ingress · Cloudflare Tunnel | | 可观察性 | Prometheus · Grafana · Loki · Promtail | | 安全 | cert-manager · Vault · External Secrets Operator · Falco | | 身份 | Keycloak · CloudNativePG | | 存储 | Longhorn · MinIO · Velero | | CI/CD | GitHub Actions ARC · ghcr.io | | 工作负载 | Nextcloud · Homepage | ## 仓库结构 ``` bootstrap/namespaces/ # One-time namespace setup (kubectl apply, not ArgoCD) platform/ argocd/ # Root app + AppSets per category networking/ # cert-manager, nginx-ingress, NetworkPolicies security/ # Vault, Keycloak, External Secrets data/ # CNPG clusters, Longhorn, MinIO, Velero, rclone observability/ # Prometheus, Grafana, Loki, Promtail ci-cd/ # ARC systems + runners workloads/ # Helm values per app (staging / production) infra/ # Ansible + Proxmox scripts docs/ # ADRs, guides, runbooks, reference scripts/ # Dev shell, diagrams, helpers ``` ## 文档 | 文档 | 描述 | |----------|-------------| | [复现指南](docs/guides/homelab-reproduction-guide.md) | 从头复现此家庭实验室的端到端指南 | | [平台清单](docs/reference/platform-inventory.md) | 服务端点、ArgoCD 应用清单 | | [工作负载接入](docs/reference/workload-onboarding.md) | 添加工作负载的分步指南 | | [数据层](docs/reference/data-layer.md) | CNPG、Vault、ESO 密钥清单 | | [网络拓扑](docs/architecture/network-topology.md) | 网络架构、Calico、Cloudflare Tunnel、NetworkPolicy | | [架构决策记录](docs/adr/) | ADR 001–016,包含上下文和原理 | | [故障排除](docs/guides/troubleshooting.md) | 跨所有组件的平台级故障排除 | | [运维手册](docs/runbooks/) | 运维程序(备份、灾难恢复、Vault、证书) | ## 联系方式 - **LinkedIn:** [linkedin.com/in/mahmood-rajput](https://www.linkedin.com/in/mahmood-rajput/) - **Email:** mahmoodrajput.cloud@gmail.com *最后更新:2026年4月 · 德国阿尔特多夫 71155*
标签:API集成, DLL 劫持, GitOps, Kubernetes平台, Kubernetes集群, OISF, 云基础设施, 人工智能, 仪表板, 单点登录, 可观测性, 声明式配置, 备份与恢复, 大语言模型, 子域名突变, 安全, 容器编排, 操作系统, 数据库管理, 日志管理, 特权提升, 生产工程, 用户模式Hook绕过, 监控, 自动化部署, 自定义请求头, 虚拟化, 超时处理