Docker Swarm cluster 를 구축하면서 Traefik 설치하는 과정에 만난 에러를 정리하였다.
마이크로서비스 및 컨테이너화 된 애플리케이션의 트래픽을 처리하도록 설계되어 orchestrator에 nginx 보다 적합하다 생각하여 Traefik을 사용해보기로 하였다.
Traefik 은 오픈소스프로젝트이며 내장된 HTTPS 지원을 제공하고 Let's Encrypt 와의 통합을 통해 SSL/TLS 인증서를 자동으로 생성해주는 장점을 가지고 있다.
Traefik 설치는 공식문서를 참고하면서 진행하였다. 기본 설치에는 문제가 없었으나 서브 도메인으로 Traefik Dashboard를 띄우는 방식이 아닌 경로 기반 라우팅로 Dashboard를 띄우고자 하였다.
1. 서브 도메인 방식
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`sub.mydomain`)
...
2. 경로 기반 라우팅 (Path-based Routing)
labels:
- "traefik.http.routers.dashboard.rule=Host(`traefik.example.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=auth"
# Passwords must be encoded using MD5, SHA1, or BCrypt https://hostingcanada.org/htpasswd-generator/
- "traefik.http.middlewares.auth.basicauth.users=
경로 기반 라우팅을 진행하면서 페이지에서는 404 Page error 를 띄웠다. 아래의 명령어를 통해 확인을 해 보았다.
docker service logs [service-id]
포트 정의가 누락된 것과 관련이 있었다. 오류 로그에 따르면 Traefik이 어떤 포트를 사용할지 모르기 때문에 이 서비스로 트래픽을 라우팅할 수 없었다.
아래와 같이 포트를 지정해주었다.
- "traefik.http.services.traefik-service.loadbalancer.server.port="
참고
https://doc.traefik.io/traefik/operations/dashboard/
https://doc.traefik.io/traefik/routing/providers/docker/
'Docker' 카테고리의 다른 글
[쿠버네티스] 환경 설정 중 마주친 문제 (0) | 2024.02.25 |
---|---|
[docker] mariadb yml (0) | 2023.11.24 |
[네트워크] 웹 서버와 리버스 프록시 (0) | 2023.11.22 |
[Docker] Traefik (0) | 2023.07.11 |
[Docker] Deep Dive - swarm cluster (0) | 2023.06.26 |