在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服务网格进行微服务网络治理的更多相关文章

  1. 华为云Istio服务网格,让应用治理智能化、可视化

  2. Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布

    Istio是什么? Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司.它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管 ...

  3. 【译文连载】 理解Istio服务网格(第一章 概述)

    书籍英文版下载链接为 https://developers.redhat.com/books/introducing-istio-service-mesh-microservices/,作者 Burr ...

  4. 【译文连载】 理解Istio服务网格(第六章 可观测性)

    全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 ​本文目录 第6章 可观测性 6.1 分布式调用链跟踪(tracing) 6.1.1 基本概念 6.1.2 Ja ...

  5. 【译文连载】 理解Istio服务网格(第七章 安全)

    全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 第六章 可观测性 本文目录 第7章 安全 7.1 身份认证 7.1.1 Kubernetes上的Istio的身份 ...

  6. 初识 Istio - 服务网格管理工具

    What is a service mesh(服务网格)? 微服务在国内流行已经多年了,大多数公司选择了基于容器化技术( Docker )以及容器编排管理平台 ( Kubernetes )落地微服务 ...

  7. Istio(十一):向istio服务网格中引入虚拟机

    目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...

  8. 【译文连载】 理解Istio服务网格(第三章 流控)

    第3章 流控.............................................................................................. ...

  9. 【译文连载】 理解Istio服务网格(第二章 安装)

    全书目录 第一章 概述 本文目录 1.命令行工具安装 2. Kubernetes/OpenShift安装 3. Istio安装 4.示例Java微服务安装 4.1 源码概览 4.2 编译和部署cust ...

  10. 【连载】微服务网格Istio(一)

    Istio基础 服务网格是用于描述构成应用程序的微服务网络以及应用之间的交互,服务网格的功能包括服务发现.负载均衡.故障恢复.指标和监控以及更加复杂的运维工作,例如A/B测试.金丝雀发布.限流.访问控 ...

随机推荐

  1. mapreduce压缩

    这是mr的一种优化策略,通过压缩编码对mapper或者reducer的输出进行压缩,以减少磁盘io,提高mr运行速度(但也相应增加了cpu运算负担) 特性: 1.mr支持将map输出的结果或者redu ...

  2. 微信小程序day04基础加强

    一.自定义组件 1.1 组件的创建与引用 首先创建组件 然后我们组件的引用分为局部和全局引用 局部引用就是在当前页面能使用,在当前页面的json文件里面配置 全局引用同样的道理,注意跟page等是同级 ...

  3. Docker部署JavaWeb项目(Tomcat环境)

    一.环境准备 1.首先准备一台Centos 7的虚拟机并安装Docker. 2.准备好Tomcat.JDK的安装包以及该java项目的war包. 二.编写Dockerfile Dockerfile是一 ...

  4. 运行前端React框架出现node Error: bind EADDRINUSE null的解决方法

    运行前端React代码时,出现这样的错误: node Error: bind EADDRINUSE null 后来发现端口号冲突,换个端口号后问题就可以解决了.

  5. redis基本数据结构-列表

    redis基本数据结构-列表list 特性 每个列表键最多存储 2^32 - 1个字符串元素 元素在列表中有序 元素在列表中不唯一 向列表左侧添加元素 lpush key value lpush nu ...

  6. 2. CMake 的简单使用

    2. CMake 的简单使用 我们创建一个工程目录,在里面定义一些简单的加减乘除运算,然后定义一个 main.cpp 的文件: 结构如下: tree /f .\ D:\SOURCE\CMAKE_PRO ...

  7. AI驱动音乐创新,网易数帆X云音乐刷新MIREX世界纪录 网易数帆 网易数帆

    在近期揭榜的2021国际音频检索评测大赛(MIREX)上,网易数帆易智语音团队携手网易云音乐音视频实验室,凭借生产级AI技术创新能力,在歌词识别和歌单识别两个赛道大幅打破世界纪录夺得冠军. MIREX ...

  8. MySql创建事件、计划、定时运行

    CREATE EVENT IF NOT EXISTS check_timeout_eventON SCHEDULE EVERY 30 MINUTEDOBEGIN UPDATE safetyApp_in ...

  9. 基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)

    \n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件 ...

  10. 操作系统|SPOOLing(假脱机)技术

    什么是假脱机技术,它可以解决什么问题? 什么是脱机技术 要回答什么是假脱机技术,首先我们需要知道什么是脱机技术.<计算机操作系统(第四版)>写道: 为了解决人机矛盾及CPU和I/O设备之间 ...