4.2 KiB
4.2 KiB
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. 添加新域名的工作流程
# 只需要编辑配置文件
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最佳实践
当前服务配置
已配置的服务
-
Consul集群
- 域名:
consul.git-4ta.live - 后端: 多节点负载均衡
- 健康检查:
/v1/status/leader
- 域名:
-
Nomad集群
- 域名:
nomad.git-4ta.live - 后端: 多节点负载均衡
- 健康检查:
/v1/status/leader
- 域名:
-
Waypoint服务
- 域名:
waypoint.git-4ta.live - 后端:
hcp1.tailnet-68f9.ts.net:9701 - 协议: HTTPS (跳过证书验证)
- 域名:
-
Vault服务
- 域名:
vault.git-4ta.live - 后端:
warden.tailnet-68f9.ts.net:8200 - 健康检查:
/ui/
- 域名:
-
Authentik服务
- 域名:
authentik.git-4ta.live - 后端:
authentik.tailnet-68f9.ts.net:9443 - 协议: HTTPS (跳过证书验证)
- 健康检查:
/flows/-/default/authentication/
- 域名:
-
Traefik Dashboard
- 域名:
traefik.git-4ta.live - 服务: 内置dashboard
- 域名:
SSL证书管理
- 证书解析器: Cloudflare DNS Challenge
- 自动续期: Let's Encrypt证书自动管理
- 存储位置:
/opt/traefik/certs/acme.json - 强制HTTPS: 所有HTTP请求自动重定向到HTTPS
故障排除
检查服务状态
# 检查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
检查证书状态
# 检查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'"
查看日志
# 查看Traefik日志
nomad logs -tail traefik-cloudflare-v1
# 查看特定错误
nomad logs -tail traefik-cloudflare-v1 | grep -i "error\|warn\|fail"
最佳实践
-
配置管理
- 始终使用
dynamic.yml文件管理路由配置 - 避免修改Nomad job文件
- 使用版本控制管理配置文件
- 始终使用
-
服务发现
- 优先使用Tailscale网络地址
- 配置适当的健康检查
- 使用HTTPS协议(跳过自签名证书验证)
-
SSL证书
- 依赖Cloudflare DNS Challenge
- 监控证书自动续期
- 定期检查证书状态
-
监控和日志
- 启用Traefik API监控
- 配置访问日志
- 定期检查服务健康状态
记住
配置与应用分离是现代基础设施管理的核心原则!
这种架构不仅提高了系统的灵活性和可维护性,更体现了专业的DevOps实践水平。