基于检查结果,我发现了完整的YAML模板处理流程:
前端表单处理:CreateApp.tsx 收集用户输入的应用配置信息 API调用:通过 api.js 发送到后端的 /api/applications 端点 后端处理:applicationHandler.go 的 CreateApplication 方法接收数据并保存到数据库 YAML生成:store.go 中的 GenerateYAML 函数将应用配置转换为Kubernetes YAML 部署执行:kubernetes.go 中的 DeployApplication 方法将YAML应用到Kubernetes集群 关键发现:
系统确实使用模板文件渲染YAML YAML生成逻辑在 cloud-api/model/store.go 的 GenerateYAML 函数中 部署逻辑在 cloud-api/model/kubernetes.go 的 DeployApplication 方法中
完整的数据流和YAML处理流程
- 前端表单处理 (React + TypeScript) 文件: cloud-ui/src/components/CreateApp.tsx 功能: 收集用户输入的应用配置(名称、镜像、端口、副本数等) 通过 api.js 的 createApplication 方法提交到后端
- API调用层 (前端服务) 文件: cloud-ui/src/services/api.js 功能: 封装HTTP请求,发送到 /api/applications 端点
- 后端接收处理 (Go) 文件: cloud-api/handler/applicationHandler.go 功能: 接收前端数据,验证并保存到数据库 方法: CreateApplication 处理POST请求
- 数据库存储 (PostgreSQL) 连接配置: cloud-api/model/db.go 地址: 192.168.0.65:30054 数据库: clouddb 用户: admin 功能: 存储应用配置信息
- YAML生成核心 (模板引擎) 文件: cloud-api/model/store.go 关键方法: GenerateYAML(): 主入口,生成完整的Kubernetes YAML generateDeploymentYAML(): 生成Deployment配置 generateServiceYAML(): 生成Service配置
- Kubernetes部署执行 文件: cloud-api/model/kubernetes.go 方法: DeployApplication() - 将生成的YAML应用到K8s集群 方法: ApplyYAML() - 实际执行kubectl apply操作 技术特点 模板化设计: 使用Go的fmt.Sprintf进行YAML模板渲染 默认值处理: 自动设置默认端口(8080)、副本数(1)、命名空间(default) 资源管理: 设置默认CPU(100m)和内存(128Mi)请求 服务类型支持: 支持ClusterIP和LoadBalancer两种服务类型 YAML合并: 使用---分隔符合并多个K8s资源 这是一个完整的云原生应用部署平台,从前端表单到后端YAML生成再到Kubernetes部署,形成了完整的自动化流水线。