Как запретить Traefik подключаться к docker.sock при использовании AWS ECS и Fargate

Я настраиваю среду для веб-приложения на AWS ECS с помощью Fargate. Программа установки использует несколько контейнеров для внешнего и внутреннего интерфейса и Traefik (также в контейнере) для маршрутизации за ALB. Я использую файлы ecs-cli и docker-compose для развертывания, и все работает нормально.

Несмотря на то, что все работает правильно, контейнер traefik постоянно регистрирует ошибки о невозможности подключения к docker.sock.

time="2019-09-12T21:54:13Z" level=error msg="Failed to retrieve information of the docker client and server host: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"
time="2019-09-12T21:54:13Z" level=error msg="Provider connection error Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?, retrying in 3.829225701s"

Я прекрасно понимаю, что traefik не сможет подключиться к docker.sock в этой среде, и поскольку я настроил ECS Provider, по-видимому, правильно, ему не нужно подключаться к сокету. Значит, все еще пытается.


traefik.toml

[entryPoints]
  ...

[ecs]
clusters = ["cluster-name"]
watch = true
refreshSeconds = 15
exposedByDefault = true
region = "eu-west-1"
domain = "ecs.domain"

[retry]

docker-comopse.yml

version: "3"
services:
  proxy:
    image: ${custom-image-with-toml-baked-in}
    command: --api --docker
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.frontend.rule=Host:traefik.ecs.domain"
      - "traefik.port=8080"
    logging:
      driver: awslogs
      ...

...

Итак, как я уже упоминал, похоже, что Traefik все еще хочет подключиться к docker.sock, а я не могу найти способ указать Traefik полагаться только на ECS.


person toastedtoast    schedule 13.09.2019    source источник


Ответы (1)


Итак, просматривая свой вопрос, я внимательно изучил строку command: --api --docker в моем файле docker-compose, и оказалось, что ошибка возникает из-за опции --docker ...

Эта строка унаследована от более ранних простых развертываний докеров, поэтому удаление этой опции сработало для меня.

docker-compose.yml

version: "3"
services:
  proxy:
    image: ${custom-image-with-toml-baked-in}
    command: --api
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.frontend.rule=Host:traefik.ecs.domain"
      - "traefik.port=8080"
    logging:
      driver: awslogs
      ...

...

Так что на случай, если кто-то столкнется с той же глупой проблемой, я надеюсь, что этот монолог поможет.

person toastedtoast    schedule 13.09.2019