Ansible + Kubernetes打造企业级私有化部署神器
Ansible + Kubernetes:打造企业级私有化部署神器
根据近期紧急的项目需求,需要构建一套完整的 Kubernetes 私有化部署解决方案。支持多节点集群、中间件集成、监控告警,并提供现代化的 Web UI 管理界面。
一、项目背景
在云原生时代,Kubernetes 已经成为容器编排的事实标准。然而,对于许多企业而言,由于数据安全、合规要求、成本控制等因素,私有化部署仍然是最佳选择。
如何快速、稳定、可重复地部署一套生产级的 Kubernetes 集群?这正是 ansible-k8s-private 项目要解决的问题。
二、核心特性
1. 开箱即用的部署架构
项目采用 Ansible 作为基础设施自动化工具,提供了一套完整的 9 节点(可以自定义扩展)部署骨架:
- 3个 Master 节点:高可用的控制平面
- 3个 ETCD 节点:独立的外部 etcd 集群
- 2个 Worker 节点:工作负载节点
- 3个中间件节点:Redis、MySQL、MongoDB 等
💡 节点数量可根据实际环境灵活调整
2. 一体化中间件生态
内置了生产环境所需的各种中间件支持:
中间件列表:
✅ MySQL 8.0
✅ Redis 6.2
✅ MongoDB 7.0
✅ RabbitMQ 3.13
✅ Elasticsearch 7.17 + Kibana
✅ Prometheus + Alertmanager + Grafana
✅ Thanos(长期存储)
3. 可视化 Web UI 管理界面
最亮眼的特性是内置的 Web UI 管理界面:
功能特性:
- 📊 实时部署状态监控
- 📝 在线日志查看(支持实时刷新)
- 🎨 仿原生
ansible-playbook日志颜色显示 - 🔐 JWT 认证系统
- ⚙️ 图形化配置管理
- 🚀 一键式部署操作
4. 企业级高可用架构
- Keepalived + Nginx:多 VIP 负载均衡
- 外部 ETCD 集群:独立的高可用存储
- 健康检查与自动恢复:内置重试机制
- 幂等性保证:重复执行安全可靠
三、 技术栈
| 技术组件 | 版本/技术 |
|---|---|
| Kubernetes | v1.18.15 |
| Ansible | 最新稳定版 |
| Docker | 运行时 |
| Containerd | 容器运行时 |
| Calico | CNI 网络插件 |
| FastAPI | Web UI 后端 |
| Alpine.js | Web UI 前端交互 |
四、 项目结构
ansible-k8s-private/
├── inventories/prod/ # 生产环境配置
│ ├── hosts.ini # 主机清单
│ └── group_vars/all/ # 全局变量
├── roles/ # Ansible 角色
│ ├── k8s_offline/ # K8s 离线部署
│ ├── external_etcd_v2/ # ETCD 集群
│ ├── baseline_standard/ # 系统基线
│ └── ...
├── playbooks/ # 部署剧本
├── webui/ # Web UI 管理界面
│ ├── main.py # FastAPI 后端
│ └── templates/ # 前端模板
├── site.yml # 主编排文件
└── run.sh # 便捷执行脚本
五、快速开始
前置要求
- Python 3.9+
- Ansible 最新版
- SSH 免密登录到目标主机
- 目标主机:CentOS/RHEL 7+
1. 克隆项目
git clone https://github.com/pwxwmm/ansible-k8s-private.git
cd ansible-k8s-private
2. 配置主机信息
编辑 inventories/prod/hosts.ini,填入你的主机 IP:
[k8s_masters]
192.168.100.12
192.168.100.13
192.168.100.17
[k8s_workers]
192.168.100.52
192.168.100.41
3. 配置全局变量
编辑 inventories/prod/group_vars/all/globals.yml:
# VIP 配置
vips:
- name: vip1_core
ip: 192.168.100.211
bind_group: lb_vip_a
purpose: core/k8s
# SSH 配置
ansible_user: root
ansible_password: "YOUR_PASSWORD"
4. 执行部署
# 生成密码文件
./run.sh passwords
# 系统准备
./run.sh prepare
# 部署 K8s 集群
./run.sh k8s
# 部署中间件
./run.sh middleware
# 部署监控
./run.sh monitoring
5. 启动 Web UI
cd webui
./start.sh
访问 http://localhost:8000,享受可视化管理界面!
六、 核心亮点
日志颜色优化
Web UI 完美模拟了 ansible-playbook 的原生输出:
- 🟢 普通日志:绿色文本(标准输出)
- 🔵 PLAY 标题:蓝色加粗
- 🟣 TASK 标题:紫色加粗
- 🟡 CHANGED 状态:黄色高亮
- 🔴 FAILED 状态:红色警告
让你在 Web 界面中也能享受到终端原汁原味的体验!
安全性保障
项目代码已进行敏感数据脱敏处理:
- ✅ IP 地址脱敏:
172.20.65.x→192.168.100.x - ✅ 密码替换为占位符:
PASSWORD_REPLACE_THIS - ✅ 主机名标准化:
hb-node-→example-node- - ✅ 可直接安全推送到 GitHub
七、 部署流程图
┌─────────────────┐
│ 预检查脚本 │ ← ./run.sh prechecks
└────────┬────────┘
↓
┌─────────────────┐
│ 系统准备 │ ← ./run.sh prepare
│ (基线+存储) │
└────────┬────────┘
↓
┌─────────────────┐
│ 部署 ETCD │ ← ./run.sh etcd
└────────┬────────┘
↓
┌─────────────────┐
│ 部署 K8s │ ← ./run.sh k8s
│ (Master+Worker)│
└────────┬────────┘
↓
┌─────────────────┐
│ 部署中间件 │ ← ./run.sh middleware
└────────┬────────┘
↓
┌─────────────────┐
│ 部署监控 │ ← ./run.sh monitoring
└─────────────────┘
八、 适用场景
✅ 传统企业:需要私有化部署 Kubernetes 集群
✅ 金融机构:对数据安全有严格要求
✅ 政府机构:需符合合规要求
✅ 边缘计算:离线环境部署
✅ 学习研究:理解 Kubernetes 完整部署流程
九、 可扩展性
项目采用模块化设计,易于扩展:
- 新增中间件:在
roles/下创建新角色 - 自定义监控:修改
globals.yml中的 toggles - 多环境支持:复制
inventories/创建新环境
十、 相关资源
- 📖 项目文档
- 🎥 WebUI 使用指南
- 🐛 Issue 反馈
十一、 贡献
欢迎提交 PR 和 Issue!项目使用了以下技术:
- ⚡ Ansible:基础设施即代码
- 🐳 Docker:容器化部署
- ☸️ Kubernetes:容器编排
- 🚀 FastAPI:现代 Web 框架
- 💎 Alpine.js:轻量级前端框架
ansible-k8s-private 不仅仅是一个部署脚本,更是一套企业级的私有化 Kubernetes 解决方案。
核心价值:
- 🎯 开箱即用:预置配置,快速部署
- 🛡️ 生产就绪:高可用、健康检查、自动恢复
- 🎨 用户友好:可视化 UI,降低使用门槛
- 📦 生态完整:中间件、监控、日志一应俱全
如果你正在为企业构建私有化的容器编排平台,或者想要深入了解 Kubernetes 的完整部署流程,这个项目绝对值得一看!
作者:mmwei3
仓库:GitHub - ansible-k8s-private
License:MIT
Stars:欢迎 Star ⭐
最后的话:在数字化转型的道路上,基础设施的自动化是现代企业的必修课。希望这个项目能帮助更多团队快速搭建自己的容器平台!
更多推荐






所有评论(0)