ryana79/platform-control-room
GitHub: ryana79/platform-control-room
一个自助式云平台工程门户,提供工作负载接入、IaC/GitOps 制品生成、策略校验、漂移检测和成本治理的端到端工作流。
Stars: 0 | Forks: 0
# Platform Control Room — 自助式云平台工程门户
Platform Control Room 是一个任务控制(Mission Control)风格的自助式平台工程门户,用于将工作负载接入到支持 Azure 的云平台中。它旨在展示实用的平台工程工作流,包括工作负载接收、策略验证、GitOps 交付、漂移可视化和成本治理。
默认演示是免费的:无需 Azure 订阅、无需 Azure 凭据,也无需任何付费资源。
在线演示:
- 主域名:`https://platformcontrolroom.com`
- Vercel 备用地址:`https://frontend-mu-red-aue4awuyha.vercel.app`
- API 健康检查:`https://backend-five-roan-90.vercel.app/health`
## 项目存在的原因
平台团队需要可重复的工作负载接入、策略护栏、GitOps 交付、漂移可视化和成本治理。Platform Control Room 使用真实的后端、数据库支持的状态、生成的文件、本地 Kubernetes、ArgoCD、Gatekeeper 和 Conftest 端到端地展示了这些工作流。
## 作品集亮点
- 使用 Next.js、TypeScript、FastAPI、SQLAlchemy、SQLite/Postgres、Docker、Vercel 和 Neon 构建的全栈平台门户。
- 20 多个 REST API 路由,用于工作负载接入、生成文件、策略检查、GitOps 状态、漂移检测、活动和成本报告。
- 从每个工作负载请求生成 Terraform tfvars、Helm values、Kubernetes manifests 和 ArgoCD Application YAML。
- 6 个 GitHub Actions 工作流,涵盖后端测试、前端 lint/build、Terraform 验证、Conftest 策略检查、成本报告和漂移检查。
- 由 Postgres 支持的托管公开演示,以及更丰富的本地 Docker/kind/ArgoCD/Gatekeeper 工作流。
- Azure connector lite 验证 Entra ID/GitHub OIDC、Azure Storage Terraform 状态、Resource Graph 读取、Cost Management 读取以及 Terraform plan,而无需运行 AKS。
- AI GitLab 部署生成器使用兼容 Groq/OpenAI 的输入流来生成 Terraform 和 GitLab CI pipeline,用于 Azure Resource Group、Storage Account 和 Linux VM 请求。
## 架构
```
flowchart LR
UI[Next.js Portal] --> API[FastAPI REST API]
API --> DB[(SQLite local or Postgres hosted)]
API --> GEN[File Generators]
GEN --> TF[Terraform tfvars]
GEN --> HELM[Helm values]
GEN --> ARGO[ArgoCD Application YAML]
ARGO --> KIND[kind Kubernetes]
KIND --> GK[OPA Gatekeeper]
API --> POLICY[Conftest Policy Checks]
API --> DRIFT[Drift Detection]
API --> COST[Cost Reports]
```
## 截图
推荐用于 LinkedIn 或作品集帖子的截图:
- `platform-control-room-dashboard.png`:公开着陆页/仪表盘视图,展示任务控制(Mission Control)风格的接入流程。
- `platform-control-room-workload-artifacts.png`:工作负载详情页,展示生成的 Terraform、Helm、Kubernetes 和 ArgoCD artifacts。
- `platform-control-room-finops.png`:FinOps 视图,展示每月风险敞口和工作负载成本分布。
## 技术栈
- Frontend:Next.js App Router、TypeScript、Tailwind CSS、shadcn 风格组件、lucide-react、Recharts
- Backend:FastAPI、SQLite/Postgres、SQLAlchemy、Pydantic
- 本地基础设施:Docker Compose、kind、ArgoCD、OPA Gatekeeper、Conftest
- 基础设施即代码:支持 Azure 的 Terraform 模块以及 dev/prod 环境
- 交付:GitOps manifests、ArgoCD Application 生成、GitHub Actions、GitLab CI 生成、Vercel
- AI/自动化:兼容 Groq/OpenAI 的 API、GitLab repository API、Azure CLI/OIDC 连接器
## 免费本地演示设置
```
cp .env.example .env
docker compose up --build
```
如果未安装 Docker,请在两个终端中原生运行该应用:
```
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
```
```
cd frontend
npm install
npm run dev
```
在另一个终端中,可选的本地集群演示:
```
./scripts/create-kind-cluster.sh
./scripts/install-argocd.sh
./scripts/install-gatekeeper.sh
```
打开 `http://localhost:3000`。
## 公开部署
该项目公开发布,同时保留了更丰富的本地基础设施演示:
- Frontend:Vercel 免费层
- Backend:Vercel Python serverless functions 上的 FastAPI
- Database:Neon 免费 Postgres
- 域名:`platformcontrolroom.com`
- 仅限本地的控制:kind、ArgoCD、Gatekeeper 和实时 kubectl 漂移检查
托管访客可以创建工作负载、将其持久化到 Postgres 中、查看生成的 artifacts、运行策略检查、触发演示状态更改以及生成成本报告。当 `kubectl`、kind、ArgoCD 或 Gatekeeper 等集群工具不可用时,仅限本地的页面会使用“Hosted Demo Mode”消息提示。
参见 `docs/free-public-deployment.md`。
## Azure Connector Lite
该项目包含一个安全的 Azure 连接器,它无需运行 AKS 或付费计算即可证明缺失的实时云层。它会创建 Entra ID app registration、GitHub OIDC federated credential、用于 Terraform 状态的低成本 Azure Storage 后端,以及一个针对 Azure 运行真实 Terraform plan 的手动 GitHub Actions 工作流。
参见 `docs/azure-connector-lite.md`。
## AI GitLab 部署生成器
`AI Azure Deployments` 页面允许用户选择他们想要部署的内容、回答后续问题、生成 Terraform 和 `.gitlab-ci.yml`,并在配置了 `GITLAB_TOKEN` 和 `GITLAB_PROJECT_ID` 时将生成的 pipeline 推送到专用的 GitLab 部署仓库。
参见 `docs/ai-gitlab-deployments.md`。
## 本地演示流程
1. 在门户中创建工作负载请求。
2. 确认后端已将其保存到 SQLite。
3. 查看生成的 Terraform tfvars、Helm values、ArgoCD Application YAML 和 Kubernetes manifests。
4. 运行策略验证,并比较良好与不良的工作负载。
5. 将示例工作负载部署到 kind。
6. 查看本地 ArgoCD 和 Kubernetes 状态。
7. 触发演示漂移并运行漂移检测。
8. 生成 markdown 成本治理报告。
## 演示引导
1. 打开 Mission Control 并解释其拓扑结构:门户、API、数据库、策略、GitOps、集群、成本。
2. 点击 `Advance demo` 以展示后端状态变化产生的活动。
3. 打开 `Workloads`,选择 `public-portal-prod`,并解释为什么在生产环境中允许公开访问会无法通过策略检查。
4. 打开生成的 artifacts 并展示 Terraform tfvars、Helm values、ArgoCD YAML 和 Kubernetes manifests。
5. 打开 `Cost Governance` 并生成 markdown 报告。
6. 解释这种拆分:托管演示证明产品可以在公开环境中正常运行;本地的 kind/ArgoCD/Gatekeeper 则证明了基础设施工程的深度。
## 可选的 Azure 部署警告
Azure 部署是可选的,并非作品集演示所必需。Terraform 模块已为 Azure 准备就绪,但真实的 `terraform apply` 需要您自己的 Azure 订阅、凭据、后端状态设计、安全审查和成本批准。
## 工作负载接入的工作原理
前端将工作负载配置发送到 FastAPI。后端将请求在本地存储到 SQLite 或在公开环境中存储到 Postgres,生成平台文件,验证策略,计算成本,记录活动,并将生成的内容返回给 UI。
## 策略即代码
Conftest 在部署前检查生成的 manifests 和类 Terraform 输入。Gatekeeper 策略可以安装到本地 kind 集群中,以强制执行 Kubernetes admission controls。
## GitOps
Platform Control Room 生成 ArgoCD Application YAML 和所需的 Kubernetes manifests 并存放在 `gitops/` 目录下。ArgoCD 可以将这些 manifests 同步到本地 kind 集群中。
## 漂移检测
漂移检测器会将预期的 manifests 与实时的 `kubectl` 输出进行比较,并报告缺失的 deployment、手动更改的副本数、更改的 image tag 以及缺失的 label。
## 成本治理
成本估算是根据真实的工作负载配置计算得出的:副本数、环境、公开访问权限、选定的服务以及数据分类级别。报告会写入 `reports/`。
## 安全设计决策
- 没有硬编码的机密
- 没有真实的订阅 ID
- 仅包含 `.env.example`
- 默认使用本地 SQLite
- 公开访问受策略检查限制
- Owner、environment 和 cost-center 标签为必填项
- 敏感数据分类建议使用 Key Vault
标签:GitOps, 平台工程, 测试用例, 策略即代码, 聊天机器人安全, 请求拦截, 逆向工具