lourencovales/k8s-mtp
GitHub: lourencovales/k8s-mtp
基于 Go 的 Kubernetes 多租户 Operator,通过 CRD 声明式管理租户生命周期,自动完成命名空间、资源配额和 RBAC 的供应与管理。
Stars: 0 | Forks: 0
# k8s-mtp
一个 Kubernetes 多租户平台,提供隔离的租户环境、资源配额、RBAC 管理以及基于层级的资源分配。
## 概述
k8s-mtp(Kubernetes 多租户平台)使集群管理员能够在 Kubernetes 集群内创建和管理隔离的租户环境。每个租户都会获得自己的命名空间,并带有预定义的资源配额和基于角色的访问控制。
## 功能
- **租户 CRD**:用于管理租户生命周期的自定义资源定义
- **三层系统**:Free、Pro 和 Enterprise 三个层级,具有不同的资源配额
- **自动资源供应**:创建命名空间、ResourceQuotas 和 RBAC 资源
- **Webhook 验证**:使用 TLS 保护 webhooks 的 Pod 准入控制
- **REST API**:用于租户管理操作的 HTTP API
- **PostgreSQL 后端**:用于租户元数据的持久化存储
## 架构
该平台由三个主要组件组成:
1. **Controller** (`cmd/controller`):监视 Tenant CRD 并协调集群资源
2. **API Server** (`cmd/api`):用于外部集成的 REST API
3. **Webhook** (`cmd/webhook`):用于 Pod 验证的准入控制器
## 租户层级
| 层级 | CPU | 内存 | Pods | 存储 |
|------|-----|--------|------|---------|
| Free | 500m | 1Gi | 20 | 10Gi |
| Pro | 4 | 8Gi | 100 | 100Gi |
| Enterprise | 8 | 16Gi | 200 | 200Gi |
## 快速入门
```
# 部署 CRDs
kubectl apply -f config/crds/
# 使用 Terraform 部署
cd deploy/terraform
terraform init
terraform apply
```
## 租户示例
```
apiVersion: multitenant.k8s-mtp.io/v1
kind: Tenant
metadata:
name: acme-corp
spec:
name: acme
tier: pro
ownerEmail: admin@acme.com
admins:
- alice@acme.com
operators:
- bob@acme.com
```
## 许可证
MIT 许可证 - 详见 [LICENSE](LICENSE)
标签:controller-runtime, ECS, EVTX分析, Go语言, K8s Operator, K8s多租户平台, PostgreSQL, RBAC, REST API, SaaS平台, Terraform, Webhook, 分级管理, 力导向图, 命名空间管理, 子域名突变, 容器编排, 平台工程, 日志审计, 权限管理, 模型越狱, 测试用例, 程序破解, 自动化运维, 资源配额, 隔离环境