在一台机器上使用约束 运行 多个 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 的服务-组成集群。
我正在尝试使用 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 的服务-组成集群。