【问题标题】:Use constraints to run multiple instances of traefik on one machine使用约束在一台机器上运行多个 traefik 实例
【发布时间】:2020-09-01 06:58:05
【问题描述】:
我正在尝试使用 docker 和 traefik 作为负载平衡器来进行简单的蓝/绿部署设置,并且我希望能够同时启动多个 traefik 实例。据我了解,我必须设置约束:
--providers.docker.constraints=Label(`key`,`value`)
但我不知道我必须在我的服务上贴什么标签,所以 traefik 不会忽略它们。文档对此非常模糊,谷歌也没有太多帮助
【问题讨论】:
标签:
docker
docker-compose
devops
traefik
【解决方案1】:
为了实现您的需要,您可以使用任何标签(除了已经存在的 Traefik 的配置标签,例如 traefik.http.routers)。主要思想是在 Traefik 配置中指定了标签和值,因此具有完全相同的标签/值对的服务将被允许由这个特定的 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-compose 集群的服务。
Docs