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