使用 Traefik Hub 輕松暴露本地 Kubernetes 集群服務(wù)

Traefik Hub 是一個云原生網(wǎng)絡(luò)平臺,可幫助你即時在邊緣發(fā)布、保護(hù)和擴(kuò)展容器。它提供了從用戶到容器的端到端連接以及進(jìn)入每個服務(wù)的網(wǎng)關(guān)。它是用于在分布式系統(tǒng)中連接多個集群的統(tǒng)一解決方案,它通過一個簡單易用的儀表板整合了網(wǎng)絡(luò)堆棧的多個層。Traefik Hub 是一種開箱即用的解決方案,易于學(xué)習(xí),甚至更易于實(shí)施,開發(fā)團(tuán)隊(duì)只需單擊一下即可將應(yīng)用程序發(fā)布到 Internet,并自動配置重要的安全實(shí)踐。
Traefik Hub 將完全托管于你的基礎(chǔ)架構(gòu)之上,并與你安裝在每個集群中的代理進(jìn)行連接。代理附加到入口實(shí)例。它們充當(dāng)你的每項(xiàng)服務(wù)的網(wǎng)關(guān),該平臺向每個代理發(fā)送指令并從其接收關(guān)鍵指標(biāo)。Traefik Hub 適用于 Kubernetes 或 Docker 集群。

特性
一鍵服務(wù)發(fā)布
Traefik Hub 使發(fā)布和暴露任何應(yīng)用程序到互聯(lián)網(wǎng)變得容易。在集群中安裝 Hub 代理,選擇端口和訪問控制策略(或允許 Traefik Hub 為你自動檢測),然后單擊“暴露服務(wù)”。就這么簡單。在幾秒鐘內(nèi),你的服務(wù)就可以與朋友或同事共享的 DNS 名稱直接暴露在互聯(lián)網(wǎng)上。
容器的高級安全性
使用 Traefik Hub,你的容器在發(fā)布和訪問時都是安全的。該平臺通過私有加密隧道與代理連接,允許你發(fā)布服務(wù)而無需擔(dān)心公共 IP 或 NAT 配置。你還可以選擇靈活訪問和自動證書管理,因?yàn)?Traefik Hub 支持 JSON Web 令牌 (JWT) 和基本身份驗(yàn)證。證書管理是云原生安全的另一個關(guān)鍵組件,它在 Traefik Hub 中實(shí)現(xiàn)了自動化 Traefik Hub 請求、更新和傳播 ACME 證書以保持一致的安全配置。DNS、路由規(guī)則、訪問控制和 NAT 是自動化的,因此可擴(kuò)展且不易出現(xiàn)人為錯誤。
靈活自動擴(kuò)展到多個集群
集中且易于使用的 Hub 平臺可讓你將部署無縫擴(kuò)展到多個集群。你可能對已發(fā)布集群的配置、入站流量和運(yùn)行狀況有任何疑問,可以在儀表板中找到。每秒請求數(shù)、平均響應(yīng)時間和每秒請求錯誤等重要指標(biāo)都可以輕松訪問。作為一個簡單而統(tǒng)一的網(wǎng)絡(luò)工具,Traefik Hub 可讓您在部署的同時擴(kuò)展網(wǎng)絡(luò)。
使用
Traefik Hub 很容易上手,我們只需要前往網(wǎng)站 http://hub.traefik.io/ 創(chuàng)建一個帳戶,然后按照提示操作即可,如下所示。


點(diǎn)擊 Install my first Traefik Hub Agent 按鈕開始安裝 Hub 代理即可,這樣就可以讓 Hub 發(fā)現(xiàn)我們平臺上的服務(wù),然后選擇要發(fā)布的服務(wù)即可。
比如我們這里準(zhǔn)備安裝代理在 Kubernetes 集群上,可以選擇該平臺即可出現(xiàn)對應(yīng)的安裝教程。


按照上面的提示在我們的 Kubernetes 集群中安裝 Traefik 和代理程序,安裝后代理程序就會分析我們的集群信息并將服務(wù)發(fā)送到 Traefik Hub 上去,正常情況下會在集群中安裝一個 Traefik 應(yīng)用和代理程序,如下所示:
$ kubectl get pods -n hub-agent
NAME READY STATUS RESTARTS AGE
hub-agent-auth-server-855f9c788f-jct9w 1/1 Running 0 19m
hub-agent-auth-server-855f9c788f-lcwh6 1/1 Running 0 19m
hub-agent-auth-server-855f9c788f-vhhlw 1/1 Running 0 19m
hub-agent-controller-5f7b7b48c7-nfz5s 1/1 Running 0 19m
hub-agent-tunnel-54b589f5bf-mlpnr 1/1 Running 0 19m
traefik-hub-57fb857fff-sm8f5 1/1 Running 0 20m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
traefik-84786bd774-t9p47 1/1 Running 0 21m
安裝完成后在 Traefik Hub 的網(wǎng)站上就可以看到我們集群中的 Services 信息,如下圖所示:


在暴露這些服務(wù)時,我們還可以使用 JWT、BasicAuth(以及更多即將推出的)認(rèn)證方式來保護(hù)它們。只需要在頁面上面點(diǎn)擊 Create a Policy 按鈕創(chuàng)建一個訪問控制策略,比如我們這里添加一個名為 basic-auth-jenkins 的訪問策略,如下圖所示:


現(xiàn)在我們來將集群中的 jenkins 服務(wù)直接發(fā)布到外網(wǎng)中去,在 Traefik Hub 的 Dashboard 中找到該服務(wù)。


我們就可以直接來發(fā)布該服務(wù)了,點(diǎn)擊 Publish the service 按鈕,選擇我們需要暴露的 Service 端口,如果想限制訪問也可以選擇前面我們創(chuàng)建的訪問策略。

然后點(diǎn)擊 Save and Publish 即可,稍等一段時間后我們的服務(wù)就會被發(fā)布在了 Traefik Hub 上了。

比如我們這里生成的外網(wǎng)地址為 https://distinguished-urial-cwk8f9.fzqj46yl.traefikhub.io,通過該 URL 就可以訪問到我們的 Jenkins 服務(wù)了。

然后就和正常使用 Jenkins 沒任何區(qū)別了。


當(dāng)通過上面的 URL 訪問我們的應(yīng)用的時候,在 Traefik Hub 上還可以看到該應(yīng)用的相關(guān)性能指標(biāo)信息。

在 Dashboard 的首頁可以看到我們的 Traefik Hub 的當(dāng)前統(tǒng)計信息。

不過目前 Traefik Hub 還處于 Beta 狀態(tài),在使用過程中還有一些 BUG,比如上面我們關(guān)聯(lián)了一個 Basic Auth 的訪問策略,但是在實(shí)際測試的過程中發(fā)現(xiàn)并沒有生效。但是整體上我們可以感受到 Treafik Hub 的強(qiáng)大功能以及發(fā)布和保護(hù)我們的服務(wù)是多么簡單。





























