天天看點

一文讀懂 Traefik Hub

作者:架構驿站

Hello folks,今天我們介紹一下 Traefik 生态中的“革命性産物”——Traefik Hub 雲原生網絡平台。(注:其與 Traefik Proxy 2.7 及更高版本相容,早期版本不支援)

這是一個雲原生網絡平台,可幫助立即釋出、保護和擴充邊緣容器。Traefik Hub 為在 Kubernetes 或任何其他編排器上運作的服務提供了一個網關!

作為一款 SaaS 網絡控制平面,Traefik Hub 可以輕松地進行邊緣大規模釋出和容器保護。其所具備的內建和自動化的解決方案使得都能通過現代通路控制(如OpenID Connect(OIDC))快速暴露微服務。那麼,究竟什麼是 Traefik Hub ?

Traefik Hub 概述

首先,Traefik Hub 作為一個雲原生網絡平台,可幫助我們能夠進行立即釋出、保護和擴充邊緣容器。它提供從使用者到容器的端到端連接配接,以及進入所建構的每個服務的網關。這是一個在分布式系統中将多個叢集聯網的統一解決方案,它通過一個簡單易用的儀表闆整合了網絡堆棧的衆多層。

其次,Traefik Hub 是一個開箱即用的解決方案,易于學習,甚至易于實施。開發團隊隻需單擊一下即可将應用程式釋出到網際網路,并自動配置重要的安全實踐。Traefik Hub 鼓勵團隊之間的合作,允許他們從小規模開始,擴充到多個叢集。Traefik Hub 簡化了現代分布式系統與生俱來的挑戰。

最後,除上述功能之外,Traefik Hub 也具有開源代理,我們可以安裝在 Kubernetes 或 Docker 環境中,以擴充現有的 Traefik 或 Nginx 入口。

接下來,我們來了解一下 Traefik Hub 的工作原理。

Traefik Hub 原理

本質上講,Traefik Hub 适用于一切的 Kubernetes 或 Docker 叢集。可降其完全托管的于我們所建構的基礎設施平台之上,并與所設定的每個叢集中安裝的代理連接配接。代理然後附加到入口執行個體。由其充當進入應用服務的網關,一個獨特而安全的入口點。該平台向每個代理發送指令并接收關鍵名額,彌補了 Traefik Proxy 大規模簡化雲原生網絡的能力。

Traefik Hub 網絡拓撲架構如下所示:

一文讀懂 Traefik Hub

源自官網

基本功能

基于官方所述,Traefik Hub 具有多種不同的功能,核心功能主要展現在如下幾方面,具體:

1、GitOps 一鍵自動化釋出

Traefik Hub 實作了完整的 GitOps 自動化工作流。可以輕松地将任何應用程式釋出到對應的環境并對外暴露所通路的入口資訊。基于此,我們的技術團隊可以安裝、配置和管理他們的雲原生網絡堆棧,Hub 作為控制平面,完全自動化提供可重複的周期,以增加部署頻率、可預測性和可審計性,以確定組織能夠識别更改的内容、時間和原因,并收集相關名額資料。

除此之外,Traefik Hub 開源代理會自動發現服務,允許我們選擇要釋出的服務,選擇端口(或讓 Traefik Hub 自動檢測它),通路控制政策(如果願意),然後從網際網路上的任何地方直接建立基于 WebSocket 的隧道直接到所選服務。

2、容器執行個體安全

基于 Traefik Hub,我們的容器在釋出和通路時都是安全的。該平台通過私有加密隧道與代理連接配接,該隧道允許釋出服務,而無需擔心公共 IP 或 NAT 配置。同時,其附帶一系列易于使用的安全相關功能,而無需更改所應用的技術堆棧或重新部署服務:

(1)加快 Traefik 或 Nginx 社群版部署的現代通路控制部署,如 OIDC,以輕松控制誰可以通路服務。無論是否通過我們的隧道釋出,這些通路控制政策都可以添加到這兩種服務中。

(2)使用 Traefik Hub 的安全直接連接配接,最大限度地減少對暴露容器的攻擊。

(3)使用我們的深度 Let's Encrypt TLS 生命周期內建實作 HTTP 證書自動化管理與維護等。

3、靈活擴充性

集中且易于使用的 Hub 平台允許我們将部署無縫擴充到多個叢集。儀表闆中提供了有關已釋出叢集的配置、入站流量和運作狀況的任何問題。重要名額,如每秒請求數、平均響應時間和每秒請求錯誤,都很容易通路。作為一個簡單統一的網絡工具,Traefik Hub 允許我們在部署的同時拓展更多的叢集網絡規模。

除了上述功能,Traefik Hub 還具備其他功能,例如,基于其所附帶共享工作區和進階基于角色的通路控制(RBAC)進行項目協作,進而提高效率等。

Traefik Hub 使用指南

接下來,我們就邁入開始使用 Traefik Hub 環節,總體來說,Traefik Hub 很容易上手。我們所要做的就是建立一個帳戶并在叢集上安裝 Hub 代理(隻需確定所部屬的叢集已經有一個 Traefik 代理執行個體)。基于此,可以讓 Hub 發現我們的服務,然後選擇要釋出的服務。

這塊,我用 Github 賬戶登入,具體位址為: https://hub.traefik.io/. 進入後,頁面一目了然,如下所示:

一文讀懂 Traefik Hub

進入首頁後,将會看到整個 Traefik Hub 頁面主要包含儀表盤、代理、服務及通路控制等 4 大元件。接下來,我們安裝第一個 Traefik Hub 代理。關于此元件的安裝,我們可以基于 Kubernetes、Docker、Docker-compose 和 Docker-swarm 等平台完成,具體的安裝詳細步驟暫不在本文中贅述。需要注意的是,Traefik Proxy 和 Hub 都需要安裝部署,才能完成後續的操作部署。

一文讀懂 Traefik Hub

此處,為了本地驗證,我們可以選擇基于 Docker 或 Docker-compose 運作,切換後的界面顯示如下所示:

一文讀懂 Traefik Hub

為友善、快捷,我們可以将如上的腳本 CP下來在本地環境中運作。再次回到窗體時顯示如下:

一文讀懂 Traefik Hub

基于此,無論如何,一旦容器成功運作,Traefik Hub 控制平面便會檢測到新代理,然後,會要求我們對此代理進行重命名。這裡,我們保持預設不變,然後轉到詳細頁面,如下所示:

一文讀懂 Traefik Hub

在代理詳細資訊中,我們可以看到它找到了 3 個容器。我們還可以建立政策,以應用于連接配接到此代理的服務。

目前,基于目前的平台控制,有兩種核心政策可供我們使用。一個是 BasicAuth,另一個是 Traefik Enterprise JWT Auth。

此時,我們來建立的第一個容器,命名為 devops,完成後頁面顯示如下:

一文讀懂 Traefik Hub

點選 devops ,進入詳細的服務釋出頁面,如下所示:

一文讀懂 Traefik Hub
一文讀懂 Traefik Hub

然後進入釋出配置頁面,涉及基礎配置及附加的進階配置,完成後,建立一個 BasicAuth 中間件并将其應用于服務。我們基于 devops,建立一個用于服務釋出的服務 devops1 ,服務内容保持不變,先不進行授權控制操作,如下所示:

一文讀懂 Traefik Hub

釋出成功後,頁面自動跳轉至如下:

一文讀懂 Traefik Hub

此時,點選所釋出服務對應的 URL 或複制在浏覽器通路:https://occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io/ ,顯示如下資訊:

一文讀懂 Traefik Hub

與此同時,我們在背景通過指令行進行驗證,如下所示:

[leonli@Leons-MacBook-Air usr] % curl -i https://occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io/
HTTP/2 200 
content-type: application/json; charset=utf-8
date: Fri, 9 Sep 2022 08:06:10 GMT
etag: W/"30e-DTDfGIkORcaKE2wk3afTkc9aLNA"
content-length: 782


{"host":{"hostname":"occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io","ip":"::ffff:172.23.0.2","ips":[]},"http":{"method":"GET","baseUrl":"","originalUrl":"/","protocol":"http"},"request":{"params":{"0":"/"},"query":{},"cookies":{},"body":{},"headers":{"host":"occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io","user-agent":"curl/7.84.0","accept":"*/*","x-forwarded-for":"172.23.0.3","x-forwarded-host":"occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io","x-forwarded-port":"443","x-forwarded-proto":"https","x-forwarded-server":"5a7b831a229b","x-real-ip":"172.23.0.3","accept-encoding":"gzip"}},"environment":{"PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","HOSTNAME":"337a1409440f","NODE_VERSION":"16.16.0","YARN_VERSION":"1.22.19","HOME":"/root"}}%               

然後,針對 devops1 服務進行 BasicAuth 中間件建立,并将其應用于服務。然後使其生效,此時進行通路,出現如下頁面:

一文讀懂 Traefik Hub
一文讀懂 Traefik Hub

此時,我們輸入之前所建立的賬戶資訊,admin/admin,然後進行登入操作,具體如下:

一文讀懂 Traefik Hub

與此同時,我們再一次地在背景通過指令行進行驗證,如下所示:

[leonli@Leons-MacBook-Air usr] % curl -i https://occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io/
HTTP/2 401 
content-type: text/plain
date: Fri, 9 Sep 2022 08:49:10 GMT
www-authenticate: Basic realm="hub"
content-length: 17


401 Unauthorized           

與上述結果一緻,表明我們所設定的 BasicAuth 授權通路政策已生效,針對其他的兩種政策 JWT 和 OIDC 将在後續的文章中描述。

針對此服務的相關性能名額情況,頁面也予以展示,具體如下圖所示:

一文讀懂 Traefik Hub

是不是爽爆了,當然,新産品的問世肯定也存在不少缺陷之處,例如,自定義域、TCP 連接配接以及其他可支撐的機制。當然,可能基于不同的需求而進行适應性提供,無論如何,還是希望這個平台能夠健康、穩定發展下去。

如上為 Traefik Hub 的相關内容解析,希望對大家有用。關于 Traefik Hub 更多需要了解的資訊,有興趣的話,大家可以檢視釋出說明或者官方文檔以及通路論壇,探索所有最新的社群主題。

Adiós !