Сегмент Трафик в Docker Swarm - PullRequest
0 голосов
/ 04 июня 2018

Я (как и все мы, кто использовал Docker Cloud) перенес мое приложение в новую среду, поэтому я выбрал Docker Swarm CE.Я использую Traefik в качестве обратного прокси-сервера, и перед миграцией он работал с сегментами так же, как в документации, но по какой-то причине он больше не может работать с сегментами в Swarm.

Мой сервис предоставляет порты 3000 и 3001 для данного путипрефиксы.Вот часть docker-compose.yml для проблемного сервиса:

my-service:
image: my-service-image
deploy:
  restart_policy:
    condition: on-failure
  labels:
    traefik.port: 80
    traefik.serviceapi.backend: api
    traefik.serviceapi.frontend.entryPoints: "http,https"
    traefik.serviceapi.frontend.rule: "PathPrefixStrip:/service/api"
    traefik.serviceapi.port: 3000
    traefik.servicesocket.backend: socket
    traefik.servicesocket.frontend.entryPoints: "http,https,ws,wss"
    traefik.servicesocket.frontend.rule: "PathPrefixStrip:/service/socket"
    traefik.servicesocket.port: 3001

, но по какой-то причине рой не распознает эти сегменты traefik, или я что-то упускаю.

Кто-нибудь имелта же проблема?

Спасибо!

ОБНОВЛЕНИЕ:

traefik:
image: traefik
command: 
  - "--web" 
  - "--docker" 
  - "--docker.swarmMode" 
  - "--docker.watch" 
  - "--docker.domain=my-domain"
  - "--defaultentrypoints=http,https" 
  - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
  - "--entrypoints=Name:https Address::443 TLS"
  - "--acme" 
  - "--acme.storage=/etc/traefik/acme/acme.json" 
  - "--acme.entryPoint=https" 
  - "--acme.domains=my-domain"
  - "--acme.httpChallenge.entryPoint=http" 
  - "--acme.email=email"
  - "--logLevel=DEBUG" 
deploy:
  restart_policy: 
    condition: on-failure
ports: 
  - 80:80
  - 443:443
  - 8080:8080
volumes: 
  - ./var/run/docker.sock:/var/run/docker.sock
  - ./traefik/acme/acme.json:/etc/traefik/acme/acme.json

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

1 Ответ

0 голосов
/ 04 июня 2018

Я нашел решение, поэтому оно может быть кому-то полезно: для Docker Swarm вы должны установить traefik.port, ЗА ИСКЛЮЧЕНИЕМ вы используете сегменты - в этом случае вы удаляете traefik.port и просто настраиваете порты вашего сервиса.В моем случае мне просто нужно было удалить traefik.port: 80, а также оба .backend's, traefik создаст свой собственный.

...