I've converted my stack to traefik v2 but I can't get a demo service to work and I can't get the traefik dashboard to load. The traefik logs are showing nothing really. Can somebody please tell me what I am doing wrong? My goal is to get the traefik dashboard to load over ssl.
image: traefik:v2.0
command:
- "--log.level=DEBUG"
- "--api=true"
- "--api.dashboard=true"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.https.address=:443"
- "--providers.docker.swarmMode=true"
- "--metrics.prometheus=true"
- "--accesslog=true"
- "--ping=true"
networks:
- swarm
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
...
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=swarm"
- "traefik.http.routers.traefik.entrypoints=https"
- "traefik.http.routers.traefik.rule=Host(`traefik.mydomain.local`)"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "traefik.http.routers.traefik.service=api@internal"
traefik.yml
providers:
file:
directory: /etc/traefik
filename: dynamic_conf.yml
watch: true
dynamic_conf.yml
tls:
certificates:
- certFile: /etc/traefik/certs/wildcard-cert.pem
keyFile: /etc/traefik/certs/wildcard-key.pem
Ch1ch1
September 25, 2019, 7:32am
2
Hello
- "--api.insecure=true"
means that you don't need to expose your dashborad trought traefik
https://docs.traefik.io/v2.0/operations/api/#insecure
Try removing all the labels and keep --api.insecure
or
Remove --api.insecure and keep the labels
1 Like
Thanks but that didn't work. I could REALLY use a basic working example of a Swarm config. Here's what I have, I could really use some assistance - i've been fighting this for days.
compose:
services:
traefik:
image: traefik:v2.0
restart: unless-stopped
command: --providers.docker \
--providers.docker.swarmMode \
--providers.docker.exposedByDefault=false \
--providers.docker.domain=${URLSLUG:-dev}.domain.local \
--providers.docker.watch \
--entryPoints.web.address=:80
--entryPoints.websecure.address=:443
--log.level=DEBUG
networks:
- swarm
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
configs:
- source: traefik_config
target: /etc/traefik/traefik.yml
- source: dynamic_config
target: /etc/traefik/dynamic_conf.yml
- source: cert_config
target: /etc/traefik/certs/wildcard-cert.pem
- source: key_config
target: /etc/traefik/certs/wildcard-key.pem
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-redirect.rule=Host(`traefik.${URLSLUG:-dev}.domain.local`)"
- "traefik.http.routers.traefik-redirect.entrypoints=web"
- "traefik.http.routers.traefik-redirect.middlewares=https-redirect"
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.rule=Host(`traefik.${URLSLUG:-dev}.domain.local`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "traefik.docker.network=swarm"
placement:
constraints: [node.role==manager]
traefik.yml
providers:
file:
directory: /etc/traefik
filename: dynamic_conf.yml
watch: true
dynamic_conf.yml
tls:
certificates:
- certFile: /etc/traefik/certs/wildcard-cert.pem
keyFile: /etc/traefik/certs/wildcard-key.pem
and the logs show me nothing. just one entry:
time="2019-09-27T17:29:42Z" level=info msg="Configuration loaded from file: /etc/traefik/traefik.yml"
what i'm seeing is that I cannot connect with https at all, and http throws a 404 on the dashboard url.
ldez
September 27, 2019, 6:05pm
5
command: --providers.docker \
--providers.docker.swarmMode \
--providers.docker.exposedByDefault=false \
--providers.docker.domain=${URLSLUG:-dev}.domain.local \
--providers.docker.watch \
--entryPoints.web.address=:80 \
--entryPoints.websecure.address=:443 \
--log.level=DEBUG \
--providers.file.filename=dynamic_conf.yml
and remove target: /etc/traefik/traefik.yml
There are three different, mutually exclusive (e.g. you can use only one at the same time), ways to define static configuration options in Traefik:
Thanks, I have made this change and I understand the configs now - I thought they were mutually exclusive on a property level. Ok, so with that change in place the service logs this:
time="2019-09-27T18:27:38Z" level=info msg="Configuration loaded from flags."
the traefik config now looks like:
command: --providers.docker \
--providers.docker.swarmMode \
--providers.docker.exposedByDefault=false \
--providers.docker.domain=${URLSLUG:-dev}.domain.local \
--providers.docker.watch \
--entryPoints.web.address=:80 \
--entryPoints.websecure.address=:443 \
--log.level=DEBUG \
--providers.file.filename=dynamic_conf.yml
and I removed the static yml from the compose. Still nothing though. How do I get it to log more?
zespri
September 28, 2019, 12:43am
7
-log.level=DEBUG
spits out more on load. If all you seeing is that line above you quoted, you are running with the defaul log level and not DEBUG
. It suggests that you applied your configuration in one place but looking for logs in another, or that you applied the configuration incorrectly.
I got it working. All I did was convert the flags to a yml file. Thanks for the assistance.