#docker #docker-compose #devops #traefik
#docker #docker-compose #devops #traefik
Вопрос:
Я пытаюсь использовать docker и traefik в качестве балансировщика нагрузки для простой настройки синего / зеленого развертывания, и я хочу иметь возможность запускать несколько экземпляров traefik одновременно. Насколько я понимаю, мне нужно установить ограничения с помощью: --providers.docker.constraints=Label(`key`,`value`)
но я не мог понять, какой ярлык я должен поставить на свои сервисы, чтобы traefik их не игнорировал. Документы были очень расплывчатыми по этому вопросу, и Google тоже не сильно помог
Ответ №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.