模式切换

优质
小牛编辑
142浏览
2023-12-01

服务模式切换比较麻烦,需要您的Kubernetes支持,目前我们使用的是istio的方案,也就是说您需要在你的kubernetes上安装istio的相关服务,并且在我们的模版管理将istio所需要的几个模版配置上。才能开启此功能。

如果您没有安装Istio,可跳过此章。

依赖

"模版管理"菜单找到GatewayVritualServiceInitContainerIstioProxy这几个模版,根据自己环境的情况进行调整。

  • Gateway: 本平台设计的模式是一个Namespace所对应一个Gateway,多个Namespace空间就会有多个Gateway,VirtualService选择的是本Namespace下的Gateway。

  • VirtualService: 在生成应用的对外访问入口时与Ingress一起生成。

使用过Istio的同学应该都知道,要实现Istio所提供的相关功能需要在Pods里注入两个容器,一个是proxy_init,另一个是proxyv2

  • InitContainer: 模版是是初始化设置的yaml,比如将流量通过iptables的方式转发给 proxy
  • IstioProxy: 模版就是将pods的所有流量代理的yaml

流程

下图是我们架构流量进入到我们容器所图:

  • DNS 将域名解析到VIP
  • VIP 将80的流量转发边缘节点的31380端口(这个是IstioIngressGateway控制器的Service的NodePort)
  • 前面我们所说过每个Namespace都会有至少一个对应的Gateway,Gateway的hosts就是xxx.{namespace}.xxx.com
  • VirtualService里的destination.host 就是Service的名称。

以上是kplcloud平台的流程,如果您有需要调整的,只需要修改模版就好,不需要调整代码。

一键切换

如下图,在应用详情页面选择“模式”按钮,在弹出的对话框中选择"Service Mesh"选项目,后点击提交后Pods会自动重起。

你需要在app.cfg文件开起ServiceMesh功能

[server]
service_mesh = true