81a94322f73011c69c5447b7fab593f760d730e0
Implement AWXClient with Launch, GetJob, and Cancel methods for orchestrating Ansible job templates via AWX REST API. Uses Bearer token auth with 30s timeout. Includes unit tests with mock transport. Relates-to: #97
✨ 核心能力
📦 资源纳管
- 多集群管理 — 统一接入和管理多个 K8s 集群,集群状态实时可见
- 资源全景 — 纳管集群内的 Namespace、工作负载、配置等核心资源,提供统一视图
- 租户管理 — 基于业务线的多租户资源隔离与配额管理
🚀 基础服务部署
- 服务目录 — 标准化的服务目录管理,定义和维护可部署的服务清单
- 服务发布 — 基于 Wayne 平台的 K8s 服务部署与发布,支持多环境发布
- 运维驾驶舱 — 服务状态总览,实时掌握部署进度与运行状况
🎯 业务交付
- 业务线管理 — 按业务线组织资源与权限,清晰的组织架构映射
- 子系统授权 — 基于业务线的细粒度子系统访问控制与角色绑定
- 任务调度 — 统一的任务中心,编排和执行运维操作流程
🔐 统一认证与审计
- 多协议认证 — LDAP + SAML + OAuth 2.0,对接企业统一身份认证
- SSO 单点登录 — 一次登录,无缝跳转各子系统
- 全链路审计 — 登录审计 + 操作审计,完整记录每一次运维操作
🛠️ 技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | Vue 3 + TypeScript + Vite | Composition API + Element Plus UI |
| 后端 | Go + Gin + GORM | RESTful API + Swagger 文档 |
| 数据库 | MySQL 8.0 | GORM AutoMigrate 迁移管理 |
| 认证 | JWT + LDAP/SAML/OAuth 2.0 | 多协议统一认证网关 |
| 部署 | Docker + Kubernetes + Wayne | Nginx 反向代理 + K8s 编排 |
📁 项目结构
xinfra/
├── frontend/ # 前端 Vue 3 项目
│ └── src/
│ ├── api/ # API 请求封装
│ ├── components/ # 可复用组件
│ ├── composables/ # 组合式函数
│ ├── layouts/ # 页面布局
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态管理
│ ├── views/ # 页面视图
│ │ ├── dashboard/ # 运维驾驶舱
│ │ ├── cluster/ # 集群管理
│ │ ├── resource/ # 资源纳管(Namespace/租户/状态看板)
│ │ ├── service/ # 服务部署(目录/发布管理)
│ │ ├── task/ # 任务调度中心
│ │ ├── businessLine/ # 业务线管理
│ │ ├── subsystem/ # 子系统管理与授权
│ │ ├── config/ # 配置管理
│ │ ├── monitor/ # 监控告警
│ │ ├── audit/ # 审计日志
│ │ └── auth/ # 登录认证
│ └── utils/ # 工具函数
├── server/ # 后端 Go 项目
│ ├── cmd/server/ # 程序入口
│ ├── internal/ # 内部包(分层架构)
│ │ ├── auth/ # 认证模块
│ │ ├── config/ # 配置管理
│ │ ├── database/ # 数据库连接
│ │ ├── handler/ # HTTP 处理器
│ │ ├── model/ # 数据模型
│ │ ├── router/ # 路由注册
│ │ ├── service/ # 业务逻辑
│ │ ├── sso/ # SSO 单点登录
│ │ └── wayne/ # Wayne 子系统集成
│ └── migrations/ # 数据库迁移
├── deploy/ # 部署配置
│ ├── docker/ # Docker 构建配置
│ └── k8s/ # Kubernetes 配置
├── Makefile # 构建脚本
└── LICENSE # Apache 2.0 License
🚀 快速开始
环境要求
| 依赖 | 版本 |
|---|---|
| Go | >= 1.21 |
| Node.js | >= 18 |
| MySQL | >= 8.0 |
| Redis | >= 7.0 |
安装与运行
# 1. 克隆项目
git clone https://github.com/2311719626/xinfra.git
cd xinfra
# 2. 启动本地开发环境(MySQL + Redis)
make dev-up
# 3. 启动前后端开发服务器
make run
💡 也可以分别启动前后端:
make run-frontend # 启动前端 dev server make run-server # 启动后端 server
构建与部署
# 构建前后端
make build
# 构建 Docker 镜像
make docker
# 部署到 Kubernetes
kubectl apply -f deploy/k8s/
📖 API 文档
Swagger 文档通过 swaggo 自动生成:
make swagger
生成后访问:http://localhost:8080/swagger/index.html
🔧 开发指南
可用命令
| 命令 | 说明 |
|---|---|
make help |
显示帮助信息 |
make build |
构建前后端项目 |
make run |
启动开发服务器 |
make test |
运行测试 |
make docker |
构建 Docker 镜像 |
make swagger |
生成 API 文档 |
make migrate-up |
执行数据库迁移 |
make migrate-down |
回滚数据库迁移 |
make clean |
清理构建产物 |
Git 提交规范
本项目遵循 Conventional Commits 规范:
| 前缀 | 说明 |
|---|---|
feat: |
✨ 新功能 |
fix: |
🐛 修复 Bug |
docs: |
📝 文档更新 |
style: |
💄 代码格式(不影响逻辑) |
refactor: |
♻️ 重构 |
perf: |
⚡ 性能优化 |
test: |
✅ 测试相关 |
chore: |
🔧 构建/工具链 |
ci: |
🎡 CI/CD 配置 |
代码规范
- Go — 遵循
gofmt格式,提交前运行go vet ./... - Vue/TypeScript — 遵循 ESLint 规范,提交前运行
npm run lint - 提交前请确保代码通过所有测试:
make test
🤝 参与贡献
欢迎参与贡献!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支:
git checkout -b feat/amazing-feature - 提交更改:
git commit -m 'feat: add amazing feature' - 推送分支:
git push origin feat/amazing-feature - 提交 Pull Request
📋 路线图
- 完善 Ansible Playbook 调度与实时日志推送
- 补充完整 API 接口文档
- 添加单元测试与集成测试
- 多集群跨集群操作支持
- 操作回放与审计录像
📜 许可证
本项目采用 Apache License 2.0 开源协议。
如果觉得有用,请点个 ⭐ Star 支持一下!
Description
Languages
Go
56.4%
Vue
31.9%
TypeScript
6.3%
Shell
2.6%
CSS
1.5%
Other
1.2%