167 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # 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实践水平。
 |