ติดตั้ง Traefik Reverse Proxy ผ่าน Docker #1

Traefik เป็น Proxy Load Balancer ที่ทำงานร่วมกับ ใช้ Kubernetes และ Docker ได้ดีและมีความเร็วในการทำงานค่อนข้างดีเมื่อเปรียบกับ Apahce vs Nginx vs Haproxy ลองเข้าไปดู benchmark ได้ที่ https://github.com/gaplo917/load-balancer-benchmark ส่วนตัวรู้สึก config ง่ายและมี Dashboard ให้เราเห็นค่า Config ที่ทำไปและ Status ทำให้จัดการได้สะดวก เรามาลองติดตั้งกัน

! — Traefik ตอนนี้ อยู่ที่เวอร์ชั่น v2.xx (23/10/2021) ถ้าไปค้นหาข้อมูลจะต้องดูที่เวอร์ชั่นก่อนนำมาใช้เนื่องจาก config ต่างกันกับเวอร์ชั่น 1

! — Traefik สามารถ config ได้ สามแบบคือเป็น
1. YML/YAML
2. TOML ควรเลือกใช้หนึ่ง format ระหว่าง yml กับ toml กันงงนะครับ
3. CLI (Command Line Interface) เป็น config เข้าไปพร้อมกับไฟล์ของ docker หรือ Kubernetes

มาเตรียมไฟล์ที่เกี่ยวข้องกัน
- acme.json ใช้เก็บ SSL คีย์ของ letsencrypt ต้อง Set permission เป็น 600 เสมอ เริ่มต้นเป็นไฟล์ว่างๆ ตอนรัน Traefik จะทำการเซตให้

chmod 600 acme.json

- docker-compose.yml ติดตั้ง Traefik image และ config ค่า
- traefik.toml ไว้ Config ค่าของ Traefik
- traefik_dynamic.toml ไว้ Config ที่เป็น Dynamic configuration

เมื่อเตรียมไฟล์เสร็จเข้าสู่การเริ่มพิธีกรรมกันด้วยคำสั่ง

docker-compose pull && docker-compose up -d --force-recreate

ถ้าไม่ติดอะไรจะได้สามารถเข้าหน้า Dashboard ได้ https://dashboard-traefik.abcd.com

การ Config ผ่าน CLI 
ตัวอย่างดูได้จาก whoami-example.yml

ในความเป็นจริงของการทำงานเราคงไม่ได้สร้างทุก Domain/Sub-domain ให้กับ ทุก Services ส่วนใหญ่ก็ใช้เป็น /auth แทนซึ่งสามารถได้โดยการกำหนดตาม Format

# กำหนดให้ใช้ backslash /auth
- traefik.http.routers.auth-api.rule=(Host(`dev-api.abcd.com`) && PathPrefix(`/auth{regex:$$|/.*}`))
# แจ้งให้ treafik รู้ว่าจะใช้ backslash โดยผ่าน middlewares stripprefix.prefixes
- traefik.http.middlewares.auth-api.stripprefix.prefixes=/auth

มาถึงตรงนี้ก็เป็นอันจบพิธี ถ้าใครติดอะไรสามารถ comment มาคุยกันได้ traefik ยังมีความสามาถอีกหลายอย่างจะค่อยๆ มาบันทึกต่อไปครับ

Reference: https://doc.traefik.io/traefik/

--

--

ศึกษาข้อเท็จจริงและเหตุผล ก่อนจะเชื่ออะไรก็ตาม

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
A.Fu'

A.Fu'

ศึกษาข้อเท็จจริงและเหตุผล ก่อนจะเชื่ออะไรก็ตาม