#docker #docker-compose #docker-swarm #traefik
#docker #docker-compose #docker-swarm #traefik
Вопрос:
Я пытаюсь развернуть Traefik в своем роевом кластере. Я следую некоторым из этого руководства: https://doc.traefik.io/traefik/v1.7/user-guide/swarm-mode / несмотря на то, что я использую версию V2 traefik, я, похоже, не могу найти руководство по развертыванию в swarm (даже если оно мне нужно только на узле управления). При выполнении следующей команды docker:
docker service create
--name traefik
--constraint=node.role==manager
--publish 80:80 --publish 8080:8080
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock
--network traefik-net
traefik
--docker
--docker.swarmMode
--docker.watch
--api
Процесс создания заканчивается повторяющимся циклом.
Глядя на docker service ps
эту службу, я получаю следующее:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
l5leeyfjqnvh traefik.1 traefik:latest ahomehost01 Ready Ready 2 seconds ago
m0djg5q116kv _ traefik.1 traefik:latest ahomehost01 Shutdown Failed 3 seconds ago "task: non-zero exit (1)"
mcfzp4n0g4a0 _ traefik.1 traefik:latest ahomehost01 Shutdown Failed 14 seconds ago "task: non-zero exit (1)"
rkl8ljv7qiwt _ traefik.1 traefik:latest ahomehost01 Shutdown Failed 25 seconds ago "task: non-zero exit (1)"
ngfy3j3124ev _ traefik.1 traefik:latest ahomehost01 Shutdown Failed 35 seconds ago "task: non-zero exit (1)"
затем запуск docker service регистрирует эту службу, дает мне следующее:
traefik.1.hry87mal3bcw@ahomehost01 | 2021/01/09 14:00:51 command traefik error: failed to decode configuration from flags: field not found, node: docker
В идеале я бы предпочел, чтобы это было как файл компоновки для удобства обслуживания, который я создал, но возникают те же проблемы:
version: '3.3'
networks:
swarm-network:
driver: overlay
services:
traefik:
# The official v2 Traefik docker image
image: traefik
deploy:
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
update_config:
parallelism: 1
delay: 10s
# Enables the web UI and tells Traefik to listen to docker
command:
- "--api.insecure=true"
- "--docker"
- "--docker.swarmMode"
- "--docker.watch"
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
networks:
- swarm-network
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.port=8080"
- "traefik.backend=traefik"
- "traefik.frontend.rule=Host:traefik.docker.swarm"
- "traefik.docker.network=swarm-network"
У кого-нибудь есть идея по версии V2, как я могу выполнить развертывание в стеке (только для менеджера) или если это вообще требуется, и я должен использовать другой подход?
Комментарии:
1. Есть ли причина, по которой вы создаете конфигурацию версии v1.7 и пытаетесь запустить ее с помощью версии v2.x? Параметры и синтаксис сильно изменились… Разве не имело бы смысла напрямую создавать конфигурацию версии v2.x вместо того, чтобы начинать с версии v1.x и переносить ее на версию v2.x (см.: doc.traefik.io/traefik/migration/v1-to-v2 )? Это ссылка на конфигурацию режима роя для последней версии traefik: doc.traefik.io/traefik/providers/docker/#docker-swarm-mode
2. Я не собирался создавать конфигурацию с версией v1.7, мне не удалось найти документы версии V2. Спасибо, что поделились ими со мной. Это очень помогло разобраться в проблеме! Также стоит отметить, что из отправленного вами документа я также нашел этот dockerswarm.rocks/traefik, который отвечал на дополнительные биты необходимой мне информации.