• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
잡담

NGINX에서 Traefik으로 변경했습니다. with Docker Swarm

케이퀸 케이퀸 2820

2

14

 

스크린샷 2023-06-11 시간_ 23.56.53.png.jpg

 

안녕하세요?

 

주말을 맞이하여 Docker Swarm 설정하고 NGINX에서 Traefik으로 변경을 완료했습니다.

Traefik 설정이 기존에 쓰던 NGINX하고 달라서 한참 헤맸네요. ㅠㅠ

Docker에 labels로 설정하는게 복잡해 보였는데 구글신을 통해 설정 파일을 NGINX처럼 외부파일로 뺄 수가 있다는 것을 알고 나니 Traefik 설정이 오히려 간단해서 좋았습니다.

프록시 설정도 수정만하면 재시작 없이 바로 반영되더라구요.

 

한 가지 아쉬운 점은 Docker Swarm을 돌리는 김에 매니저 노드가 뻣을 때를 대비해서 각 노드에 Traefik Docker를 설치해주려고 했는데 acme 저장 파일 공유 때문에 막혔습니다.

공식 홈페이지를 뒤져보니 Distributed Let's Encrypt 기능이 무료 버전에는 없고 Enterprise 버전에만 있네요. ㅠㅠ

스크립트로 외부 인증하면 해결될 것 같다는 글을 봤는데 Traefik의 SSL 설정이 쉽다는 장점이 사라지는 것 같아서 포기했습니다. ㅎㅎ

 

설정을 끝마치고 생각해보니 Docker Swarm으로 돌릴 서비스도 별로 없는데 괜히 설정했나 싶네요. ㅎㅎ

Docker Swarm 잘 써먹는 팁 좀 있으면 공유 부탁드립니다. ^^

신고공유스크랩
14
1등
KelvinKang 2023.06.12. 01:21
Docer Swarm을 잘 써먹으려면, 단독서버가 아닌 서버POOL을 구성하셔서 여러대의 서버를 네트워크로 묶어야 됩니다. 단독 서버에 Docer Swarm을 쓰는건 그냥 Docker 쓰는것과 똑같습니다.
profile image
케이퀸 글쓴이 2023.06.12. 08:50
KelvinKang
일단 서버 3개로 구성했는데 단독으로 돌던 Docker를 하나씩 옮겨봐야겠네요.
콜라 2023.06.12. 10:00
KelvinKang
예전에 3개의 노드로 스웜 구성했었다가, 현재는 그 때의 스웜용 독커 컴포즈를 사용하려고(다시 일반 독커 컴포즈로 바꾸는게 귀찬아서..ㅋㅋ꙼̈ㅋ̊̈ㅋ̆̈) 단일 노드에 스웜 구성 중입니다.

그냥 독커 쓰는 것과 다르기는 합니다.
일단 cpu같은 하드웨어 리소스 제한이 추가되고, 설정 변경 시 새로운 컨테이너 실행 후 서비스 가능해지면 이전 컨테이너 제거 등을 지원하죠.
베이스 이미지 업데이트도 되구요.
뭐… 독커도 워치 타워 쓰면 되기는 하지만…

대신 하드웨어 커패빌러티 같은것이 안됩니다.ㅠㅠ

전 현재는 스웜 모드에서만 되는 몇몇 기능 때문에 스웜이랑 일반 독커를 같이 운영 중입니다
와이어가드 같은건 스웜에서 안되고, 넷데이터도 일부 캐패빌러티 때문에 일부 모니터링이 안됩니다.
그 외에 위에서 설명 드린 몇몇 기능이 필요로하는 작업들은 스웜에서 구성중이구요.
profile image
케이퀸 글쓴이 2023.06.12. 12:56
콜라

아 그렇군요. Capabilities 사용하는 Docker는 조심해야겠네요.

 

원래 서버 3개에 각 Proxy를 설치해서 쓰다가 메인 서버에서만 Proxy 설정을 하고 Traefik High Availability 구현하려고 Docker Swarm으로 변경했는데 막상 Traefik 무료 버전의 acme 저장 문제로 손 놓고 있습니다. ㅎㅎ

 

제 경우는 Docker Swarm에 Traefik 설치하면서 WireGuard도 같이 설치했는데 잘 됩니다.

스크린샷 2023-06-12 시간_ 12.48.55.png.jpg

클라이언트에서도 WireGuard 서버 IP로 잘 나오구요.

콜라 2023.06.13. 08:13
케이퀸

엥.. 혹시 독커 컴포즈 파일 볼수 있나요?
전 안되더라구요.ㅠㅠ
같은 overlay 네트워크여도 컴포즈로하면 되지먼, swarm으로 하면 안되더라구요.엉엉

 

acme는 뭘로 하시나요? 어떤수단으로..

클라우드플레어 dns challege는 무료도 잘 됩니다

profile image
케이퀸 글쓴이 2023.06.13. 11:45
콜라

사용 중인 docker-compose 파일입니다.

services:
  wireguard:
    image: linuxserver/wireguard:latest
    volumes:
      - /docker/wireguard/config:/config
      - /lib/modules:/lib/modules
    networks:
      - wireguard_network
    ports:
      - "51820:51820/udp"
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    environment:
      - PUID=1001
      - PGID=1001
      - TZ=Asis/Seoul
      - SERVERPORT=51820 #optional
      - PEERS=10 #optional
      - PEERDNS=auto #optional
    deploy:
      placement:
        constraints:
          - node.labels.vpn_server == true
      restart_policy:
        condition: on-failure

networks:
  wireguard_network:
    external: true

네트워크는 미리 overlay로 만들었고, 설치할 node에 vpn_server lable 설정해뒀습니다.

 

acme는 그냥 Traefik에서 제공하는 let's encrypt 사용합니다.

CloudFlare 방식도 찾아봤는데 acme 파일을 따로 저장하는 건 똑같아서 대체하나 마나더라구요. ㅠㅠ

콜라 2023.06.13. 12:21
케이퀸

acme 저장이 안되시나요?

오류가 뜨나요?


독커는 별로 다른게 없어보이는데..ㅠㅠ 전 왜 안되까요.ㅠㅠ

profile image
케이퀸 글쓴이 2023.06.13. 12:25
콜라

acme 저장은 되는데 Traefik을 각 node에 설치하면 acme 파일 공유가 안되서 워커 node에서 ssl 접속이 안 됩니다. ;;

혹시 WireGuard 설치한 node에 방화벽 문제가 아닐까요?

콜라 2023.06.13. 13:21
케이퀸
방화벽 문제라기엔.. docker compose로 하면 질뎁니다.
심지어 컴포즈에 사용하는 네트워크와 스웜 오버레이 네트워크도 trusted 존에 넣어줘도 안되요.ㅠㅠ

스웜으로 레플리카 해도 접속이 안되나요?
좀 있다가 저도 해봐야겠네요..
profile image
케이퀸 글쓴이 2023.06.13. 15:05
콜라

거참! 희안하네요. ;;

혹시 Wg-easy 쓰는 분도 계시던데 저랑 다른 WireGuard 이미지를 쓰시거나 Docker 버전 차이일까요?

Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:52:41 2023
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:52:41 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Traefik에서 각 node에 global mode로 올린 후 매니저 노드의 Traefik 도커를 죽이면 acme 파일 때문에 ssl 접속이 안 되더라구요.

replicaed mode도 똑같구요.

profile image
NavyStack 2023.11.23. 10:35
케이퀸
너무 늦었을 수 있지만 Traefik 인증서 저장되는 json 파일 권한 확인하셨나요? 600으로 해주셔야 발급됩니다.

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

취소 댓글 등록

cmt alert

신고

"님의 댓글"

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

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
잡담 proxmox로 갈아탔습니다 7 기현 1일 전07:34 370 +2
잡담 Immich가 FUTO에 합류했습니다.(Immich 핵심 팀은 정규직으로 근무합니다.) 4 달소 2일 전11:38 283 +1
정보 오픈아이콘 제공 사이트(https://cdn.jsdelivr.net) 오류 발생 => 복구됨 2 지딱코 3일 전14:31 225 +1
405 잡담
image
eyeball 22.12.18.18:58 4650 +4
404 잡담
image
달소 23.07.23.16:08 2892 +2
잡담
image
케이퀸 23.06.11.23:59 2820 +2
402 잡담
image
달소 21.03.26.17:27 2509 +4
401 잡담
image
bass9030 23.08.16.18:58 1873 +1
400 잡담
normal
luna1474 22.11.14.19:14 1872 0
399 잡담
normal
순대볶음 23.03.17.00:08 1843 0
398 잡담
image
달소 23.09.03.17:21 1527 0
397 잡담
image
굇수 23.01.10.09:55 1525 +1
396 잡담
normal
달소 22.12.03.21:29 1502 0
395 잡담
image
굇수 23.03.08.16:36 1374 0
394 잡담
image
th20ry 22.10.19.16:54 1350 0
393 잡담
image
하루마루2 22.10.28.08:29 1349 +1
392 잡담
normal
행복하게살자 22.10.09.07:06 1328 +2
391 잡담
normal
Nicona 22.12.28.23:22 1299 +2
390 잡담
image
bass9030 23.02.07.21:37 1223 +1
389 잡담
image
기현 23.01.04.12:53 1221 +5
388 잡담
normal
ExpBox 22.03.17.20:50 1170 +2
387 잡담
normal
quad 22.09.16.08:22 1160 +2
386 잡담
image
달소 22.12.17.16:10 1157 +3