参考资料

  1. Adminer(原名 phpMinAdmin)是一个轻量级、开源的数据库管理工具
  2. Gradle 是一个基于 Apache Ant 和 Maven 概念的自动化构建工具
  3. PostfixAdmin 是一个基于 Web 的邮件管理工具
  4. spiped(Secure Pipe Daemon)是一个用于创建加密管道的工具
  5. GlassFish是一个开源的Java EE应用服务器
  6. 如何优化Docker镜像?
  7. CentOS是一个基于 Red Hat Enterprise Linux(RHEL)源代码构建的开源 Linux 发行版
  8. Backdrop 是一个轻量级、高性能的反向代理工具

Traefik 是一个现代化的反向代理和负载均衡工具

Traefik 简介

Traefik 是一个现代化的反向代理和负载均衡工具,专为云原生和微服务架构设计。它支持自动服务发现,动态配置更新,并集成了多种后端(如 Docker、Kubernetes、Consul 等)。


特点

  1. 自动服务发现:自动检测容器或服务的变化并更新路由规则。

  2. 动态配置:无需重启即可应用配置更改。

  3. 多后端支持:支持 Docker、Kubernetes、Rancher、Consul、Etcd 等。

  4. 内置仪表盘:提供可视化监控和管理界面。

  5. 支持多种协议:HTTP/2、WebSocket、gRPC 等。

  6. Let's Encrypt 集成:自动管理 TLS 证书。

  7. 轻量级:Go 语言编写,资源占用低。


最新更新内容及时间

  • 最新版本:v2.10.7(截至 2024 年 6 月)

  • 更新内容

    • 修复若干 Bug。

    • 优化性能及稳定性。

    • 改进 Kubernetes CRD 支持。

    • 更新依赖库。


镜像下载地址

  • Docker Hub:  

    docker pull traefik:latest
    • 官方镜像:traefik

    • 带 Dashboard 的镜像:traefik:v2.10.7


官网地址


文档地址


Docker 安装示例

docker run -d \
  -p 80:80 \
  -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name traefik \
  traefik:v2.10.7 \
  --api.insecure=true \
  --providers.docker=true
  • 8080 端口用于 Dashboard(默认地址:http://<your-server-ip>:8080/dashboard/)。

  • --api.insecure=true 允许 HTTP 访问 Dashboard(生产环境建议使用 HTTPS)。


YAML 配置示例

traefik.yml 示例:

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

api:
  dashboard: true
  insecure: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: "your-email@example.com"
      storage: "/letsencrypt/acme.json"
      httpChallenge:
        entryPoint: "web"

常见错误及解决方法

  1. Dashboard 无法访问

    • 确保 --api.insecure=true 已启用。

    • 检查防火墙是否开放 8080 端口。

  2. TLS 证书申请失败

    • 确保域名解析正确,且 HTTP-01DNS-01 挑战配置无误。

    • 检查 acme.json 文件权限(需 600)。

  3. Docker 服务未发现

    • 确保 docker.sock 挂载正确:

      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
  4. 路由 404 错误

    • 检查容器标签(Labels)是否配置正确,例如:

      labels:
        - "traefik.http.routers.myapp.rule=Host(`example.com`)"
  5. Traefik 日志报错

    • 使用 docker logs traefik 查看详细错误信息。