Traefik с docker-compose создает слишком много интерфейсов

Я хочу использовать несколько проектов для создания докеров с Traefik в качестве обратного прокси. Следуя документации, я создал два файла для создания докеров; один для Traefik и один для примера проекта, в котором есть 2 контейнера whoami.

Это отлично работает для бэкэндов, но кажется, что Traefik создает один интерфейс для каждого работающего контейнера. Поэтому вместо одного интерфейса для двух контейнеров whoami я определил два интерфейса: "frontend-Host-whoami-localhost-0" и "frontend-Host-whoami-localhost-1".

Traefik создаст больше интерфейсов, если я увеличу масштабы службы whoami (путем дублирования их определения в файле docker-compose.yaml или с помощью docker-compose scale whoami=10).

Мне просто нужен один интерфейс для правила «Host: whoami.localhost», который указывает на один сервер с несколькими подключенными к нему запущенными контейнерами. Как я могу это сделать?

traefik.toml:

defaultEntryPoints = ["http"]

[web]
address = ":8080"

[entryPoints]
    [entryPoints.http]
    address = ":80"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "localhost"

docker-compose.yaml (для traefik):

version: "2"
services:
  traefik:
    container_name: traefik
    image: traefik
    networks:
      - webgateway
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
    labels:
      traefik.backend: web
      traefik.frontend.rule: Host:monitor.localhost

networks:
  webgateway:
    driver: bridge

whoami / docker-compose.yaml:

version: "2"
services:
  whoami:
    image: emilevauge/whoami
    networks:
      - webgateway
    labels:
      traefik.backend: whoami
      traefik.frontend.rule: Host:whoami.localhost

  whoami_2:
    image: emilevauge/whoami
    networks:
      - webgateway
    labels:
      traefik.backend: whoami
      traefik.frontend.rule: Host:whoami.localhost

networks:
  webgateway:
    external:
      name: traefikdocker_webgateway

person Wessel van der Linden    schedule 22.12.2017    source источник
comment
Вы нашли решение?   -  person larsw    schedule 14.06.2018
comment
@larsw, в чем проблема? Несмотря на то, что вы видите несколько интерфейсов, при использовании хоста whoami.localhost нагрузка все еще сбалансирована, вы можете проверить это, используя curl -H whoami.localhost http://localhost   -  person Tarun Lalwani    schedule 14.06.2018
comment
Да, я вижу несколько интерфейсов, но, насколько я могу судить, в этом нет необходимости. Глядя на некоторые недавние отчеты об ошибках и PR / слияния, AFAIK это должно было быть исправлено, но для меня это не работает так, как ожидалось.   -  person larsw    schedule 15.06.2018
comment
@larsw нет, к сожалению, нет. Если я использую docker swarm с traefik, он создаст один интерфейс с несколькими бэкэндами. Но просто использование docker compose (v2) по-прежнему создает несколько интерфейсов.   -  person Wessel van der Linden    schedule 15.06.2018
comment
@larsw после обновления до более новой версии (1.6.4) проблема была решена. Теперь я вижу один интерфейс с несколькими бэкэндами (без использования роя докеров)   -  person Wessel van der Linden    schedule 17.06.2018


Ответы (1)


Я полагаю, вы этого хотите:

http://example.com/
|-> app1 who serve http://example.com/foo
|-> app2 who serve http://example.com/bar

Для этого вы должны использовать другой сопоставитель (например, PathPrefix):

traefik.frontend.rule: Host:http://example.com/; PathPrefix:/foo
|-> app1 who serve http://example.com/foo

traefik.frontend.rule: Host:http://example.com/; PathPrefix:/bar
|-> app2 who serve http://example.com/bar

Если вы просто хотите масштабировать, вам понадобится только одна служба в вашем файле composefile:

traefik.frontend.rule: Host:http://example.com/
|-> 10 x app (docker-compose scale app=10)
person ldez    schedule 23.12.2017
comment
Последние по-прежнему генерируют несколько интерфейсов при масштабировании :-( - person larsw; 14.06.2018
comment
@larsw какую версию вы используете? А какая у вас конфигурация? - person ldez; 14.06.2018
comment
@idez пробовал v1.6.3 и содержит / traefik: экспериментально - не повезло - person larsw; 15.06.2018
comment
@larsw не могли бы вы предоставить свою конфигурацию? - person ldez; 15.06.2018