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, 平台工程, 测试用例, 策略即代码, 聊天机器人安全, 请求拦截, 逆向工具