飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

使用Istio服务网格进行微服务网络治理

时间:2021-12-16  作者:wiseo  

在Rainbond中,用户可以对不同的应用设置不同的治理模式,即用户可以通过切换应用的治理模式,来按需治理应用,这样带来的好处便是用户可以不被某一个ServiceMesh框架所绑定,且可以快速试错,能快速找到最适合当前业务的ServiceMesh框架。

在当前版本Rainbond中,Istio以"插件"的模式存在,当用户需要使用Istio治理模式时,如果未安装Istio的控制平面,则会提示需要安装对应的控制平面。因此在使用前需要部署Istio的控制平面,控制平面在一个集群中只需安装一次,它提供了统一的上层运维入口,将用来管理工作在Istio治理模式下的服务,完成配置下发等功能。结合Rainbond现有的helm安装方式,我们可以便捷的安装好对应的组件。

部署Istio控制平面

准备工作

  • 创建团队

在 Rainbond v5.5.0 版本中,我们支持了用户在创建团队时指定命名空间,由于默认helm安装的命名空间为 istio-system ,所以为了减少用户配置,我们首先需要创建出对应的团队。如下图所示,团队英文名对应的则是该团队在集群中的命名空间。此处填写 istio-system

image-20211212203716453

  • 对接商店

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

商店地址:https://域名/goodrain/rainbond

image-20211212203208140

安装 Istio 控制平面

目前Rainbond官方Helm商店提供的Istio版本为域名.4,根据 Istio官方文档,该版本要求的Kubernetes集群的版本为:域名, 域名, 域名, 域名,如果您的集群是按照Rainbond官方文档部署则已满足该版本要求。

  • 安装 base 应用

选择helm商店中的base应用进行部署,选择之前创建已创建好的团队,该应用主要部署了Istio相关的集群资源和 CRD 资源。

image-20211212204419466

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

image-20211212204419466

  • 安装 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 的访问端口暴露出来。如下图所示:

image-20211212212924071

配置项
组件名称 自定义
组件英文名称 自定义
组件注册方式 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配置文件 域名 中后端服务地址为 127.0.0.1,在之前使用 Rainbond 内置 ServiceMesh 模式时,该地址可用。

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

3. 重启应用

在完成以上两步后,我们需要重启整个应用。在启动应用后,进入组件页面查看,可以看到每个组件都有一个类似的Sidecar容器,这就是Istio的数据平面,在应用切换为Istio治理模式以后,该应用下的所有组件都会自动注入对应的Sidecar容器,不需要用户额外设置。

至此,该应用已纳入Istio治理范围,用户如果需要对该应用有更多的配置,则可以参考 Istio官方文档 进行扩展。

4.服务可观测性拓展

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

image-20211212213849724

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

关于Rainbond

Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。

已有上百家企业使用Rainbond管理关键业务场景,涵盖制造、能源、高校、公安、、交通、军工等十几个行业。客户有 京东方、百胜中国、中航信、中公高科等大型企业。

图片

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。