Traefik не создает ни интерфейсные, ни серверные части при работе в кластере Docker Swarm с несколькими компьютерами.
Я создал Docker Swarm на своем MacBook (OS version: 10.14.2 (18C54)
), выполнив следующие действия:это руководство: https://docs.docker.com/get-started/part4/. Докер-машина на моем ноутбуке имеет версию 0.14.0, build 89b8332
, а механизм докера, работающий на виртуальных машинах, имеет версию 18.09.1, build 4c52b90
.Вот краткий обзор созданных машин:
После того, как машины были запущены и запущены и был создан рой, я развернул следующий стек в своем рое:
version: '3.4'
services:
api_gateway:
image: traefik
command: --api \
--docker \
--docker.swarmmode \
--docker.watch \
--logLevel=DEBUG
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- external
- internal
deploy:
placement:
constraints: [node.role==manager]
redis:
image: redis:latest
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis:/data
networks:
- internal
deploy:
placement:
constraints: [node.role==worker]
nginx-test:
image: valian/nginx-test-page
labels:
- "traefik.frontend.rule=Host:api.local.mydomain.com"
depends_on:
- redis
networks:
- external
- internal
deploy:
placement:
constraints: [node.role==worker]
networks:
external:
driver: overlay
external: true
internal:
driver: overlay
volumes:
redis:
На снимке экрана ниже показаны работающие службы и визуализатор кластера для роя:
Насколько я понимаю, Traefik должен был обнаружить сервис nginx-test , а затем создать для него внешний и внутренний интерфейсы.Вот снимок панели инструментов Traefik:
Кажется, что служба api_gateway (Traefik) не может определить правило внешнего интерфейса, определенное для *Служба 1035 * nginx-test , как вы можете в журнале ниже:
2019-02-06T09:04:37.139463121Z time="2019-02-06T09:04:37Z" level=debug msg="Filtering container with empty frontend rule webserver_nginx-test.1 "
Я что-то упустил в настройках Traefik? Есть ли другой способ настроить его?при запуске обратного прокси в кластере Docker Swarm?