mgmt/docs/README-Traefik.md

4.2 KiB
Raw Permalink Blame History

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最佳实践

当前服务配置

已配置的服务

  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

故障排除

检查服务状态

# 检查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"

最佳实践

  1. 配置管理

    • 始终使用dynamic.yml文件管理路由配置
    • 避免修改Nomad job文件
    • 使用版本控制管理配置文件
  2. 服务发现

    • 优先使用Tailscale网络地址
    • 配置适当的健康检查
    • 使用HTTPS协议跳过自签名证书验证
  3. SSL证书

    • 依赖Cloudflare DNS Challenge
    • 监控证书自动续期
    • 定期检查证书状态
  4. 监控和日志

    • 启用Traefik API监控
    • 配置访问日志
    • 定期检查服务健康状态

记住

配置与应用分离是现代基础设施管理的核心原则!

这种架构不仅提高了系统的灵活性和可维护性更体现了专业的DevOps实践水平。