使用Istio服务网格进行微服务网络治理
在Rainbond中,用户可以对不同的应用设置不同的治理模式,即用户可以通过切换应用的治理模式,来按需治理应用,这样带来的好处便是用户可以不被某一个ServiceMesh框架所绑定,且可以快速试错,能快速找到最适合当前业务的ServiceMesh框架。
在当前版本Rainbond中,Istio以"插件"的模式存在,当用户需要使用Istio治理模式时,如果未安装Istio的控制平面,则会提示需要安装对应的控制平面。因此在使用前需要部署Istio的控制平面,控制平面在一个集群中只需安装一次,它提供了统一的上层运维入口,将用来管理工作在Istio治理模式下的服务,完成配置下发等功能。结合Rainbond现有的helm安装方式,我们可以便捷的安装好对应的组件。
部署Istio控制平面
准备工作
- 创建团队
在 Rainbond v5.5.0 版本中,我们支持了用户在创建团队时指定命名空间,由于默认helm安装的命名空间为 istio-system ,所以为了减少用户配置,我们首先需要创建出对应的团队。如下图所示,团队英文名对应的则是该团队在集群中的命名空间。此处填写 istio-system 。

- 对接商店
Rainbond支持基于helm直接部署应用,所以接下来对接Rainbond官方helm仓库,后续基于Helm商店部署Istio即可, 在应用市场页面,点击添加商店,选择helm商店,输入相关信息即可完成对接。
商店地址:https://openchart.goodrain.com/goodrain/rainbond

安装 Istio 控制平面
目前Rainbond官方Helm商店提供的Istio版本为1.11.4,根据 Istio官方文档,该版本要求的Kubernetes集群的版本为:1.19, 1.20, 1.21, 1.22,如果您的集群是按照Rainbond官方文档部署则已满足该版本要求。
- 安装 base 应用
选择helm商店中的base应用进行部署,选择之前创建已创建好的团队,该应用主要部署了Istio相关的集群资源和 CRD 资源。

点击确定后进入base应用界面,无需修改配置,直接点击页面下方安装按钮即可,待页面上方出现已部署按钮即表示安装完成。

- 安装 istio-discovery
同上述base应用一样,选择正确的团队,安装 istio-discovery应用,有了这两个应用,就可以拥有 Istio 基础的治理能力了。
- 安装 prometheus
在Istio中,各个组件通过暴露HTTP接口的方式让Prometheus定时抓取数据(采用了Exporters的方式)。所以Istio控制平面安装完成后,需要在istio-system的命名空间中部署Prometheus,将Istio组件的各相关指标的数据源默认配置在Prometheus中。
同上述base应用一样,选择正确的团队,安装 Prometheus应用。
- 安装kiali
Istio为我们查看相关服务与配置提供了统一化的可视化界面 Kiali ,能够在可视化界面中展示服务拓补关系,进行服务配置。
同上述base应用一样,选择正确的团队,安装 kiali-operator 应用。
安装过程将自动创建Service,通过Rainbond平台第三方组件的形式可将 kiali 的访问端口暴露出来。如下图所示:

| 配置项 | 值 |
|---|---|
| 组件名称 | 自定义 |
| 组件英文名称 | 自定义 |
| 组件注册方式 | Kubernetes |
| Namespace | istio-system |
| Service | kiali |
在端口界面添加访问端口,添加以后打开对外服务使用生成的网关策略即可进行访问

kiali登录时需要身份认证token,使用以下命令获取token:
kubectl describe secret $(kubectl get secret -n istio-system|grep istiod-token |awk '{print $1}') -n istio-system
没有kubectl命令时参考命令行工具文档进行安装。
获取到token登陆至kiali可视化界面,到此完成Istio控制平面的部署。

使用 Istio 网络治理
1. 切换治理模式
我们以SpringBoot后台管理系统若依为例,如下图所示,用户可以先从开源应用商店安装一个若依SpringBoot应用,版本选择3.6.0,点击治理模式切换,选择Istio治理模式。

在点击切换为Istio治理模式后,会需要用户手动设置内部域名,此处的内部域名将会是该组件在Kubernetes集群中的service名称,在同一个团队下唯一。这里我们修改为可读性较高的内部域名。

2. 修改配置文件
在这一步完成后,我们还需要进入 ruoyi-ui 挂载一个新的配置文件。这主要是因为默认情况下,ruoyi-ui 的nginx配置文件 web.conf 中后端服务地址为 127.0.0.1,在之前使用 Rainbond 内置 ServiceMesh 模式时,该地址可用。
但使用 Istio 治理模式时,组件间通过内部域名进行通信,因此需要通过挂载配置文件的方式修改对应的代理地址,ruoyi-ui 的配置文件可以通过右上方的 Web终端 访问到容器中,复制 /app/nginx/conf.d/web.conf 这个文件的内容。修改代理地址后保存,如下图所示。之前我们设置了控制台的内部域名为 ruoyi-admin,所以这里替换为 ruoyi-admin。

3. 重启应用
在完成以上两步后,我们需要重启整个应用。在启动应用后,进入组件页面查看,可以看到每个组件都有一个类似的Sidecar容器,这就是Istio的数据平面,在应用切换为Istio治理模式以后,该应用下的所有组件都会自动注入对应的Sidecar容器,不需要用户额外设置。
至此,该应用已纳入Istio治理范围,用户如果需要对该应用有更多的配置,则可以参考 Istio官方文档 进行扩展。

4.服务可观测性拓展
访问kiali可视化界面,在Applications一栏,选中应用所在的命名空间,就可以看到我们之前创建的应用,点击进入,可以看到如下的流量路线。

在 Graph 一栏,也可以看到对应的应用内的流量请求。更多的配置及相关功能参考 Kiali官方文档。

关于Rainbond
Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。
Github:https://github.com/goodrain/rainbond
官网:https://www.rainbond.com
微信群:请搜索添加群助手微信号 wylhzmyj
公众号:请搜索并关注“Rainbond”公众号
使用Istio服务网格进行微服务网络治理的更多相关文章
- 华为云Istio服务网格,让应用治理智能化、可视化
- Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
Istio是什么? Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司.它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管 ...
- 【译文连载】 理解Istio服务网格(第一章 概述)
书籍英文版下载链接为 https://developers.redhat.com/books/introducing-istio-service-mesh-microservices/,作者 Burr ...
- 【译文连载】 理解Istio服务网格(第六章 可观测性)
全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 本文目录 第6章 可观测性 6.1 分布式调用链跟踪(tracing) 6.1.1 基本概念 6.1.2 Ja ...
- 【译文连载】 理解Istio服务网格(第七章 安全)
全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 第六章 可观测性 本文目录 第7章 安全 7.1 身份认证 7.1.1 Kubernetes上的Istio的身份 ...
- 初识 Istio - 服务网格管理工具
What is a service mesh(服务网格)? 微服务在国内流行已经多年了,大多数公司选择了基于容器化技术( Docker )以及容器编排管理平台 ( Kubernetes )落地微服务 ...
- Istio(十一):向istio服务网格中引入虚拟机
目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...
- 【译文连载】 理解Istio服务网格(第三章 流控)
第3章 流控.............................................................................................. ...
- 【译文连载】 理解Istio服务网格(第二章 安装)
全书目录 第一章 概述 本文目录 1.命令行工具安装 2. Kubernetes/OpenShift安装 3. Istio安装 4.示例Java微服务安装 4.1 源码概览 4.2 编译和部署cust ...
- 【连载】微服务网格Istio(一)
Istio基础 服务网格是用于描述构成应用程序的微服务网络以及应用之间的交互,服务网格的功能包括服务发现.负载均衡.故障恢复.指标和监控以及更加复杂的运维工作,例如A/B测试.金丝雀发布.限流.访问控 ...
随机推荐
- ARC 170_A 题解
AT_arc170_a [ARC170A] Yet Another AB Problem 题解 这道题做了我七天 (同时也是我第一到通过的 ARC 题) 太酷了 其实还是比较好理解的 原题题干 原题题 ...
- 李沐多模态串讲视频总结 ALBEF VLMo BLIP CoCa BEITv3 模型简要介绍
开场 多模态串讲的上篇是比较传统的多模态任务 多模态最后的模态交互很重要 传统的缺点是都用了预训练的目标检测器,训练和部署都很困难. ViLT 把预训练的目标检测器换成了一层的 Patch Embed ...
- todo高通Android UEFI中的LCD分析(1):启动流程分析
# 高通Android UEFI中的LCD分析(1):启动流程 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进 ...
- 机器学习(三)——K最临近方法构建分类模型(matlab)
K最临近(K-Nearest Neighbors,KNN)方法是一种简单且直观的分类和回归算法,主要用于分类任务.其基本原理是用到表决的方法,找到距离其最近的K个样本,然后通过K个样本的标签进行表决, ...
- 2.上传hdfs系统:将logs目录下的日志文件每隔十分钟上传一次 要求:上传后的文件名修为:2017111513xx.log_copy
先在hdfs系统创建文件夹logshadoop fs -mkdir /logs 编辑shell脚本 filemv.sh #!/bin/bashPATH=/usr/local/bin:/bin:/usr ...
- Vue 的父组件和子组件生命周期钩子函数执行顺序?
https://www.cnblogs.com/thinheader/p/9462125.html 参考连接 Vue 的父组件和子组件生命周期钩子函数执行顺序可以归类为以下 4 部分: 加载渲染过程 ...
- Java uuid生成随机32位
import java.util.UUID; /** * @ClassName:UuidUtils * @Description:uuid工具类 * @Author:chenyb * @Date:20 ...
- 基于Java+Spring+Vue仓储出入库管理系统设计和实现
\n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 网络的广泛应用给生活带来了十分的便利.所以把仓储出入库管理与现在网络相结合,利 ...
- oeasy教您玩转python - 008 - # ascii码表
ASCII 码表 回忆上次内容 通过 help()可以从 python 命令行模式进入到帮助模式 通过 q 退出 ord(c)和 chr(i) 这是俩函数 这俩是一对,相反相成的 ord 通过字符 ...
- oeasy教您玩转vim - 81 - # 宏macro的进阶
宏的进阶 macro 回忆 关于宏,上次有4个要点 qa 开始录制宏 q 结束录制宏 @a 应用宏 qA 追加录制宏 甚至可以编辑宏 "ap 把宏作为文本粘贴出来 编辑之后 " ...