SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

前言

当云上的应用行为不符合预期的时候,您会怎么处理呢?修改代码,打包,部署,然后查看日志?或者开远程调试端口远程调试?

这些步骤都比较繁琐。现在EDAS提供了端云联调的工具,让您在本地就可以启动应用并且能跟云端服务联调。只需三个步骤,您就可以在本地获得跟云端服务联调的能力,下面我们一起来体验吧!

打开调试开关

默认情况下,EDAS端云联调功能是关闭的,只有打开命名空间中的调试开关后,本地服务才能跟云端联调。您可以只对开发环境的命名空间开启端云联调,而对其他环境保持关闭,这样既方便本地开发,也保证其他环境服务稳定。

EDAS命名空间的默认关闭状态如下所示,打开开关即可启用此功能:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

准备可远程访问的节点

EDAS 端云联调只需一个可远程 SSH 的Kubernetes集群节点即可,如果您已具备这样的节点可跳过此节,否则可参考如下步骤来进行配置。

在 Kubernetes 集群内任意选择一个机器节点,进入 ECS 实例详情,绑定一个弹性公网 IP:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

绑定弹性公网IP后,需要设置实例安全组规则以放通 SSH 端口的流量。进入实例安全组,设置入方向规则允许访问 SSH 的22端口:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

上图中的授权对象0.0.0.0/0表示22端口对公网开放,您可以根据本地网络的公网出口IP来设置授权对象,只允许您所在的网络访问实例的22端口,进一步提升安全系数。

最后,设置实例登录密码并重启即可完成 SSH 配置:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

配置插件

现在我们来配置 IDE 插件来启用端云联调。此功能支持 Intellij IDEA 和 Eclipse 两种 IDE ,配置流程相同,下面以 Intellij IDEA 来说明配置参数。

打开 IDE 配置页面,选择 Alibaba Cloud Toolkit -> EDAS 页面,勾选 Join EDAS Registry 选项,如下所示:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

参数说明如下:

  • Region:您的Kubernetes集群及服务所在区域。
  • Namespace:EDAS命名空间。如未看到所需的命名空间,请参考上面的《打开调试开关》小节打开端云联调功能。
  • Gateway Host:可远程 SSH 的节点,请参考上面的《准备可远程访问的节点》小节来配置。
  • Username:可远程 SSH 的账号名。这里可填入一个不存在的账号,插件会进行检测,如不存在则进行创建。
  • Password:可远程 SSH 的账号密码。如果账号不存在,则插件使用此密码来创建账号。
  • Server Port:您的Spring Cloud 项目服务端口。

填入以上信息后,点击页面上的 Add SSH Rule 按钮进行配置,插件会提示授予 root 权限来进行代理配置:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

授予 root 权限,点击 Add 完成配置。至此,您已完成全部的配置流程,团队成员可直接复用上述配置的 SSH 的节点、账号和密码,无需重新配置。

启动应用进行联调

现在我们跟平常一样启动本地应用,IDE 会提示当前处于端云联调状态:
SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

在此状态下,本地服务能正常调用云端服务,云端服务也能调用本地服务。另外,您也可以使用 IDE 的调试模式来启动本地应用,端云联调同样生效。

结语及后续

在本篇中,我们介绍了EDAS端云联调工具,借助此工具本地服务能跟云端服务进行联调。端云联调对于可重现的问题来说是一个非常高效的解决方案,但不适用于如下问题:

1、已发生的问题;
2、不能稳定重现的问题;

对于这样的问题,我们有更好用的解决方案:APM监控。通过APM监控,您可以方便的查看分析系统异常、服务异常、接口异常等各种异常信息,下一讲我们将详细介绍《APM监控》,欢迎订阅。

上一篇:php 搭建mvc框架


下一篇:DataGridView中的Combobox的应用