Docker에서 시작하는 서비스에 Traefik을 리버스 프록시로 연결

7165 단어 Dockertraefik

Traefik 소개


Traefik: https://github.com/containous/traefik
Go 언어의 역방향 에이전트 겸 부하 균형기

하고 싶은 일


jenkins.shikugawa.Docker 컨테이너에서 시작하는 Jenkins 서버에 네트워크를 통해 액세스하려고 합니다.또한 WW->Traefik 간에 SSL을 통한 통신을 원합니다.

절차.


CloudFlare의 DNS 설정


Traefik에서 Let's Encerypt에서 취득한 인증서를 업데이트하고 싶지만 지원하는 공급자에 제공되지 않은 DNS 서버는 대응할 수 없기 때문에 등록기에 전송해야 하는 DNS는 사용할 수 없습니다.이 가운데 클라우드 플라어는 무료로 이용할 수 있어 편리하다.아래의 느낌에 따라 설정할 수 있습니다.

참조: https://docs.traefik.io/configuration/acme/#dnschallenge

traefik 시작


docker-compose.yml
version: '2'

services:
  traefik:
    image: traefik:alpine
    environment:
      - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
      - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
    ports:
      - 80:80
      - 8080:8080 # WebUIを有効化させる際に必要
      - 443:443
    volumes:
      - .:/etc/traefik/
traefik.toml
defaultEntryPoints = ["http", "https"]

[traefikLog]
  filePath = "/var/traefik/traefik.log"
  format = "json"

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

[acme]
email = "YOUR EMAIL"
storage = "/etc/traefik/acme.json"
entryPoint = "https"
  [acme.dnsChallenge]
    provider = "cloudflare"
    delayBeforeCheck = 0
  [[acme.domains]]
    main  =  "*.shikugawa.net"

[file]
watch = true

[backends]
  [backends.jenkins]
    [backends.jenkins.servers]
      [backends.jenkins.servers.server0]
        url = "http://jenkins:8080" 
        weight = 1

[frontends]
  [frontends.jenkins]
    backend = "jenkins"
    passHostHeader = true # これをつけないとヘッダ情報がサービス側に飛ばない

    [frontends.jenkins.routes.host]
      rule = "Host:jenkins.shikugawa.net"

[api]
  entryPoint = "traefik"
  dashboard = true # WebUIの有効化
이 정도면 됐어.
가장 적합한 곳은 백엔드다.jenkins.servers.서버 0의 URL 부분입니다.traefik-시작된 제인킨스 서비스default 네트워크에서 시작된 경우 포트는 인산염 측면에서 볼 수 있는 포트가 아니므로 컨테이너 측면에서 볼 수 있는 포트를 설정해야 합니다.Docker Engine에서 제공하는 내부 DNS는 호스트 이름이 가리키는 응용 프로그램이 시작하는 컨테이너의 IP를 주소로 변환하기 때문입니다.

Jenkins 시작


공식 이미지를 발표하다.
https://hub.docker.com/r/jenkins/jenkins/
docker-compose.yml
version: '3'

services:
  jenkins:
    image: jenkins:latest
    networks:
      - traefik_default
    ports:
      - "8090:8080"
      - "50000:50000" # Slave用
    volumes:
      - './data:/var/jenkins_home'

networks:
  traefik_default:
    external: true

끝맺다


Consuul을 사용하는 것이 좋습니다.
https://docs.traefik.io/configuration/backends/consul/
https://qiita.com/woremacx/items/b6215cd6cf919fdb3824

좋은 웹페이지 즐겨찾기