导航页面服务
功能说明
自动生成的服务导航页面,定时读取 Caddy 配置文件中的域名,动态生成美观的导航网页。
访问地址
特性
- 🔄 自动更新: 每 5 分钟自动读取 Caddyfile 并更新导航页面
- 🎨 美观界面: 渐变背景、卡片式布局、悬停动画
- 📱 响应式设计: 自适应各种屏幕尺寸
- 🚀 快速访问: 一键跳转到所有服务
架构
┌─────────────────────────────────────┐
│ Caddy ConfigMap │
│ (包含所有域名配置) │
└──────────────┬──────────────────────┘
│
│ 挂载为只读卷
↓
┌─────────────────────────────────────┐
│ Navigation Pod │
│ ┌───────────────────────────────┐ │
│ │ Generator Container │ │
│ │ - 读取 Caddyfile │ │
│ │ - 解析域名 │ │
│ │ - 生成 HTML │ │
│ │ - 每 5 分钟更新 │ │
│ └───────────┬───────────────────┘ │
│ │ 共享卷 │
│ ↓ │
│ ┌───────────────────────────────┐ │
│ │ Nginx Container │ │
│ │ - 提供静态文件服务 │ │
│ │ - 端口 80 │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Traefik Ingress │
│ dh.u6.net3w.com │
└─────────────────────────────────────┘
部署方式
bash deploy.sh
工作原理
-
Generator 容器:
- 从 Caddy ConfigMap 挂载 Caddyfile
- Python 脚本解析 Caddyfile,提取所有
*.u6.net3w.com域名 - 根据子域名前缀匹配图标和描述
- 生成完整的 HTML 页面
- 写入共享卷
/usr/share/nginx/html/index.html - 每 5 分钟重复一次
-
Nginx 容器:
- 从共享卷读取 HTML 文件
- 提供 HTTP 服务(端口 80)
-
Ingress:
- 将
dh.u6.net3w.com路由到 navigation 服务
- 将
服务图标映射
| 子域名 | 图标 | 描述 |
|---|---|---|
| longhorn | 💾 | 分布式块存储管理 |
| grafana | 📊 | 监控数据可视化 |
| prometheus | 📈 | 指标监控系统 |
| alertmanager | 🔔 | 告警管理系统 |
| s3 | 🗄️ | 对象存储 API |
| console | 🎛️ | MinIO 管理控制台 |
| dh | 🏠 | 服务导航页面 |
| test | 🧪 | 测试服务 |
| 其他 | 🌐 | K3s 服务 |
添加新服务
当你在 Caddyfile 中添加新的域名配置时,导航页面会在 5 分钟内自动更新。
自定义图标和描述
编辑 ConfigMap 中的 generator.py,修改以下字典:
SERVICE_ICONS = {
'newservice': '🎯', # 添加新服务的图标
# ...
}
SERVICE_DESCRIPTIONS = {
'newservice': '新服务的描述', # 添加新服务的描述
# ...
}
然后重新部署:
kubectl apply -f deployment.yaml
kubectl rollout restart deployment navigation -n navigation
手动触发更新
如果需要立即更新导航页面:
# 重启 generator 容器
kubectl rollout restart deployment navigation -n navigation
查看日志
# 查看 generator 日志
kubectl logs -n navigation -l app=navigation -c generator -f
# 查看 nginx 日志
kubectl logs -n navigation -l app=navigation -c nginx -f
自定义样式
如果需要修改页面样式,编辑 ConfigMap 中的 HTML 模板部分,然后重新部署。
故障排查
页面无法访问
# 检查 Pod 状态
kubectl get pods -n navigation
# 检查 Ingress
kubectl get ingress -n navigation
# 检查服务
kubectl get svc -n navigation
页面未更新
# 查看 generator 日志
kubectl logs -n navigation -l app=navigation -c generator
# 检查 Caddy ConfigMap
kubectl get configmap caddy-config -n default -o yaml
# 手动触发更新
kubectl rollout restart deployment navigation -n navigation
Caddyfile 无法读取
确保 navigation 命名空间可以访问 default 命名空间的 ConfigMap:
# 检查 ConfigMap 挂载
kubectl describe pod -n navigation -l app=navigation
性能优化
- 更新频率: 默认 5 分钟,可在
generator.py中修改time.sleep(300) - 缓存: Nginx 自动缓存静态文件
- 资源限制: 可根据需要添加资源限制
卸载
kubectl delete namespace navigation
未来改进
- 添加服务健康状态检查
- 支持服务分组
- 添加搜索功能
- 支持深色模式
- 添加访问统计
导航页面让您的服务一目了然! 🚀