八月 24, 2018 | 伺服器和Devops
【Traefik教學】比Nginx更方便的反向代理工具Traefik
Traefik是什麼
Traefik是一套用Go語言所開發的應用程式,2015年9月推出了v1.0,至今已經到了v1.6版本了。其主要功能是反向代理與負載平衡等功能。Traeifk還可以跟現行幾乎所有的基礎架構整合。例如:Docker、Swarm Mode、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS)
你為何需要用Traefik?
一般來說我們都是用Subdomain的方式再搭配Nginx的方式來進行反向代理的工作,極複雜又麻煩,Traefik可以一次幫你解決,下圖是官方提供的圖片,一張簡易的圖片,即可說明一切
Traefik在安裝後,他可以幫你將你全數的微服務進行串連,可以通過簡單的label設定,即可完成。其還有WEB UI的介面,讓你更容易觀察與了解整體配置
Traefik的功能眾多,詳細的資訊可以到其官方網站來觀看。其中讓我眼睛一亮的則是支援Let‘s Encrypt,而且設定超容易。
Traefik docker安裝教學
這裡使用docker的安裝方式進行安裝,若想要了解其他方式,可以考慮官方網站的文件囉
- 建立一個Network
$ docker create network ReverseProxy
- 建立一個Traefik資料夾, 並且建立 docker-compose.yml
$ mkdir traefik
$ cd traefik
$ touch docker-compose.yml
docker-compose.yml 檔案內容 通過docker-compose可以一次設定好traefik的服務,並且此種設定在一個資料夾裡面的方式,將會比較適合打包,搬移整體環境。
這裡有特別將acme.json還有traefik.toml兩個檔案同步到容器內供traefik使用。
version: "3.5"
services:
traefik:
image: traefik:1.6
command: --api --docker -c /etc/traefik.toml
restart: always
networks:
- ReverseProxy
container_name: traefik-reverse-proxy
labels:
traefik.enable: "true"
traefik.frontend.rule: "Host:your.traefik.domain"
traefik.frontend.headers.STSSeconds: 315360000
traefik.port: 8080
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./conf/acme.json:/acme.json
- ./conf/traefik.toml:/etc/traefik.toml
networks:
ReverseProxy:
- 建立traefik與acme.json設定檔案 照目前的狀況,你應該還是在traefik這個資料夾內的,建立conf資料夾,然後分別建立檔案
$ mkdir conf
$ cd conf
$ touch acme.json
$ touch traefik.toml
- 調整檔案權限
$ chmod 400 acme.json
- 填寫traefik設定檔案內容
* 編輯traefik.toml
$ nano traefik.toml
- traefik.toml 內容
debug = false
logLevel = "ERROR"
defaultEntryPoints = ["https","http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
照上述這樣寫法,即可很方便的自動跟letsEncrypt要HTTPS資料囉。而會將存到的key寫到acme.json裡面。
- 啟動服務
$ docker-compose up -d
大功告成
Traefik教學結論
這個才初步接觸,就覺得方便的解決自己非常多的問題,是個值得投資時間的好用工具,在越來越多微服務的時代下,覺得這個更是重要且有趣。推薦推薦。