Как установить пароль для панели инструментов Traefik с аргументом CLI? - PullRequest
0 голосов
/ 11 июня 2018

Руководство по здесь для этого, но оно очень трудное для TOML, мне нужен аргумент CLI, так как я нахожусь в docker-swarm с настройкой Consul и очень доступен

   consul:
     image: consul
     command: agent -server -bootstrap-expect=1
     volumes:
       - consul-data:/consul/data
     environment:
       - CONSUL_LOCAL_CONFIG={"datacenter":"ams3","server":true}
       - CONSUL_BIND_INTERFACE=eth0
       - CONSUL_CLIENT_INTERFACE=eth0
     deploy:
      replicas: 1
      placement:
       constraints:
         - node.role == manager
      restart_policy:
        condition: on-failure
     networks:
       - traefik

proxy_init:
  image: traefik:1.6.3-alpine
  command: >
    storeconfig
    --api
    --entrypoints=Name:http Address::80 Redirect.EntryPoint:https
    --entrypoints=Name:api Address::8080 Auth.Basic.Users:test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/ Auth.HeaderField:X-WebAuth-User
    --entrypoints=Name:https Address::443 TLS
    --defaultentrypoints=http,https
    --acme
    --acme.storage="traefik/acme/account"
    --acme.entryPoint=https
    --acme.httpChallenge.entryPoint=http
    --acme.onHostRule=true
    --acme.acmelogging=true
    --acme.onDemand=false
    --acme.caServer="https://acme-staging-v02.api.letsencrypt.org/directory"
    --acme.email="whatever@gmail.com"
    --docker
    --docker.swarmMode
    --docker.domain=swarm.xxx.io
    --docker.endpoint=unix://var/run/docker.sock
    --docker.watch
    --consul
    --consul.watch
    --consul.endpoint=consul:8500
    --consul.prefix=traefik
    --logLevel=DEBUG
    --accesslogsfile=/dev/stdout
  networks:
    - traefik
  deploy:
    placement:
      constraints:
        - node.role == manager
    restart_policy:
      condition: on-failure
  depends_on:
    - consul

proxy:
  image: traefik:1.6.3-alpine
  depends_on:
    - traefik_init
    - consul
  command: >
    --consul
    --consul.endpoint=consul:8500
    --consul.prefix=traefik
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
  networks:
    - webgateway
    - traefik
  ports:
    - 80:80
    - 443:443
    - 8080:8080
  deploy:
    mode: replicated
    replicas: 2
    restart_policy:
      condition: on-failure
    placement:
      constraints:
        - node.role == manager
    update_config:
      parallelism: 1
      delay: 10s
  volumes:
    - "/var/run/docker.sock:/var/run/docker.sock

Ответы [ 2 ]

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

Это конфигурация, которую я использую.У меня есть две разные конечные точки для ping (8082) и API/Dashboard (8081 с базовой аутентификацией):

version: "3.4"
services:
  traefik_init:
    image: traefik:1.7.9
    command:
      - "storeconfig"
      - "--api"
      - "--api.entrypoint=foo"
      - "--ping"
      - "--ping.entrypoint=bar"
      - "--accessLog"
      - "--logLevel=INFO"
      - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
      - "--entrypoints=Name:https Address::443 TLS"
      - "--entrypoints=Name:foo Address::8081 Auth.Basic.Users:admin:$$2a$$10$$i9SzMNSHJlab7zKH28z17uicrnXbHfIicWJVPanNBxf6aiNyoMare"
      - "--entrypoints=Name:bar Address::8082"
      - "--defaultentrypoints=http,https"

Предупреждение: символ $ должен быть экранирован с другим $ в YAML

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

Вы также можете установить метки для контейнера traefik.Traefik может управлять собственным контейнером, поэтому вы можете установить базовую аутентификацию http через label, как и в любом другом контейнере.Единственная проблема, с которой я столкнулся, заключается в том, что DNS-запрос от клиента ACME дает сбой, но он работает с самозаверяющими сертификатами.

 deploy:
        labels:
            - "traefik.docker.network=infra_traefik"
            - "traefik.port=8080"
            - "traefik.tags=monitoring"
            - "traefik.backend.loadbalancer.stickiness=true"
            - "traefik.frontend.passHostHeader=true"
            - "traefik.frontend.rule=Host:proxy01.swarm.lympo.io,proxy.swarm.lympo.io"
            - "traefik.frontend.auth.basic=admin:$$apr1$$Xv0Slw4m$$MqFgCq4Do83fcKIsPTDGu/"
        restart_policy:
          condition: on-failure
        placement:
          constraints:
            - node.role == manager
...