最近,开源API管理平台Kong服务供应商近日放出了新的开源项目Kuma。本文尝试将 bookinfo 应用部署在 Kuma 网格中,以便帮助大家更好的理解 Kuma 项目。
Kuma是能用于管理服务网络(Service Mesh)的通用控制平台,通过无缝管理4-7层的网络流量、微服务与API,来解决第一代服务网络的技术限制。
Kuma 强调其易用性,能确保底层网络的安全性与可观察性,而且即便其提供高级简单的控制界面,但是使用者仍然可以进行更高级的配置。Kuma 集合了快速数据平台与进阶控制平台,让使用者可用简单的指令,就能设置权限、公开指标以及配置路由规则。
另外,Kuma 采用软件定义安全性,为所有4层流量启用 mTLS,并提供高精细度的流量控制功能,强化4层路由功能,而 Kuma 也能够快速实现追踪与日志记录功能,让用户分析指标进行错误排查。Kuma 可在任意的平台上执行,包括 Kubernetes、虚拟机器、容器、裸机和传统环境,使整个企业组织都能实践原生云端应用。
Kuma 利用开源项目 Envoy 开发而成,而 Envoy 则是为原生云端应用程序设计的代理,官方提到,Envoy 目前已经是边缘代理的标准,与服务网络一起,成为原生云端系统的重要实现方法,因为对于越大规模的微服务应用来说,监控、安全性和可靠性就更显得重要。
本文中使用的代码可以在 Github 找到(https://github.com/waret/kuma-tutorial)。
首先使用如下命令配置控制平面,这里是在控制平面中创建了一个新的名为 bookinfo的Mesh。
下图为 Bookinfo 应用的架构图,其中包含 productpage、reviews、details、ratings 等4个服务,另外 reviews 服务提供了三个版本。在这次测试中,我们为每个版本部署一个实例。
在数据平面,为了能在一个服务器中部署所有6个实例,这里为了避免冲突,需要考虑为各个实例合理分配 inbound 和 outbound 的端口,如下所示。
需要注意的一点,kuma-v0.1.2 版本中不支持在同一宿主机上部署多个 Sidecar,但是最新的 master 分支上已经做了修改,因此本文后面使用的 kuma 相关命令行程序都是从 master 分支全新编译出来的。
执行如下命令配置 ratings-v1 服务。
执行如下命令配置 details-v1 服务。
这里对 Istio 项目中的 bookinfo 代码进行了修改,以支持配置 RATINGS_PORT 参数,包括下面的 productpage 服务。执行如下命令配置 reviews-v1 服务。
执行如下命令配置 reviews-v2 服务。
执行如下命令配置 reviews-v3 服务。