Traefik是一種用於微服務的現代HTTP反向代理和負載均衡器。 Traefik使所有微服務部署變得簡單,與現有的基礎架構組件集成,如Docker,Swarm Mode,Kubernetes,Amazon ECS,Rancher,Etcd,Consul等。
Traefik充當所有微服務應用程序的路由器,將所有客戶端請求路由到正確的微服務目的地。
在本教程中,我將逐步向您展示如何在Ubuntu 18.04 LTS(Bionic Beaver)上安裝和配置Traefik現代反向代理作為Docker容器。
條件:
- Ubuntu的18.04
- 根特權
我們將要做什麼?
- 在Ubuntu 18.04上安裝Docker
- 安裝Docker Compose
- 創建自定義Docker網絡
- 安裝和配置Traefik
- 測試
步驟1 - 在Ubuntu 18.04上安裝Docker
對於本指南,我們將使用可從官方docker存儲庫安裝的最新docker版本。
使用以下命令添加docker密鑰和存儲庫。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key添加–
sudo的附加APT-資源庫
“ deb [arch = amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
穩定的”
“ add-apt-repository”命令將自動更新所有存儲庫。
現在安裝最新的docker-ce。
sudo apt安裝docker-ce
安裝完成後,啟動docker服務並使其在系統引導時每次啟動。
systemctl啟動泊塢窗
systemctl啟用docker
docker社區版已安裝在Ubuntu 18.04系統上,檢查已安裝的docker版本。
碼頭版本
附加:為非root用戶運行Docker
Docker容器可以在非root用戶下運行。 我們只需要將用戶添加到docker組。
添加“ mohammad”用戶。
useradd -m -s / bin / bash mohammad
現在將“ mohammad”用戶添加到docker組,然後重新啟動docker服務。
usermod -a -G docker mohammad
systemctl重啟docker
通過運行docker hello-world進行測試。
docker run -it hello-world
以下是結果。
步驟2 –安裝Docker Compose
Docker-Compose是一個命令行工具,用於定義和管理多容器docker應用程序。
Docker Compose是一個python腳本,它可以使用python pip命令安裝,也可以通過Ubuntu存儲庫中的apt命令輕鬆安裝。 使用compose,我們可以使用單個命令運行多個Docker容器。
使用下面的apt命令從存儲庫安裝docker compose。
sudo apt安裝docker-compose
安裝完成後,請檢查docker compose版本。
docker-compose版本
docker compose 1.17已安裝在Ubuntu 18.04上。
步驟3 –創建自定義Docker網絡
在本教程中,traefik容器將在docker自定義網絡上運行。 所以我們需要在服務器上創建一個新的docker自定義網絡。
檢查系統上可用的docker網絡。
碼頭網絡ls
現在,為traefik容器創建一個名為“ proxy”的新自定義網絡。
docker network創建代理
並且您將獲得網絡容器名稱的隨機字符串。 再次檢查可用的網絡。
碼頭網絡ls
結果如下所示。
已創建名為traefik的自定義docker網絡“ proxy”。
步驟4 –安裝和配置Traefik反向代理
在此步驟中,我們將創建啟用HTTPS letsencrypt的traefik容器(使用域名'traefik.hakase-labs.io),並在traefik上自動將HTTP重定向到HTTPS。
Traefik預安裝
在創建所有traefik配置之前,我們需要安裝“ apache2-utils”以生成加密的htpasswd密碼並創建新的traefik目錄。
使用下面的apt命令安裝“ apache2-utils”。
sudo apt install apache2-utils -y
現在運行下面的htpasswd命令為traefik儀表板身份驗證生成新密碼。
htpasswd -nb穆罕默德密碼
將結果保留在筆記中。
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
接下來,登錄'mohammad'用戶。
蘇 - 穆罕默德
為所有traefik配置創建一個名為“ traefik”的新目錄。
mkdir -p traefik /
cd traefik /
創建Traefik配置
轉到“ traefik”目錄並使用創建一個新的配置文件“ traefik.toml” VIM 編輯器。
cd traefik /
vim traefik.toml
粘貼下面的配置。
#Traefik全局配置debug = false checkNewVersion = true logLevel =“ ERROR”#定義HTTP和HTTPS defaultEntryPoints = [“ https”,“ http”]的EntryPoint#在端口8080上啟用Traefik儀表板#使用基本身份驗證方法#mohammad和密碼[web]地址=“:8080” [web.auth.basic]用戶= [“ mohammad:$ apr1 $ hEgpZUN2 $ OYG3KwpzI3T1FqIg9LIbi。”]#定義HTTP端口80和HTTPHTTPS端口443 EntryPoint#啟用自動重定向[entryPoints] [entryPoints.http]地址=“:80” [entryPoints.http.redirect] entryPoint =“ https” [entryPoints.https] address =“:443” [entryPoints.https.tls]#啟用重試發送請求如果網絡錯誤[重試]#定義Docker後端配置[docker]端點=“ unix:///var/run/docker.sock”域=“ traefik.hakase-labs.io”監視= true true bybydefault = false #Letsencrypt註冊#定義Letsencrypt ACME HTTP挑戰[acme] email =“ [受電子郵件保護]” storage =“ acme.j 兒子” entryPoint =“ https” OnHostRule = true [acme.httpChallenge] entryPoint =“ http”
保存並退出。
備註:
有關配置的所有信息都在註釋部分“#...“。
創建Traefik Docker撰寫腳本
現在創建docker-compose yml腳本。
vim docker-compose.yml
粘貼下面的配置。
版本:“ 3”服務:traefik:圖像:traefik:最新命令:--docker --docker.domain = hakase-labs.io端口:-80:80-443:443網絡:-代理卷:-/ var /運行/docker.sock:/var/run/docker.sock-./traefik.toml:/traefik.toml-./acme.json:/acme.json標籤:-“ traefik.frontend.rule = Host:traefik。 hakase-labs.io“-” traefik.port = 8080“ container_name:traefik重新啟動:始終是網絡:代理:外部:true
保存並退出。
備註:
- 我們正在基於“ traefik:latest”泊塢窗映像創建一個名為“ traefik”的新容器。
- 'traefik'容器將在名為'proxy'的自定義docker網絡上運行,並公開外部端口HTTP 80和HTTPS 443。
- 該容器將掛載traefik配置'traefik.toml'和'acme.json',包括docker sock文件。
- traefik的標籤配置,前端域名和traefik端口。
Letsencrypt ACME配置
“ traefik.toml”上的acme配置用於自動生成SSL letencrypt。 存儲文件“ acme.json”是必需的。
創建一個新的JSON文件“ acme.json”,並將權限更改為“ 600”。
觸摸acme.json
chmod 600 acme.json
有關SSL letsencrypt信息的所有日誌都將保存在文件中。
建立Traefik集裝箱
現在,我們準備使用上述配置文件來構建自己的traefik容器。
cd traefik /
ls -lah
所有配置“ traefik.toml”,“ docker-compose.yml”和“ acme.json”文件。
使用下面的docker compose命令構建容器。
docker-compose up -d
完成後,檢查正在運行的容器。
docker-compose ps
您將啟動並運行Traefik容器,公開外部端口HTTP和HTTPS。
步驟5 - 測試
打開Web瀏覽器,在地址欄中鍵入traefik域名。 我的是:
http://traefik.hakase-labs.io/
您將被重定向到HTTPS連接,並將被要求輸入用戶名和密碼。
使用用戶“ mohammad”登錄,密碼為“ password”。
您將獲得如下Traefik儀表板。
Traefik健康狀況頁面。
Traefik現代HTTP反向代理已作為Docker容器安裝在Ubuntu 18.04上。
參考文獻