Как исправить проблему «Фильтрация контейнера с пустым правилом веб-интерфейса» при запуске Traefik в Docker Swarm - PullRequest
0 голосов
/ 06 февраля 2019

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.Вот краткий обзор созданных машин:

docker-machines

После того, как машины были запущены и запущены и был создан рой, я развернул следующий стек в своем рое:

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:

На снимке экрана ниже показаны работающие службы и визуализатор кластера для роя:

portainer-services

portainer-cluster

Насколько я понимаю, Traefik должен был обнаружить сервис nginx-test , а затем создать для него внешний и внутренний интерфейсы.Вот снимок панели инструментов Traefik:

traefik-dashboard

Кажется, что служба 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?

1 Ответ

0 голосов
/ 11 февраля 2019

В Swarm раздел с метками должен определяться в разделе deploy.

https://docs.traefik.io/configuration/backends/docker/#using-docker-with-swarm-mode

version: "3"
services:
  whoami:
    deploy:
      labels:
        traefik.docker.network: traefik
...