Используйте ограничения для запуска нескольких экземпляров traefik на одной машине

#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.

Документы