前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用云原生管理平台 Meshery 进行可视化管理,部署和测试

使用云原生管理平台 Meshery 进行可视化管理,部署和测试

作者头像
我是阳明
发布2024-01-19 16:23:26
2990
发布2024-01-19 16:23:26
举报
文章被收录于专栏:k8s技术圈

作者:黄鑫,英特尔云原生软件开发工程师

Meshery 是什么?

Meshery[1],作为一个 CNCF 项目,是一个开源的云原生管理平台。你可以以可视化和多人协作的方式管理和部署你的基础设施,服务网格和工作负载。目前 Meshery 不仅可以管理 Kubernetes 集群上个任意资源,而且还集成了包括常见的服务网格以及各种 CNCF 项目在内的超过 260 个组件[2],从而帮助你可以更轻松地与集群进行交互,管理各个项目的生命周期。通过 Meshery,你可以掌控你的云原生环境。

除了基础功能,Meshery 还提供了一系列强大的工具,包括便捷的性能测试组件,各种项目的最佳实践模板,以及支持多人协作的 MeshMap 等等。

Meshery 的社区非常活跃,关注度也非常高。最近,Meshery 发布了 v0.7[3] 版本,在 Github[4] 上已经获得了超过 4K 的 Stars。值得一提的是,Meshery 在 200 多个 CNCF 项目中的增长速度位列第十!

作为 Meshery 的发起和维护方 Layer5[5] 也创建了一个 Slack 频道[6], 供 Meshery 开发者和用户们一起交流。

Meshery 与 Service Mesh

从 Meshery 的名字就可以看出,它与 Service Mesh 有着密切的关系。主流的 Service Mesh 通常分为数据平面(Data Plane)和控制平面(Control Plane)。数据平面负责处理网络流量,包括服务发现、负载均衡、流量控制、安全认证等功能。而控制平面则负责管理数据平面,包括配置、路由、策略、监控等功能。

在控制平面之上,我们还可以定义一层管理平面(Management Plane),用于统一管理和配置不同的 Service Mesh。Meshery 就是这一管理平面的软件实现,它提供了对不同 Service Mesh 的统一管理能力,使运维人员、开发者和应用服务提供者能够最大化地发挥 Service Mesh 的潜能。

Service Mesh 管理平面

Meshery 架构

让我们一起深入了解 Meshery 的架构和工作原理。下图描绘了 Meshery 的架构全貌:

Meshery 架构图

Meshery 可以通过 Docker 部署,或者直接安装在 Kubernetes 集群中。此外,Meshery 还提供了 Restful APIs,供各种客户端(如 UI,Mesheryctl 命令和脚本)进行连接。

Meshery Adapters 是一组负责管理各种服务网格生命周期的组件。目前,市面上的主流服务网格都有对应的 Adapter[7]。Adapters 通过 GRPC 的方式与 Meshery 连接。

在架构图的右边蓝色部分,是 Meshery 负责管理的 Kubernetes 集群。Meshery 会在该集群中部署 Meshery Operator,通过 MeshSync[8] 以获取和同步该集群的资源信息。有了这些信息,Meshery 就可以部署和管理服务网格和工作负载,并将集群的资源信息同步展示在 Meshery 的 UI 上。

此外,Meshery 还支持通过 HTTP 的方式获取集群上的 Prometheus 和 Grafana 信息和图表,并将其展示在 Meshery 的 UI 上。

想要了解更多关于 Meshery 架构的内容,请参考:https://docs.meshery.io/concepts/architecture[9]

请注意,Meshery 目前还处在快速开发阶段,最新的版本可能和文中介绍的版本在功能使用上有差异,请以 Meshery 官方文档为准。

使用 Meshery 可视化管理,部署和测试基础设施,服务网格和工作负载

让我们通过实际的操作流程,来探索 Meshery 是如何管理基础设施的。

部署 Meshery

Meshery 提供了两种部署方式:

部署在 Kubernetes 集群:

代码语言:javascript
复制
$ curl -L https://meshery.io/install | PLATFORM=kubernetes bash -

通过 Docker 的方式部署:

代码语言:javascript
复制
$ curl -L https://meshery.io/install | PLATFORM=docker bash -

登陆 Meshery UI

打开浏览器,访问 Meshery UI 的默认地址:http://<hostname>:9081。然后,使用你的账号登录 Meshery UI。

Meshery 登陆界面

连接 Kubernetes 集群

Meshery 会自动发现和连接主机上的 $HOME/.kube 目录下 kubeconfig 对应的集群,你也可以通过上传 kubeconfig 的方式,连接到指定的 Kubernetes 集群。

连接 Kubernetes 集群

使用 Meshery Adaptars 部署服务网格和工作负载

在 Lifecycle 页面你可以看到 Meshery Adaptars。以 Istio Adaptar 为例,你可以通过它部署和管理 Istio 以及一些示例应用。

Istio Adaptar

使用 Meshery Design 进行更精细的服务网格和工作负载部署

虽然 Meshery Adapters 的功能相对有限,但如果你想进行更精细的服务网格和工作负载配置,那么 Meshery Design 将是你的理想选择。Meshery Design 提供了基于 Open Application Model[10] 的配置方式,并提供了大量不同组件的配置模板,以简化 Meshery Design 配置的编写过程。目前,Intel® 已经上传了两个用于加速 Istio 中 TLS 握手过程的 Meshery Design,

(1). 使用 Intel® AVX-512 指令集(CryptoMB)卸载和加速 Istio 中的 TLS 握手[11]

(2). 使用 Intel® QAT 加速器卸载和加速 Istio 中的 TLS 握手 [12]

以 (1) 为例,我们来看看如何通过 Meshery Design 一键部署具有 Intel® 加速功能的 Istio。

首先,你可以通过 (1) 的 URL 直接将 Meshery Design 导入到 Meshery 中。当然,你也可以下载这个 Meshery Design,进行修改,然后通过文件上传的方式将其导入到 Meshery 中。

导入 Meshery Design

接下来,你就可以直接在 Kubernetes 集群中部署这个 Meshery Design 了。

Deploy Meshery Design

部署完成后,你可以看到集群中已经部署了 Istio,通过查看 Istio ingressgateway pod 的信息,你会发现 Intel® AVX-512 (CryptoMB)的 Key Provider 配置已经生效。

)

使用 Meshery 部署工作负载

在之前提到的 Lifecycle 页面,你可以对某个 namespace 进行 Sidecar 注入,然后部署一些简单的示例应用,如 Istio HTTPBin:

Sidecar 注入

HTTPBin 部署

此外,你还可以在 Configuration - Applications 页面中,通过 Helm Chart,Docker Compose 或者 Kubernetes Manifest 的方式导入自己的应用。以做性能测试经常用的到 Fortio[13] 为例,我们上传了一个 fortio-server-manifests.yaml[14],通过它可以一键部署 Fortio test server 应用到集群中,以便后面做性能测试时使用:

Fortio test server

使用 Meshery 部署和连接 Prometheus 和 Grafana

在 Lifecycle 页面中,你也可以一键部署 Prometheus 和 Grafana,也可以通过右上角的设置按钮进入到 Metrics 设置页面,通过 URL 的方式连接和配置 Prometheus 和 Grafana,Meshery 则会获取对应的 Metrics 数据和图表。

Metrics 配置

使用 Meshery 进行性能测试

Meshery 提供了一个易于使用的界面,让你可以创建性能配置文件,并使用相同的配置重复运行性能测试。你甚至可以通过日历安排在特定时间运行性能测试。

值得一提的是,Meshery 采用了 Service Mesh Performance(SMP)这一中立规范标准,以捕获和描述性能测试的结果。关于 SMP 性能测试规范的详细介绍,你可以参考 SMP 官方网站[15]

进入到 Performance 页面,点击 Run Test,你就可以创建一个新的性能配置文件。以之前部署的 Fortio test server 为例,你只需要输入对应的 application url(这里省略了额外配置 virtual service,gateway,以及创建证书的过程),想要测试的请求数,QPS,测试时间,以及 Load generator。此外,你还可以通过 Advanced Options 进行更多的配置,比如上传证书等等。

性能测试文件

然后,点击 Save Profile,就可以将配置文件保存下来,以便重复使用。当然,也可以点击 Run Test,直接进行性能测试。

MeshMap 功能预览

MeshMap 是 Meshery 的一项预览扩展,它提供了两种模式:Designer 和 Visualizer,以可视化和多人协作的方式与我们的基础设施进行交互。接下来,我们将预览如何使用 Meshery MeshMap 来设计 Meshery Design,将它们部署到我们的集群,并最终通过可视化的方式验证部署。

MeshMap

在 Design 页面中,你可以通过拖放资源的方式来创建自己的 Meshery Design,或者直接使用其他人创建的 Design。例如,你可以搜索 “QAT-TLS-handshake-acceleration-for-Istio”,然后你将看到该 Design 中的所有组件。:

QAT-TLS-handshake-acceleration-for-Istio Design

你还可以将另一个 Design 合并到当前 Design 中:

Design 合并

然后就可以在集群中验证并部署当前 Design:

验证并部署 Design

最后,让我们转到 Visualize 页面,它展示出了整个集群中的资源,通过它你可以检查 Design 的部署是否成功,也可以执行一些额外的操作,例如执行性能测试、查看任意 Pod 的日志等等。

MeshMap Visualize

其他

除了上述功能,Meshery 还提供了多人协作和 Wasm Plugin 集成等功能。在 IstioCon 2023 上的演讲 Multiplayer Istio: Collaborative WASM Plugins with Intel and Layer5 - Lee Calcote & Xin Huang[16] 中, 你可以更加清晰地了解如何通过 Meshery 以多人协作的方式创建并部署带有 Wasm Plugin 的 Desgin。

总结

本文深入地介绍了 Meshery 这一款强大的云原生管理平台,它以直观和高效的方式帮助用户管理和部署服务网格和工作负载。总的来说,借助 Meshery,用户可以更轻松地掌握他们的云原生环境,并探索和扩展 Service Mesh 的可能性。无论你是云原生技术的初学者,还是经验丰富的专家,Meshery 都将是你理想的工具,帮助你更好地发挥云原生技术的潜力!

参考资料

[1]

Meshery: https://meshery.io/

[2]

包括常见的服务网格以及各种 CNCF 项目在内的超过 260 个组件: https://meshery.io/integrations

[3]

v0.7: https://meshery.io/blog/meshery-v07-release-announcement

[4]

Github: https://github.com/meshery/meshery

[5]

Layer5: https://layer5.io/

[6]

Slack 频道: https://slack.layer5.io/

[7]

Adapter: https://docs.meshery.io/concepts/architecture/adapters#meshery-adapters-for-lifecycle-management

[8]

MeshSync: https://docs.meshery.io/concepts/architecture/meshsync

[9]

https://docs.meshery.io/concepts/architecture: https://docs.meshery.io/concepts/architecture

[10]

Open Application Model: https://oam.dev/

[11]

使用 Intel® AVX-512 指令集(CryptoMB)卸载和加速 Istio 中的 TLS 握手: https://raw.githubusercontent.com/meshery/meshery.io/master/catalog/28715e69-c6c1-4f96-bfa2-05113b00bae0.yaml

[12]

使用 Intel® QAT 加速器卸载和加速 Istio 中的 TLS 握手 : https://raw.githubusercontent.com/meshery/meshery.io/master/catalog/05e97933-90a6-4dd3-9b29-18e78eb4d3f1.yaml

[13]

Fortio: https://fortio.org/

[14]

fortio-server-manifests.yaml: https://raw.githubusercontent.com/intel/istio/release-1.19-intel/intel/yaml/fortio-server-manifests.yaml

[15]

SMP 官方网站: https://smp-spec.io

[16]

Multiplayer Istio: Collaborative WASM Plugins with Intel and Layer5 - Lee Calcote & Xin Huang: https://www.youtube.com/watch?v=EeH6Tj7mT4g&list=PLj6h78yzYM2POFY48pI25ASn2K-xi-7Iu

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 k8s技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Meshery 是什么?
  • Meshery 与 Service Mesh
  • Meshery 架构
  • 使用 Meshery 可视化管理,部署和测试基础设施,服务网格和工作负载
  • MeshMap 功能预览
  • 其他
  • 总结
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档