在一台机器上使用约束 运行 多个 traefik 实例

Use constraints to run multiple instances of traefik on one machine

我正在尝试使用 docker 和 traefik 作为简单 blue/green 部署设置的负载均衡器,我希望能够同时启动多个 traefik 实例.据我了解,我必须设置约束条件: --providers.docker.constraints=Label(`key`,`value`) 但我无法弄清楚我必须在我的服务上贴上什么标签,所以 traefik 不会忽略它们。文档对此非常含糊,google 也没有太大帮助

为了实现你所需要的,你可以使用任何标签(除了已经存在的 Traefik 配置标签,例如 traefik.http.routers)。主要思想是在 Traefik 配置中指定标签和值,因此具有完全相同的 label/value 对的服务将被允许由这个特定的 Traefik 实例管理。

因此,基本示例可以是:

services:
  traefik:
    image: traefik:v2.3
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.constraints=Label(`custom.label`,`custom-value`)"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  custom_service:
    image: ...
    labels:
      - "traefik.enable=true"
      - "custom.label=custom-value"

我使用了通过环境变量提供的 custom-value 的这种方法,这允许我 运行 多个 docker-compose 实例,Traefik 仅代理来自其相应 docker 的服务-组成集群。

Docs