Layer5如何让Kubernetes和服务网格对开发者更友好
当一个项目扩展到十几个微服务时,基础设施管理就变成了一团乱麻。开发者写代码,运维人员努力理解清单文件(manifests),而当故障发生时,大家互相推诿。这是一个常见的情况,但并不令人愉快。
在某次偶然的机会中,我发现了Layer5仓库。从本质上讲,它是一个组织的旗舰项目,该组织开发了一整套用于处理Kubernetes和服务网格的开源工具。他们的主要理念是使基础设施可视化,并让开发者能够通过可视化方式控制基础设施,而无需手动重写数百行YAML。
项目中包含哪些内容
Layer5仓库作为多个独立工具的展示和集散中心。每个工具都针对基础设施栈中的特定任务。
Meshery
这是一个用于Kubernetes和服务网格(如Istio、Linkerd或Consul)的管理仪表板。该工具可以连接到集群、读取当前拓扑结构、根据最佳实践验证配置,以及测试网络性能。
Kanvas
一个可视化基础设施编辑器。你不需要在终端中编辑清单文件,而是在交互式画布上构建架构。图表与集群实时同步,因此更改会立即对整个团队可见。
Nighthawk
用于OSI模型第7层(HTTP、HTTPS、HTTP/2)的负载测试工具。它最初用C++编写,是Envoy的负载生成器,Layer5团队将其集成到他们的延迟和吞吐量测试场景中。
Cloud Native Catalog和Patterns
一个用于Kubernetes的现成架构模式目录。如果你需要设置金丝雀发布或在服务版本之间分流流量,可以使用目录中经过验证的模板,而无需重复造轮子。
Service Mesh Performance和Sistent
SMP规范标准化了服务网格性能指标的收集,以便不同环境下的测试结果能够正确比较。而Sistent是他们自己的设计系统和React组件库,公司所有产品的Web界面都基于此构建。
底层工作原理
该项目的大多数服务都是用Go和JavaScript编写的。对于集群集成,使用Meshery Operator,它被安装在Kubernetes内部并运行MeshSync组件。
MeshSync监听Kubernetes API事件并将资源状态转发到Meshery服务器。整个技术栈采用Apache 2.0许可证,因此代码完全开放,可供修改和本地部署。
你可以通过一条命令在本地机器上安装和启动Meshery CLI工具:
curl -L https://meshery.io/install | PLATFORM=kubernetes bash -
mesheryctl system start
启动后,会打开一个本地Web界面,你可以在其中选择所需的Service Mesh适配器、连接现有的kubeconfig,并开始分析流量。
实际应用场景
在哪些情况下Layer5工具包实际上节省了时间:
- 在采用前比较Service Mesh解决方案。如果你的团队正在Istio和Linkerd之间做出选择,基于Nighthawk的内置基准测试有助于运行相同的合成负载,并比较内存消耗与网络延迟。
- 新开发者入职。Kanvas中的可视化地图帮助新人更快地理解服务是如何连接的,而无需阅读Confluence中过时的图表。
- 配置审计。模式目录会指出清单文件中缺少资源限制的位置,或mTLS安全策略配置错误的位置。
- 云技术培训。内置的Layer5 Academy平台包含交互式练习,你可以在其中安全地练习,而不会冒风险搞垮生产集群。
值得一试吗
Layer5原来是一个内容丰富的项目,包含大量子项目。一方面,由于实体众多,学习曲线可能看起来较陡:你需要弄清楚Meshery在哪里结束,Kanvas从哪里开始。另一方面,如果你的团队在维护Kubernetes上的微服务方面遇到了瓶颈,那么架构的可视化方法将消除一些日常繁琐工作。
最简单的入门方式是在本地Minikube或k3s上启动 mesheryctl。这样你就能立即看到可视化如何简化堆栈中网络问题的诊断。
相关项目