Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:docker:traefik:start

Dies ist eine alte Version des Dokuments!


Installation Traefik Loadbalancer/Proxy Container

Vorbereitung

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
projekte/docker/traefik/start.1668525000.txt.gz · Zuletzt geändert: 2022/11/15 16:10 von admin