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

导航页面服务

功能说明

自动生成的服务导航页面,定时读取 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 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,修改以下字典:

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

未来改进

  • 添加服务健康状态检查
  • 支持服务分组
  • 添加搜索功能
  • 支持深色模式
  • 添加访问统计

导航页面让您的服务一目了然! 🚀