# Traefik 配置管理指南 ## 🎯 配置与应用分离的最佳实践 ### ⚠️ 重要:避免低逼格操作 **❌ 错误做法(显得很low):** - 修改Nomad job文件来添加新域名 - 重新部署整个Traefik服务 - 把配置嵌入在应用定义中 **✅ 正确做法(优雅且专业):** ## 配置文件分离架构 ### 1. 配置文件位置 - **动态配置**: `/root/mgmt/components/traefik/config/dynamic.yml` - **应用配置**: `/root/mgmt/components/traefik/jobs/traefik-cloudflare-git4ta-live.nomad` ### 2. 关键特性 - ✅ **热重载**: Traefik配置了`file`提供者,支持`watch: true` - ✅ **自动生效**: 修改YAML配置文件后自动生效,无需重启 - ✅ **配置分离**: 配置与应用完全分离,符合最佳实践 ### 3. 添加新域名的工作流程 ```bash # 只需要编辑配置文件 vim /root/mgmt/components/traefik/config/dynamic.yml # 添加新的服务配置 services: new-service-cluster: loadBalancer: servers: - url: "https://new-service.tailnet-68f9.ts.net:8080" healthCheck: path: "/health" interval: "30s" timeout: "15s" # 添加新的路由配置 routers: new-service-ui: rule: "Host(`new-service.git-4ta.live`)" service: new-service-cluster entryPoints: - websecure tls: certResolver: cloudflare # 保存后立即生效,无需重启! ``` ### 4. 架构优势 - 🚀 **零停机时间**: 配置变更无需重启服务 - 🔧 **灵活管理**: 独立管理配置和应用 - 📝 **版本控制**: 配置文件可以独立版本管理 - 🎯 **专业标准**: 符合现代DevOps最佳实践 ## 当前服务配置 ### 已配置的服务 1. **Consul集群** - 域名: `consul.git-4ta.live` - 后端: 多节点负载均衡 - 健康检查: `/v1/status/leader` 2. **Nomad集群** - 域名: `nomad.git-4ta.live` - 后端: 多节点负载均衡 - 健康检查: `/v1/status/leader` 3. **Waypoint服务** - 域名: `waypoint.git-4ta.live` - 后端: `hcp1.tailnet-68f9.ts.net:9701` - 协议: HTTPS (跳过证书验证) 4. **Vault服务** - 域名: `vault.git-4ta.live` - 后端: `warden.tailnet-68f9.ts.net:8200` - 健康检查: `/ui/` 5. **Authentik服务** - 域名: `authentik.git-4ta.live` - 后端: `authentik.tailnet-68f9.ts.net:9443` - 协议: HTTPS (跳过证书验证) - 健康检查: `/flows/-/default/authentication/` 6. **Traefik Dashboard** - 域名: `traefik.git-4ta.live` - 服务: 内置dashboard ### SSL证书管理 - **证书解析器**: Cloudflare DNS Challenge - **自动续期**: Let's Encrypt证书自动管理 - **存储位置**: `/opt/traefik/certs/acme.json` - **强制HTTPS**: 所有HTTP请求自动重定向到HTTPS ## 故障排除 ### 检查服务状态 ```bash # 检查Traefik API curl -s http://hcp1.tailnet-68f9.ts.net:8080/api/overview # 检查路由配置 curl -s http://hcp1.tailnet-68f9.ts.net:8080/api/http/routers # 检查服务配置 curl -s http://hcp1.tailnet-68f9.ts.net:8080/api/http/services ``` ### 检查证书状态 ```bash # 检查SSL证书 openssl s_client -connect consul.git-4ta.live:443 -servername consul.git-4ta.live < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer # 检查证书文件 ssh root@hcp1 "cat /opt/traefik/certs/acme.json | jq '.cloudflare.Certificates'" ``` ### 查看日志 ```bash # 查看Traefik日志 nomad logs -tail traefik-cloudflare-v1 # 查看特定错误 nomad logs -tail traefik-cloudflare-v1 | grep -i "error\|warn\|fail" ``` ## 最佳实践 1. **配置管理** - 始终使用`dynamic.yml`文件管理路由配置 - 避免修改Nomad job文件 - 使用版本控制管理配置文件 2. **服务发现** - 优先使用Tailscale网络地址 - 配置适当的健康检查 - 使用HTTPS协议(跳过自签名证书验证) 3. **SSL证书** - 依赖Cloudflare DNS Challenge - 监控证书自动续期 - 定期检查证书状态 4. **监控和日志** - 启用Traefik API监控 - 配置访问日志 - 定期检查服务健康状态 ## 记住 **配置与应用分离是现代基础设施管理的核心原则!** 这种架构不仅提高了系统的灵活性和可维护性,更体现了专业的DevOps实践水平。