最近,开源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 服务。

执行如下命令配置 productpage-v1 服务。

打开浏览器,输入 http://$IP:10501/productpage,可以看到如下结果,也即bookinfo应用发布成功。刷新页面,可以看到review评分的变化。

为了测试数据平面可以动态更新配置,如下更新 bookinfo/reviews 服务的本地端口,并执行。

查看对应数据平面服务的日志,可以看到新的配置更新生效。但是这里的问题在于 productpage 实例本身仍然访问的是之前的 10504 端口,而 Sidecar 此时已无法实现该端口的转发,会导致服务本身的异常。所以总的来说,在 Kuma 的 Universal 模式下,一种比较好的实践是事先做好应用、服务、实例、端口等的规划,升级更新会导致服务的短暂中断。

总结

Kuma 的优势

  1. 轻量、轻量、轻量,重要的事情说三遍,几个可执行程序就能很方面的部署服务网格基础架构;

  2. 通过显而易见的方式支持多个Mesh,提供比较好的隔离性。

未解决的问题

  1. 不支持TrafficRoute、TrafficTracing等重要的功能,所以基本上Kuma还处于不可用状态。

  2. 双向认证只支持内建的自签名证书,且只能是在Mesh范围内进行配置。

  3. 由于不支持类似Istio中的Ingress、Egress等功能,当开启双向认证时,无法将服务对外发布出去,内部服务也无法访问外部的服务。

  4. 为了支持在Universal模式下同时启动多个Envoy,不支持Envoy的热重启。不过,由于xDS配置都是热更新,所以影响并不大。

  5. 在Universal模式下,不支持服务注册和发现,用户需要逐个为服务配置依赖应用的outbound入口,而且由于没有集成DNS,服务间访问需要指定到IP:Port,而不是像Istio一样指定Service Name即可。在Kubernetes模式下,则是依赖了Service的机制,可以将Hostname或Service Name解析为ClusterIP,随后发起的HTTP/TCP请求进入到Sidecar中以后再进行转发。

  6. 服务启动的过程中尽量不要访问依赖的服务,此时可能由于Sidecar及数据平面未配置好,导致服务启动失败。

  7. 查看Envoy的config_dump可以看到,当前都是以TCP连接的模式进行管理,完全没有发挥出Envoy的强大能力。

  8. Universal模式下配置数据平面对象、启动Sidecar服务等方式都是需要管理员手工命令操作,更方便和人性化的包装也是必须的。

经过这次测试,我们可以看到 Kuma 当前还处于项目的初始阶段,但总的来说技术方向还是不错的。它不像 Istio 一下子就上一套大而全的功能,学习曲线来说比较平缓,可以让大家很好的理解服务网格技术能给大家带来的便利,以及其中存在的技术难点。

当前阻碍服务网格技术应用的原因之一是对历史遗留系统的支持。通常来说,我们需要对老的系统经过两次改造,第一次是容器化,使之能够运行在Kubernetes上,第二次则是对RPC框架的拆解或完全替换。

如果服务网格能够支持非容器场景,则至少工作还能减少一半。我们知道Istio在从v1.3版本开始,开始支持网格扩展,也即将虚拟机或裸金属主机集成到部署在Kubernetes中的Isito集群中。当前支持两种方式,一种是单网络方式,也即虚拟机或裸金属主机通过VPN或VPC连接至Kubernetes内部,另外一种是多网络下通过入口网关实现通讯集成。目前来看,由于Istio本身对Kubernetes的依赖比较重,再加上Istio本身的其它功能都已经相对比较完善,要想增加网格扩展的功能,工作量是比较大的,所以这两种方式都还处于开发状态。

相对来说,Kuma则提供了一种在虚拟机或裸金属主机场景下使用服务网格的新思路,虽然当前功能完成度相对太低,不过还是值得大家持续关注。

转载于:https://www.cnblogs.com/bocloud/p/11557512.html

使用Bookinfo应用测试Kuma服务网格相关推荐

  1. 低复杂度 - 服务网格的下一站

    译者: 作为一个曾经在新造车公司的基础架构团队任职,为支持公司的"互联网基因"和"数字化转型"落地了云原生基础设施平台,并在尝试采用服务网格未成的我来说,看到这 ...

  2. kubesphere服务网格servicemesh(Istio)示例:部署 Bookinfo 和管理流量

    Istio,作为一种开源服务网格解决方案,为微服务提供了强大的流量管理功能.以下是 Istio 官方网站上关于流量管理的简介: Istio 的流量路由规则可以让您很容易的控制服务之间的流量和 API ...

  3. Istio服务网格进阶②:在Istio服务网格中部署Bookinfo在线书店微服务项目

    在Istio服务网格中部署Bookinfo在线书店微服务项目 文章目录 在Istio服务网格中部署Bookinfo在线书店微服务项目 1.在线书店微服务项目介绍 2.在线书店微服务系统架构图 3.部署 ...

  4. 基于 Wasm 和 ORAS 简化扩展服务网格功能

    作者 | 王夕宁  阿里云高级技术专家 来源 | 阿里巴巴云原生公众号 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中 ...

  5. 微服务的下一步,离不开服务网格

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 软件行业走了很长一段路,在整个过程中,软件体系结构也已经发展了很多.经历了 ...

  6. Beyond Istio OSS——Istio服务网格的现状与未来

    作者:宋净超(Jimmy Song),原文地址:https://jimmysong.io/blog/beyond-istio-oss/ 本文根据笔者在 GIAC 深圳 2022 年大会上的的演讲< ...

  7. 【Kubernetes 企业项目实战】07、最新一代微服务网格 Istio 入门到企业实战(下)

    目录 一.istio 核心资源解读 1.1 Gateway 总结: 1.2 VirtualService 1.2.1 VirtualService 主要由以下部分组成 1.2.2 virtualser ...

  8. ZEGO 后台超能力|服务网格的落地探索和实践

    ​​​​​​​ 服务网格把微服务治理能力下沉到基础设施层,可独立升级,支持异构语言接入,是云原生体系下重要的微服务技术,被广泛认为有较好的发展前景. 近几年,国内各大公司在大规模生产中落地服务网格,即 ...

  9. K8s:渐进式入门服务网格 Istio (一)

    写在前面 分享一些 Istio 的学习笔记 博文内容涉及: istio 下载安装 一个 Demo 运行 什么是 istio,服务网格等概念介绍 istio 架构组成,应用场景等 理解不足小伙伴帮忙指正 ...

  10. istio简介和基础组件原理(服务网格Service Mesh)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 微服务对于每个功能的开发细化了,但是对与系统的管理复杂度增强了,尤其是网络流量的管理. 试想一下:黑名单,导流,加密,访问控制,流量监控,熔断,限速, ...

最新文章

  1. 中国移动OnetNet云平台 使用以太网传输数据流步骤
  2. taro 打包微信小程序运行失败(一)
  3. webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!
  4. c语言链表写贪吃蛇思路,C语言构建的链表贪吃蛇
  5. React 篇 Search Bar and content Table
  6. java接收二进制数据_java-从套接字读取二进制数据
  7. 1.3编程基础之算术表达式与顺序执行 02 计算(a+b)*c的值
  8. 微软开源实验环境构建工具 SimuLand,模拟攻击者知识技能
  9. spring学习(五)—AOP相关术语
  10. 给Emacs安装一个脚踏板: 用Windows/Menu键作为key modifier
  11. 【路径规划】基于matlab A星+改进A星的路径规划【含Matlab源码 225期】
  12. 安装Genymotion步骤,启动模拟器时显示CPU不支持虚拟化—解决方法:惠普主机开启VT虚拟化CPU
  13. 计算机开启后显示器黑屏,电脑打开后显示器黑屏怎么办
  14. linux temp文件夹在哪_linux基础知识笔记(第一天)
  15. 圣诞祝福网页_意派Epub360丨圣诞营销H5的多种趣味玩法(案例+模板)
  16. Flask构建微信订餐小程序②-全站统计
  17. WSUS管理控制台打开报错
  18. 制作PPT的5大秘密武器
  19. 2021年中国在线教育行业投融资现状及未来发展趋势分析[图]
  20. window安装kubectl管理远程k8s集群

热门文章

  1. 修改windows软件图标
  2. linux php muma,php实现Linux服务器木马排查及加固功能
  3. BBS.peidy.com版本
  4. 网络流 24 题, 餐巾计划问题 (最小费用流 )
  5. Oracle 应用篇+Oracle Siebel CRM
  6. Branch Prediction Is Not A Solved Problem:Measurements, Opportunities, and Future Directions(IISWC)
  7. 前端接收java后端返回base64二进制流下载mp4
  8. python统计元音字母出现的次数,python统计元音字母个数 python输出元音字母
  9. Week7 B - TT 的旅行日记
  10. 解决linux 上网速度慢的问题