使用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测试.金丝雀发布.限流.访问控 ...
随机推荐
- .NET 文件上传服务设计
.NET文件上传服务设计 前言 在b站学习了一个后端小项目,然后发现这个文件上传设计还挺不错,来实现讲解一下. 项目结构如下: 基于策略+工厂模式实现文件上传服务 枚举 在Model层创建即可 pub ...
- 2-SET详解
前置知识 SET问题的标准定义:在计算机科学中,布尔可满足性问题(有时称为命题可满足性问题,缩写为SATISFIABILITY或SAT)是确定是否存在满足给定布尔公式的解释的问题.(全是废话) 说人话 ...
- 基于 TI Sitara系列 AM64x核心板——程序自启动说明
前 言 本文主要介绍AM64x的Cortex-A53.Cortex-M4F和Cortex-R5F核心程序自启动使用说明.默认使用AM6442进行测试演示,AM6412测试步骤与之类似. 本说明文档适用 ...
- CF1864F 题解
写了一小时结果被卡常了(笑. 考虑新加入一个数什么时候会产生贡献,或者什么时候不会产生贡献. 发现当一个数的位置与他前一次出现时的位置所构成的区间内假若有一个比它小的数那么就不得不对这个数新进行一次操 ...
- Me-and-My-Girlfriend-1靶机渗透流程
Me-and-My-Girlfriend-1 靶机下载 Description: This VM tells us that there are a couple of lovers namely A ...
- 洛谷P2845
蓝题搜索,模拟上的细节稍微有点麻烦 #include<iostream> #include<utility> #include<vector> #include&l ...
- 全网最适合入门的面向对象编程教程:02 类和对象的Python实现-使用Python创建类
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类 摘要 本文主要介绍了串口通信协议的基本概念.串口通信的基本流程.如何使用 Python 语言创建一个 ...
- 内部网关协议RIP
RIP协议的特点:仅和相邻路由器交换信息:交换自己现在的路由表:按固定的时间周期. 对每一个相邻路由器发送的RIP报文,执行以下步骤: 1.对地址为x的相邻路由器发来的报文,修改此报文中的所有项目,把 ...
- 各类配置文件(DNS, Firefox,Edge)
DNS配置 腾讯DNS: 119.29.29.29 2402:4e00:: 2402:4e00:1:: 阿里云: 223.5.5.5 223.6.6.6 2400:3200::1 2400:3200 ...
- iOS开发基础135-Core Data
Objective-C (OC) 中使用 Core Data 是iOS应用开发中管理模型层对象的一种有效工具.Core Data 使用 ORM (对象关系映射) 技术来抽象化和管理数据.这不仅可以节省 ...