Dies ist eine alte Version des Dokuments!
Traefik muss auf einem Manager Node installiert werden.
apt install apache2-utils (Für htpasswd)
export EMAIL=meinname@beispiel.de export DOMAIN=traefik.net17.porz
htpasswd -nb admin secure_password
Dann noch ein eigenes Netzwerk für Trafik in Docker anlegen über das nachher der Kontakt der Container zu traefik stattfindet und wodurch traefik auch automatische neue Container erkennen kann und diese zugreifbar macht.
docker network create --driver=overlay traefik-public
Dann noch die beiden Manager mit Labels versehen so das traefik nur darauf startet. Der Grund ist die schon oft erwähnte Cluster-IP Adresse (172.17.200.24 und .25)da diese nur auf diesen beiden Nodes verfuegbar ist.
Dazu mit
docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION h1ueklwju2myqotsbpkqhuknl * dockerman01 Ready Active Leader 20.10.21 n4u23ksil3wqdp4ee4iz5n43j dockerman02 Ready Active Reachable 20.10.21 tjghr95cvd5bf8cvz5qcxn2du dockerwrk02 Ready Active 20.10.21 jfctstt12sri9q0fr4snnxaa3 dockerwrk04 Ready Active 20.10.21
die IDs der beiden Manager rauskriegen und dann mit den Befehlen
docker node update --label-add traefik-node h1ueklwju2myqotsbpkqhuknl docker node update --label-add traefik-node n4u23ksil3wqdp4ee4iz5n43j
die Labels vergeben.
docker-compose.yml
version: "3"
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- traefik_proxy
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /docker/data/volumes/traefik/data/traefik.yml:/traefik.yml:ro
- /docker/data/volumes/traefik/data/acme.json:/acme.json
- /docker/data/volumes/traefik/data/dynamic_conf.yml:/dynamic_conf.yml
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.n17.de`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=USER:PASSWORD"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.n17.de`)"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
- "providers.file.filename=/dynamic_conf.yml"
- "traefik.http.routers.traefik-secure.middlewares=secHeaders@file,traefik-auth"
networks:
traefik_proxy:
external: true
traefik.yml
api:
dashboard: true
insecure: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
file:
filename: "./dynamic_conf.yml"
certificatesResolvers:
http:
acme:
email: email@example.com #### hier eure E-Mail angeben ####
storage: acme.json
httpChallenge:
entryPoint: http