Traefik 2.0: Как настроить `traefik.frontend.rule = Host: example.com`? - PullRequest
0 голосов
/ 29 марта 2019

Я только что попытался обновить существующую довольно простую настройку Traefik до 2.0.

Я использую Docker в качестве провайдера.

Я запускаю контейнеры с docker-compose.Это моя конфигурация docker-compose:

version: "3.5"

services:
  traefik:
    image: traefik:v2.0-alpine
    read_only: yes
    ports:
      - 80:80
      - 443:443
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
      - type: bind
        source: ./traefik.toml
        target: /traefik.toml
      - type: bind
        source: ./acme.json
        target: /acme.json
    networks:
      - traefik
  example:
    image: example.com/example/example
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:example.com"
      - "traefik.docker.network=traefik"
    networks:
      - traefik

Это моя traefik.toml:

defaultEntryPoints = ["http", "https"]

[Global]
sendAnonymousUsage = true

[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

[acme]
email = "ssl@example.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
onDemand = false
acmeLogging = true
[acme.tlsChallenge]

[docker]
exposedByDefault = false

Эта установка прекрасно работает с Traefik 1.7.

С Traefik 2.0Я наблюдаю две проблемы, просматривая журнал ACME:

Unable to obtain ACME certificate for domains traefik-example-deployment
Unable to obtain ACME certificate for domains example-example-deployment
  • Traefik, по-видимому, выставляет оба контейнера.Он должен отображать только пример контейнера.
  • Traefik игнорирует метку traefik.frontend.rule=Host:example.com.

Я подозреваю, что это может быть связано с изменениями формата конфигурации в Traefik 2.0.Однако, хотя я просмотрел документацию 2.0, я не смог понять, как выглядит правильная конфигурация.

1 Ответ

0 голосов
/ 29 марта 2019

Маршрутизаторы¶

Чтобы обновить конфигурацию Маршрутизатора, автоматически присоединенного к контейнеру, добавьте метки, начинающиеся с traefik.routers.{name-of-your-choice}., а затем параметр, который вы хотите изменить.Например, чтобы изменить правило, вы можете добавить метку traefik.http.routers.my-container.rule=Host(my-domain).

Каждый параметр маршрутизатора может быть обновлен таким образом.Как указано в документе - https://docs.traefik.io/v2.0/providers/docker/

изменить labels: на

services:
  my-container:
    # ...
    labels:
      - traefik.http.routers.my-container.rule=Host(`my-domain`)

Чтобы запретить Traefik открывать контейнер - добавьте - traefik.enable=false

As traefik Выставлять контейнеры по умолчанию через Traefik.Если установлено значение false, контейнеры, не имеющие метки traefik.enable=true, будут игнорироваться в полученной конфигурации маршрутизации.

exposedByDefault (Optional, Default=true)¶
...