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)




一个可复用、由 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, 多租户隔离, 子域名突变, 平台工程