Files
k3s/010-中间件/003-navigation/readme.md
2026-02-05 00:11:05 +08:00

200 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 导航页面服务
## 功能说明
自动生成的服务导航页面,定时读取 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
```
## 未来改进
- [ ] 添加服务健康状态检查
- [ ] 支持服务分组
- [ ] 添加搜索功能
- [ ] 支持深色模式
- [ ] 添加访问统计
---
**导航页面让您的服务一目了然!** 🚀