Traefik - 2. 설정

zuckerfrei·2023년 4월 17일
0

Traefik

목록 보기
2/2

요약

Traefik을 사용하면서 적용한 설정 정리
static + dynamic config, dashboard basic auth, 80 to 443 redirect


1. static config

# traefik.yml - static config
global:
  checkNewVersion: true
  sendAnonymousUsage: true

entryPoints:
  web:
    address: ":8090"

  dashboard:
    address: ":8080"

api:
  dashboard: true

providers:
  docker:
    watch: true
    network: "proxy"
    endpoint: "unix:///var/run/docker.sock"
  file:
    filename: /dynamic.yml
  • 8080 : traefik 대시보드 접속 포트
  • 8090 : 서비스 포트
  • provider
    • docker
      traefik에게 도커로 띄운 서비스에 대한 정보를 제공하기 위함
      endpoint - traefik과 docker 통신하기 위한 경로
      watch - 도커에 새로운 서비스가 생성되었나 계속 체크하겠다는 것
    • file
      filename 경로의 파일을 읽어서 traefik의 라우팅 규칙을 설정할 수 있음
      이 파일을 수정해도 traefik 재시작하지 않아도 됨 -> 바로 반영

2. dynamic config

# dynamic.yml - dynamic config
http:
  routers:
    dashboard:
      rule: "PathPrefix(`/dashboard`) || PathPrefix(`/api`)"
      service: api@internal
      middlewares:
        - auth
        
  middlewares:
    auth:
      basicAuth:
        users:
          - "[유저]:[비밀번호 암호화]"
  • /dashboard, /api 로 들어오는 요청을 api@internal 서비스로 연결시키는데, 중간에 auth라는 미들웨어를 태운다
  • auth middleware
    • basic auth라는 아이디/패스워드 입력하는 기본적인 인증과정을 거침

2.1 basic auth

basicAuth 에는 암호화된 비밀번호를 입력해야한다.
httpd-tools를 설치한 후, htpasswd 명령어로 bcrypt 암호화한 비밀번호를 생성한다.
참고로 암호화된 비밀번호는 왠만하면 터미널창에서 그대로 복사해서 설정파일에 붙여 넣길 추천한다.
노트패드나 노션에 옮겨놓았다가 붙여넣으면 생성한 비밀번호가 잘 적용되지 않았다.

# httpd-tools 설치
sudo dnf install -y httpd-tools.x86_64

# [유저]:[비밀번호 암호화] 출력
[admin@my-server traefik]$ htpasswd -nb [유저] "[비밀번호]"

3. 80 to 443 redirect

NCP의 Load Balancer로 구현했다. 흐름은 이러하다.
HTTP 80 → HTTPS 443 → HTTP 8090 (traefik에 묶인 실제 서비스)

  1. 80포트로 들어온 요청을 동일 host의 https 443포트로 리다이렉트
  2. 443포트로 들어온 요청은 연결된 Target Group의 8090 포트로 리다이렉트

예전에 nextcloud 만들 때는 이것보다 더 복잡하게 구성했는데, 이렇게 하는 것이 더 깔끔하고 쉽다.
그때는 LB 사용법을 지금보다 더 몰랐던 것 같다.

profile
무설탕 음료를 좋아합니다

0개의 댓글