一文读懂 Traefik Hub

2022-11-18 14:38:26 浏览数 (1)


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 具有多种不同的功能,核心功能主要体现在如下几方面,具体:

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 页面主要包含仪表盘、代理、服务及访问控制等 4 大组件。接下来,我们安装第一个 Traefik Hub 代理。关于此组件的安装,我们可以基于 Kubernetes、Docker、Docker-compose 和 Docker-swarm 等平台完成,具体的安装详细步骤暂不在本文中赘述。需要注意的是,Traefik Proxy 和 Hub 都需要安装部署,才能完成后续的操作部署。

此处,为了本地验证,我们可以选择基于 Docker 或 Docker-compose 运行,切换后的界面显示如下所示:

为方便、快捷,我们可以将如上的脚本 CP下来在本地环境中运行。再次回到窗体时显示如下:

基于此,无论如何,一旦容器成功运行,Traefik Hub 控制平面便会检测到新代理,然后,会要求我们对此代理进行重命名。这里,我们保持默认不变,然后转到详细页面,如下所示:

在代理详细信息中,我们可以看到它找到了 3 个容器。我们还可以创建策略,以应用于连接到此代理的服务。

目前,基于当前的平台控制,有两种核心策略可供我们使用。一个是 BasicAuth,另一个是 Traefik Enterprise JWT Auth。

此时,我们来创建的第一个容器,命名为 devops,完成后页面显示如下:

点击 devops ,进入详细的服务发布页面,如下所示:

然后进入发布配置页面,涉及基础配置及附加的高级配置,完成后,创建一个 BasicAuth 中间件并将其应用于服务。我们基于 devops,新建一个用于服务发布的服务 devops1 ,服务内容保持不变,先不进行授权控制操作,如下所示:

发布成功后,页面自动跳转至如下:

此时,点击所发布服务对应的 URL 或复制在浏览器访问:https://occupational-marmoset-xfnone.mv0jdsgf.traefikhub.io/ ,显示如下信息:

与此同时,我们在后台通过命令行进行验证,如下所示:

代码语言:javascript复制
[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 中间件创建,并将其应用于服务。然后使其生效,此时进行访问,出现如下页面:

此时,我们输入之前所创建的账户信息,admin/admin,然后进行登录操作,具体如下:

与此同时,我们再一次地在后台通过命令行进行验证,如下所示:

代码语言:javascript复制
[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 将在后续的文章中描述。

针对此服务的相关性能指标情况,页面也予以展示,具体如下图所示:

是不是爽爆了,当然,新产品的问世肯定也存在不少缺陷之处,例如,自定义域、TCP 连接以及其他可支撑的机制。当然,可能基于不同的需求而进行适应性提供,无论如何,还是希望这个平台能够健康、稳定发展下去。

如上为 Traefik Hub 的相关内容解析,希望对大家有用。关于 Traefik Hub 更多需要了解的信息,有兴趣的话,大家可以查看发布说明或者官方文档以及访问论坛,探索所有最新的社区主题。

Adiós !

- EOF -

0 人点赞