使用 Traefik Hub 輕松暴露本地 Kubernetes 集群服務(wù)
Traefik Hub 是一個(gè)云原生網(wǎng)絡(luò)平臺(tái),可幫助你即時(shí)在邊緣發(fā)布、保護(hù)和擴(kuò)展容器。它提供了從用戶到容器的端到端連接以及進(jìn)入每個(gè)服務(wù)的網(wǎng)關(guān)。它是用于在分布式系統(tǒng)中連接多個(gè)集群的統(tǒng)一解決方案,它通過(guò)一個(gè)簡(jiǎn)單易用的儀表板整合了網(wǎng)絡(luò)堆棧的多個(gè)層。Traefik Hub 是一種開箱即用的解決方案,易于學(xué)習(xí),甚至更易于實(shí)施,開發(fā)團(tuán)隊(duì)只需單擊一下即可將應(yīng)用程序發(fā)布到 Internet,并自動(dòng)配置重要的安全實(shí)踐。
Traefik Hub 將完全托管于你的基礎(chǔ)架構(gòu)之上,并與你安裝在每個(gè)集群中的代理進(jìn)行連接。代理附加到入口實(shí)例。它們充當(dāng)你的每項(xiàng)服務(wù)的網(wǎng)關(guān),該平臺(tái)向每個(gè)代理發(fā)送指令并從其接收關(guān)鍵指標(biāo)。Traefik Hub 適用于 Kubernetes 或 Docker 集群。
特性
一鍵服務(wù)發(fā)布
Traefik Hub 使發(fā)布和暴露任何應(yīng)用程序到互聯(lián)網(wǎng)變得容易。在集群中安裝 Hub 代理,選擇端口和訪問(wèn)控制策略(或允許 Traefik Hub 為你自動(dòng)檢測(cè)),然后單擊“暴露服務(wù)”。就這么簡(jiǎn)單。在幾秒鐘內(nèi),你的服務(wù)就可以與朋友或同事共享的 DNS 名稱直接暴露在互聯(lián)網(wǎng)上。
容器的高級(jí)安全性
使用 Traefik Hub,你的容器在發(fā)布和訪問(wèn)時(shí)都是安全的。該平臺(tái)通過(guò)私有加密隧道與代理連接,允許你發(fā)布服務(wù)而無(wú)需擔(dān)心公共 IP 或 NAT 配置。你還可以選擇靈活訪問(wèn)和自動(dòng)證書管理,因?yàn)?Traefik Hub 支持 JSON Web 令牌 (JWT) 和基本身份驗(yàn)證。證書管理是云原生安全的另一個(gè)關(guān)鍵組件,它在 Traefik Hub 中實(shí)現(xiàn)了自動(dòng)化 Traefik Hub 請(qǐng)求、更新和傳播 ACME 證書以保持一致的安全配置。DNS、路由規(guī)則、訪問(wèn)控制和 NAT 是自動(dòng)化的,因此可擴(kuò)展且不易出現(xiàn)人為錯(cuò)誤。
靈活自動(dòng)擴(kuò)展到多個(gè)集群
集中且易于使用的 Hub 平臺(tái)可讓你將部署無(wú)縫擴(kuò)展到多個(gè)集群。你可能對(duì)已發(fā)布集群的配置、入站流量和運(yùn)行狀況有任何疑問(wèn),可以在儀表板中找到。每秒請(qǐng)求數(shù)、平均響應(yīng)時(shí)間和每秒請(qǐng)求錯(cuò)誤等重要指標(biāo)都可以輕松訪問(wèn)。作為一個(gè)簡(jiǎn)單而統(tǒng)一的網(wǎng)絡(luò)工具,Traefik Hub 可讓您在部署的同時(shí)擴(kuò)展網(wǎng)絡(luò)。
使用
Traefik Hub 很容易上手,我們只需要前往網(wǎng)站 http://hub.traefik.io/ 創(chuàng)建一個(gè)帳戶,然后按照提示操作即可,如下所示。
點(diǎn)擊 Install my first Traefik Hub Agent 按鈕開始安裝 Hub 代理即可,這樣就可以讓 Hub 發(fā)現(xiàn)我們平臺(tái)上的服務(wù),然后選擇要發(fā)布的服務(wù)即可。
比如我們這里準(zhǔn)備安裝代理在 Kubernetes 集群上,可以選擇該平臺(tái)即可出現(xiàn)對(duì)應(yīng)的安裝教程。
按照上面的提示在我們的 Kubernetes 集群中安裝 Traefik 和代理程序,安裝后代理程序就會(huì)分析我們的集群信息并將服務(wù)發(fā)送到 Traefik Hub 上去,正常情況下會(huì)在集群中安裝一個(gè) 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ù)時(shí),我們還可以使用 JWT、BasicAuth(以及更多即將推出的)認(rèn)證方式來(lái)保護(hù)它們。只需要在頁(yè)面上面點(diǎn)擊 Create a Policy 按鈕創(chuàng)建一個(gè)訪問(wèn)控制策略,比如我們這里添加一個(gè)名為 basic-auth-jenkins 的訪問(wèn)策略,如下圖所示:
現(xiàn)在我們來(lái)將集群中的 jenkins 服務(wù)直接發(fā)布到外網(wǎng)中去,在 Traefik Hub 的 Dashboard 中找到該服務(wù)。
我們就可以直接來(lái)發(fā)布該服務(wù)了,點(diǎn)擊 Publish the service 按鈕,選擇我們需要暴露的 Service 端口,如果想限制訪問(wèn)也可以選擇前面我們創(chuàng)建的訪問(wèn)策略。
然后點(diǎn)擊 Save and Publish 即可,稍等一段時(shí)間后我們的服務(wù)就會(huì)被發(fā)布在了 Traefik Hub 上了。
比如我們這里生成的外網(wǎng)地址為 https://distinguished-urial-cwk8f9.fzqj46yl.traefikhub.io,通過(guò)該 URL 就可以訪問(wèn)到我們的 Jenkins 服務(wù)了。
然后就和正常使用 Jenkins 沒任何區(qū)別了。
當(dāng)通過(guò)上面的 URL 訪問(wèn)我們的應(yīng)用的時(shí)候,在 Traefik Hub 上還可以看到該應(yīng)用的相關(guān)性能指標(biāo)信息。
在 Dashboard 的首頁(yè)可以看到我們的 Traefik Hub 的當(dāng)前統(tǒng)計(jì)信息。
不過(guò)目前 Traefik Hub 還處于 Beta 狀態(tài),在使用過(guò)程中還有一些 BUG,比如上面我們關(guān)聯(lián)了一個(gè) Basic Auth 的訪問(wèn)策略,但是在實(shí)際測(cè)試的過(guò)程中發(fā)現(xiàn)并沒有生效。但是整體上我們可以感受到 Treafik Hub 的強(qiáng)大功能以及發(fā)布和保護(hù)我們的服務(wù)是多么簡(jiǎn)單。