mgmt/docs/README-Traefik.md

167 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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实践水平。