Назад | Перейти на главную страницу

Внешние сервисы Traefik получают доступ к сети docker swarm

Я запускаю службу traefik с systemd и использую поставщика файлов для балансировки нагрузки на кластер шлюза Ceph Rados и несколько других служб. У меня traefik установлен на 3 серверах таким образом, при этом keepalived перемещает связанный IP-адрес между серверами. Все это работает отлично.

Теперь у меня также есть настройка роя докеров с этими тремя серверами, настроенными в качестве менеджеров роя, и я настраиваю поставщика траэфик роя докеров, и все выглядит хорошо с панели инструментов traefik, за исключением того, что он фактически не может подключиться к службам, работающим в рое.

Я знаю, что это проблема сети, но я не уверен, как я должен справиться с этим с помощью docker swarm, когда traefik не работает в том же docker swarm. (Раньше я без проблем использовал traefik в качестве контейнера). Я знаю, что могу сделать так, чтобы службы открывали порт, а затем подключались к этому порту с хоста, но мне кажется, что это нарушит предложение обнаружения службы, если мне придется вручную настроить их в traefik.

Вот мой сервис docker-compose, с которым я тестирую

version: "3.6"

services:
  server:
    image: nginx:alpine
    deploy:
      replicas: 1
      update_config:
        order: start-first
      labels:
        - "traefik.http.routers.test1.rule=Host(`test1.fotosearch.com`)"
        - "traefik.http.services.test1.loadbalancer.server.port=80"
        - "traefik.http.routers.test1.tls.certResolver=letsencrypt"
        - "traefik.http.routers.test1.entrypoints=https_1g"
        - "traefik.http.routers.test1.service=test1"
        - "traefik.http.routers.test1.tls=true"
        - "traefik.docker.network=ingress"
        - "traefik.enable=true"
    ports:
      - target: 80
        protocol: tcp
        published: 80
        mode: ingress