首次提交:初始化项目

This commit is contained in:
fei
2026-02-05 00:11:05 +08:00
commit 26eaf8110b
171 changed files with 17105 additions and 0 deletions

View 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
```
## 未来改进
- [ ] 添加服务健康状态检查
- [ ] 支持服务分组
- [ ] 添加搜索功能
- [ ] 支持深色模式
- [ ] 添加访问统计
---
**导航页面让您的服务一目了然!** 🚀