首次提交:初始化项目
This commit is contained in:
199
010-中间件/003-navigation/readme.md
Normal file
199
010-中间件/003-navigation/readme.md
Normal file
@@ -0,0 +1,199 @@
|
||||
# 导航页面服务
|
||||
|
||||
## 功能说明
|
||||
|
||||
自动生成的服务导航页面,定时读取 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
|
||||
```
|
||||
|
||||
## 未来改进
|
||||
|
||||
- [ ] 添加服务健康状态检查
|
||||
- [ ] 支持服务分组
|
||||
- [ ] 添加搜索功能
|
||||
- [ ] 支持深色模式
|
||||
- [ ] 添加访问统计
|
||||
|
||||
---
|
||||
|
||||
**导航页面让您的服务一目了然!** 🚀
|
||||
Reference in New Issue
Block a user