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