一文读懂 Traefik Hub

简介: Hello folks,今天我们介绍一下 Traefik 生态中的“革命性产物”——Traefik Hub 云原生网络平台。(注:其与 Traefik Proxy 2.7 及更高版本兼容,早期版本不支持)

   

   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/ ,显示如下信息:

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


[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,然后进行登录操作,具体如下:

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


[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 !

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
前端开发
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
642 0
|
关系型数据库 MySQL Linux
MariaDB强制修改root密码
前几天装了个MariaDB数据库来代替mysql,结果密码太复杂 给忘了。进过百度搜索了几个办法后, 总结以下办法 1.修改配置文件 示例 在MariaDB安装目录下的找到配置文件my.
2234 0
|
jenkins 持续交付 开发工具
阿里云容器服务Kubernetes之Jenkins X(1)-安装部署实践篇
"Jenkins X is a CI/CD solution for modern cloud applications on Kubernetes." 这是Jenkins社区对于Jenkins X 的官方总结和定义。
7182 0
|
开发者 图形学 UED
深度解析Unity游戏开发中的性能瓶颈与优化方案:从资源管理到代码执行,全方位提升你的游戏流畅度,让玩家体验飞跃性的顺滑——不止是技巧,更是艺术的追求
【8月更文挑战第31天】《Unity性能优化实战:让你的游戏流畅如飞》详细介绍了Unity游戏性能优化的关键技巧,涵盖资源管理、代码优化、场景管理和内存管理等方面。通过具体示例,如纹理打包、异步加载、协程使用及LOD技术,帮助开发者打造高效流畅的游戏体验。文中提供了实用代码片段,助力减少内存消耗、提升渲染效率,确保游戏运行丝滑顺畅。性能优化是一个持续过程,需不断测试调整以达最佳效果。
820 0
|
消息中间件 前端开发 API
架构的未来:微前端与微服务的融合
架构的未来:微前端与微服务的融合
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
2401 1
hutool获取excel中的图片
hutool获取excel中的图片
1044 1
|
前端开发 Java 关系型数据库
使用SSM实现网上购物商城系统
本项目基于SSM框架( spring+springmvc+mybatis)进行开发实现,数据库采用MYSQL,开发工具为IDEA或ECLIPSE均可。系统包含商城前端功能和后端管理功能,前端主要实现了用户注册、登陆、商品查看、添加购物车、生成订单、模拟支付等功能。后台管理功能主要包含用户管理、产品类型管理、产品管理、订单管理、销量统计等功能。功能完整,运行无误,适合做毕业设计或课程设计使用。
720 0
使用SSM实现网上购物商城系统
|
容器 Docker 项目管理
【Docker项目实战】使用Docker部署tududi个人任务管理工具
【6月更文挑战第2天】使用Docker部署tududi个人任务管理工具
841 5
|
前端开发 JavaScript 开发者
第一章(概念篇) 微前端介绍与背景
第一章(概念篇) 微前端介绍与背景
510 0