whiskyCavalier/openshift-multi-tenant-governance

GitHub: whiskyCavalier/openshift-multi-tenant-governance

该工具包通过 GitOps 方式为 OpenShift/Kubernetes 共享集群提供开箱即用的多租户隔离方案,涵盖 RBAC、SCC、网络策略、资源配额及自动化租户接入。

Stars: 0 | Forks: 0

# OpenShift & Kubernetes 多租户治理工具包 (RBAC, SCC, NetworkPolicy) ![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![OpenShift](https://img.shields.io/badge/OpenShift-EE0000?logo=redhatopenshift&logoColor=white) ![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5?logo=kubernetes&logoColor=white) ![ArgoCD](https://img.shields.io/badge/ArgoCD-ApplicationSets-EF7B4D?logo=argo&logoColor=white) 一个可复用、由 GitOps 驱动的工具包,用于实现**在共享 OpenShift/Kubernetes 集群上进行严格的多租户隔离** —— 涵盖 RBAC、Security Context Constraints (SCC)、默认拒绝 (default-deny) 的 NetworkPolicy、ResourceQuota/LimitRange,以及一个 ArgoCD **ApplicationSet**,它能通过 YAML 列表中的一行记录完成新租户的接入,而无需手动复制堆叠的 manifest。 旨在展示在单个集群上安全运行多个团队所需的实用 **OpenShift 管理**、**Kubernetes 安全加固**,以及**平台工程 / SRE** 技能。 ## 解决的问题 托管多个团队的共享集群需要**结构性**隔离——而不是人们可能会忘记的命名约定。本仓库展示了某个租户 namespace 中的 pod 如何在真实环境中无法访问另一个租户的服务,无法以 root 身份运行,也无法消耗无限制的集群资源——所有限制均在准入/网络层强制执行,而不仅仅依赖于策略审查。 ## 组件 | 组件 | 用途 | |---|---| | RBAC (`rbac/`) | 绑定到 IdP 同步组的 Namespace 级别的 Role —— 绝不使用 cluster-wide | | SCC (`scc/`) | 自定义 `tenant-restricted` SCC:禁止 root、禁止 host 挂载、禁止权限提升 | | NetworkPolicy (`network-policies/`) | 默认全部拒绝 (default-deny-all) + 显式的 namespace 内部允许规则 | | ResourceQuota / LimitRange (`quotas/`) | 每个租户的 CPU/内存/对象数量上限 | | ArgoCD ApplicationSet (`argocd-appsets/`) | 通过单条 YAML 列表记录接入租户 | ## 架构 参见 [`diagrams/tenant-isolation.mmd`](diagrams/tenant-isolation.mmd) (可在 GitHub 上原生渲染)。 ## 文档 —— 分阶段说明 | 阶段 | 文档 | |---|---| | 0 — 规划,租户模型,ADR | [docs/01-phase-0-planning.md](docs/01-phase-0-planning.md) | | 1 — RBAC 设计 | [docs/02-phase-1-rbac.md](docs/02-phase-1-rbac.md) | | 2 — SCC 设计 | [docs/03-phase-2-scc.md](docs/03-phase-2-scc.md) | | 3 — NetworkPolicy 默认拒绝模型 | [docs/04-phase-3-network-policy.md](docs/04-phase-3-network-policy.md) | | 4 — 配额 & LimitRange | [docs/05-phase-4-quotas.md](docs/05-phase-4-quotas.md) | | 5 — ArgoCD ApplicationSet 租户接入 | [docs/06-phase-5-appset.md](docs/06-phase-5-appset.md) | | — 算法:NetworkPolicy 评估,RBAC 解析 | [docs/07-algorithms.md](docs/07-algorithms.md) | | — 运维手册 | [docs/08-runbook.md](docs/08-runbook.md) | ## 快速开始 ``` git clone https://github.com/whiskyCavalier/openshift-multi-tenant-governance.git cd openshift-multi-tenant-governance oc apply -f argocd-appsets/tenant-onboarding-appset.yaml echo " - name: my-new-team" >> argocd-appsets/tenants-list.yaml git add argocd-appsets/tenants-list.yaml && git commit -m "onboard my-new-team" && git push # ArgoCD 自动生成带有 RBAC/SCC/NetworkPolicy/Quota 的完整 tenant namespace ``` ## 相关项目 这是一个包含 6 个项目的平台工程作品集的一部分,其他项目还涵盖了基于 Kubernetes GitOps 的 Kafka、Kafka 混沌工程、跨区域容灾、可观测性即代码以及安全的 CI/CD pipeline。 ## 关键词 OpenShift multi-tenancy, Kubernetes RBAC, Security Context Constraints SCC, NetworkPolicy default deny, Kubernetes ResourceQuota LimitRange, ArgoCD ApplicationSet, GitOps tenant onboarding, OpenShift 平台 工程, Kubernetes 安全加固, DevOps SRE 作品集项目。 ## 作者 **Arvind Vijay** ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:GitOps, OpenShift, 多租户隔离, 子域名突变, 平台工程