如何在OCP Pod运行的WebSphere Liberty中启用TLS握手详细调试
你在传统WebSphere Application Server中用的两个JVM调试参数本身在Liberty中完全通用,不需要做参数调整,区别只是Liberty没有TWAS的单元、节点层级控制台配置入口,在OCP Pod部署场景下选下面任意一种方式配置即可:
方式1:通过jvm.options配置(通用持久化配置方案)
WebSphere Liberty官方容器镜像默认会读取/config/jvm.options文件中定义的JVM启动参数,你只需要把两行调试参数写入该文件即可:-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager -Djava.security.debug=access:stack不需要重新构建镜像的话,可以在OCP中创建ConfigMap存储这个jvm.options文件,再通过Volume挂载到目标Pod的
/config/jvm.options路径,重启Pod后配置就会生效。方式2:通过JAVA_TOOL_OPTIONS环境变量配置(适合临时调试场景)
Liberty官方镜像支持读取JAVA_TOOL_OPTIONS环境变量传入自定义JVM参数,你可以直接在对应工作负载(Deployment/StatefulSet)的容器配置段添加环境变量:- 变量名:
JAVA_TOOL_OPTIONS - 变量值:
-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager -Djava.security.debug=access:stack
保存工作负载配置后OCP会自动滚动重启关联Pod,重启完成即生效,不需要进容器手动修改配置。
- 变量名:
方式3:Open Liberty Operator部署场景适配
如果你是通过Operator部署Liberty,不需要手动修改底层Deployment,直接在OpenLibertyApplication自定义资源(CR)的spec.env段添加上面提到的JAVA_TOOL_OPTIONS环境变量即可,Operator会自动完成Pod配置同步和滚动重启。
注意:该调试级别会输出全量TLS握手、密钥管理器、信任管理器的校验细节,日志量非常大,问题排查完成后请及时移除配置,避免日志量暴涨占用过多存储,或是带来额外的性能开销。
配置生效后,TLS调试日志会直接输出到容器标准输出流,直接通过oc logs <liberty-pod名称> -f命令即可实时查看,不需要登录容器查找日志文件。
内容的提问来源于stack exchange,提问作者Marcer

