• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
질문

홈에서 Traefik의 장점이 무엇일까요?

콜라 501

1

10

요즘 그 유명한(이라기엔 좀 지난?) Traefik을 설치했습니다.

라즈베리파이에 npm 던져두고 했는데 딱히 장점이 안느껴집니다.

npm은 리버스 프록시 설정 하나 바꾼다고 끊기지 않습니다.

반면 traefik은 docker-compose를 수정하다보니 컨테이너가 삭제되고 다시 실행됩니다.

당연히 연결이 끊기지요.

 

확실히 orchestration이 구성된 docker에서는 쓸모가 있어보이긴 하는데.. 

백엔드가 하나 뿐인 홈서버에서는 npm보다 나아보이는게 없어보입니다.

 

제가 traefik에 대해 모르고 있기 때문에 이런 괘씸한 발언을 할 수 있는 것 같습니다.

무지한 저에게 traefik의 장점을 설파해주실수 있으십니까?

 

신고공유스크랩
10
profile image 1등
달소 2022.06.07. 16:39

저도 Trafik을 잠시 고민했다가.. 쿠버네티스나 도커스웜이나.. 다안써서 NPM을 그대로 유지중입니다.

NPM최고...!

콜라 글쓴이 2022.06.07. 17:22
달소

일단 저도 궁금해서 설치는 해보았는데, 장점이 안보인다면 npm으로 돌아갈 계획중입니다....

돌아가기 전 마지막으로 질문을 드려보았습니다.ㅎㅎ

npm 최고..!

2등
grimoire 2022.06.08. 01:02

traefik도 yaml 설정 파일 기반으로 운용하면 컨테이너를 재시작할 필요성은 없지만 사실 이득이 있느냐 묻는다면 잘 모르겠네요.

콜라 글쓴이 2022.06.09. 07:00
grimoire

label도 yaml로 대체 가능하려나요?

제가 알기로는 시작시 실행되는 command는 가능하지만 label은 불가능한 것으로 아는데..

문제는 label을 바꿔도 docker가 삭제되고 생성된 후에 실행된다는 것입니다.ㅠㅠ

grimoire 2022.06.10. 00:14
콜라

traefik 설정을 읽어오는 방법이 여러가지가 있는데(provider라고 부름) 도커 컨테이너 혹은 도커 스웜 서비스의 label로부터 불러오는 방법(docker provider)도 있지만, 독립된 traefik 동적 설정 파일들(yaml or toml 포맷)로부터 설정을 읽어오는 방법(file provider) 또한 존재합니다. 이외에 다른 방식도 있고, 여러 방식을 섞을 수도 있어요.

다른 provider에서 정의한 서비스 및 미들웨어는 {서비스/미들웨어 이름}@{provider 이름} 식으로 지정해서 설정해줄 수 있다고 본 것 같네요.

영문이긴 하지만 공식 문서는 여기에 -> https://doc.traefik.io/traefik/providers/file/

 

아, 참고로 docker compose의 yaml 설정 파일이랑 traefik file provider의 yaml 설정 파일은 서로 별 상관 없어요. 그냥 포맷/확장자만 같은 겁니다.

profile image 3등
Intuit 2022.06.08. 09:07

설정파일은 별도로 관리하면서 돌리면 되니까 매번 다시 올려줄 필요는 없고

저도 비전문가 입장에서 조금 사용해본 소감으로는

traefik이 좀더 세밀한 설정이 가능했습니다.

 

예를 들어 특정 집단에 대해서 헤더를 일괄 변경하게 해준다거나

특정 영역에 대해서는 2차인증 하도록 돌려준다거나...

profile image
Intuit 2022.06.09. 09:08
콜라

저 세팅할때는

/트레픽/

docker-compose.yml

/data/

acme.json

config.yml

traefik.yml

 

이런식으로 나눠서 관리했구요

 

도커 컴포즈에 들어가는 라벨같은 경우는

 

 

포테이너 컴포즈 파일에 네트워크 별도로 잡아줬고, 라벨에서는 도커로 올라오는거 라우팅 잡기 위해

 

아래처럼 넣어줬습니다.

 

labels:

- "traefik.enable=true"

- "traefik.http.routers.portainer.entrypoints=http"

- "traefik.http.routers.portainer.rule=Host(`portainer.local.ㅇㅇㅇ.com`)"

- "traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https"

- "traefik.http.routers.portainer.middlewares=portainer-https-redirect"

- "traefik.http.routers.portainer-secure.entrypoints=https"

- "traefik.http.routers.portainer-secure.rule=Host(`portainer.local.ㅇㅇㅇ.com`)"

- "traefik.http.routers.portainer-secure.tls=true"

- "traefik.http.routers.portainer-secure.service=portainer"

- "traefik.http.services.portainer.loadbalancer.server.port=9000"

- "traefik.docker.network=proxy"

 

 

 

트레픽 도커 컴포즈에 라벨은

 

labels:

- "traefik.enable=true"

- "traefik.http.routers.traefik.entrypoints=http"

- "traefik.http.routers.traefik.rule=Host(`traefik-dashboard.local.ㅇㅇㅇ.com`)"

- "traefik.http.middlewares.traefik-auth.basicauth.users=USER:BASIC_AUTH_PASSWORD"

- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"

- "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"

- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"

- "traefik.http.routers.traefik-secure.entrypoints=https"

- "traefik.http.routers.traefik-secure.rule=Host(`traefik-dashboard.local`)"

- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"

- "traefik.http.routers.traefik-secure.tls=true"

- "traefik.http.routers.traefik-secure.tls.certresolver=cloudflare"

- "traefik.http.routers.traefik-secure.tls.domains[0].main=local.ㅇㅇㅇ.com"

- "traefik.http.routers.traefik-secure.tls.domains[0].sans=*.local.ㅇㅇㅇ.com"

- "traefik.http.routers.traefik-secure.service=api@internal"

 

이렇게 넣었구요

 

트레픽 대시보드 페이지 라우팅 룰하고

 

dns인증으로 인증서 받는 부분, 암호 입력 관련 세팅정도만 잡아주고 나머지는 다 config.yml에서 설정해 주는데

 

routers에서 프록시 걸어주는 조건 (어떤 도메인으로 들어올때 프록시 할 것인지) 지정해주고

 

services에서는 어디로 프록싱할 것인지 (로컬 ip 주소와 포트 등)

 

middlewares에서는 헤더에 특정 값 넣어주거나, 화이트리스트 잡아주거나 하는 등

 

리버스 프록시 관련된 옵션 모두 다 주고 저장해서 실시간 반영되도록 해 두었습니다.

 

http:

routers:

proxmox:

entryPoints:

- "https"

rule: "Host(`proxmox.local.ㅇㅇㅇ.com`)"

middlewares:

- default-headers

- https-redirectscheme

tls: {}

service: proxmox

pihole:

entryPoints:

- "https"

rule: "Host(`pihole.local.ㅇㅇㅇ.com`)"

middlewares:

- default-headers

- addprefix-pihole

- https-redirectscheme

tls: {}

service: pihole

 

#endregion

#region services

services:

proxmox:

loadBalancer:

servers:

- url: "https://192.168.0.100:8006"

passHostHeader: true

pihole:

loadBalancer:

servers:

- url: "http://192.168.0.101:80"

passHostHeader: true

 

#endregion

middlewares:

addprefix-pihole:

addPrefix:

prefix: "/admin"

https-redirectscheme:

redirectScheme:

scheme: https

permanent: true

 

default-headers:

headers:

frameDeny: true

sslRedirect: true

browserXssFilter: true

contentTypeNosniff: true

forceSTSHeader: true

stsIncludeSubdomains: true

stsPreload: true

stsSeconds: 15552000

customFrameOptionsValue: SAMEORIGIN

customRequestHeaders:

X-Forwarded-Proto: https

 

default-whitelist:

ipWhiteList:

sourceRange:

- "10.0.0.0/8"

- "192.168.0.0/16"

- "172.16.0.0/12"

 

secured:

chain:

middlewares:

- default-whitelist

- default-headers

 

profile image
Intuit 2022.06.09. 09:09
콜라

결론적으로는 도커 라벨에서는

트레픽에서는 트레픽 대시보드 관련 라벨, 인증서 acme 챌린지 관련 라벨만 넣어두고

리버스 프록시 관련 세팅값은 모두 config.yml로 빼는 방법입니다.

 

저 설정할때는 유튜버 중에서 Techno Tim 영상 참조했었구요

https://docs.technotim.live/posts/traefik-portainer-ssl/

 

여기 가이드 있으니 한번 확인해보세요-

 

콜라 글쓴이 2022.06.09. 09:35
Intuit

리버스 프록시 관련을 yml로 빼낼수가 있군요..

오오..

역시 제가 잘못 알고 있던게 맞나보네요.

감사합니다.

댓글 참조해서 조금 있다가 시도해보겠습니다!!

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
질문 proxmox ssd 인식이 갑자기 안됩니다 고장인걸까요? 3 kmw_ 23시간 전09:37 115 +1
질문 ZFS 풀에서 계속 에러가 뜹니다 3 bass9030 1일 전00:43 76 +1
잡담 백업 주기와 방법에 대한 고민 12 칼룬 1일 전18:12 211 +1
3845 질문
normal
감자칩 14시간 전18:55 75 0
3844 질문
normal
숲형 21시간 전11:21 191 0
3843 질문
image
kmw_ 23시간 전09:37 115 +1
3842 질문
normal
bass9030 1일 전00:43 76 +1
3841 잡담
normal
칼룬 1일 전18:12 211 +1
3840 질문
normal
늘맑음 1일 전15:10 178 +1
3839 질문
image
게르노 1일 전12:26 66 0
3838 잡담
normal
bong90a 1일 전10:50 344 0
3837 후기
image
추주비 1일 전10:33 255 +1
3836 질문
normal
angrynerd 2일 전14:11 406 0
3835 오픈소스
image
달소 4일 전23:00 370 0
3834 후기
normal
N4100 4일 전18:56 422 +4
3833 가이드
file
펜타네스트 4일 전18:39 288 +1
3832 질문
image
똥쓰똥쓰 4일 전17:02 270 0
3831 후기
image
동도리군 4일 전10:27 311 0
3830 질문
image
칼룬 5일 전11:56 77 0
3829 질문
image
초보나스 5일 전11:13 324 0
3828 질문
image
kmw_ 6일 전22:29 209 0
3827 후기
image
달소 6일 전21:35 288 +1
3826 질문
normal
ljr10 6일 전21:33 178 0