Intellij-Idea中远程调试Openshift应用

Remote Debugging of Openshift Application in Intellij-Idea

我在 openshift 远程集群上有一个 java 应用程序 运行,我想使用 Intellij-Idea 从我的本地计算机调试该应用程序。该应用程序由另一个远程 jenkins 服务器上的 Jenkinsfile 构建(gradle 构建,docker 构建并推送到 openshift,它会自动部署)。

Dockerfile 公开了端口 9009,因此我的 Intellij 远程调试配置如下所示: Debug Config

使用调试配置中的本地主机,我需要 openshift 端口转发:

oc port-forward my-pod 9009
Forwarding from 127.0.0.1:9009 -> 9009

当我启动调试器时,我在 Intellij 中收到以下错误:

Error running 'DTC Remote Debug':
Unable to open debugger port (localhost:9009): java.net.ConnectException "Connection refused: connect"

同时端口转发的终端显示:

Handling connection for 9009
E0927 09:52:33.711817   5996 portforward.go:331] an error occurred forwarding 9009 -> 9009: error forwarding port 9009 to pod ad370...c010, uid : exit status 1: 2019/09/27 03:52:33 socat[129691] E connect(5, AF=2 127.0.0.1:9009, 16): Connection refused

对 url 进行 Nmap 扫描,我得到了我的应用程序的 index.html,我得到了以下信息:

nmap -sS my-openshift-url
Starting Nmap 7.80 ( https://nmap.org ) at 2019-09-27 15:01 Mitteleuropõische Sommerzeit
Nmap scan report for my-openshift-url (IP-Address)
Host is up (0.0043s latency).
rDNS record for IP-Address: dispatch-my-domain
Not shown: 997 filtered ports
PORT     STATE  SERVICE
80/tcp   open   http
443/tcp  open   https
9009/tcp closed pichat

Nmap done: 1 IP address (1 host up) scanned in 6.10 seconds

我猜问题出在关闭的 9009 端口上,但我不知道如何在我的 openshift 集群上打开该端口。我已经在 openshift web UI 中设置了几个环境变量(只是为了确定):

DEBUG            TRUE
DEBUG            true
DEBUGGING        TRUE
DEBUGGING        true
JAVA_DEBUG       TRUE
JAVA_DEBUG       true
JAVA_DEBUG_PORT  9009

但我无法让它工作。如果我将端口转发切换到 8080,我可以从我的浏览器通过 localhost:8080 访问 index.html。我不知道我是否需要更改项目代码中的某些内容(gradle、docker、jenkins 等),或者我是否可以以某种方式在 openshift 中打开已部署服务上的端口。 .

如果有什么不清楚或者我遗漏了什么,请告诉我。我很高兴得到每条建议。

此致,

克里斯托夫

在 openshift 中添加以下环境变量就可以了:

JAVA_TOOL_OPTIONS   -agentlib:jdwp=transport=dt_socket,address=9009,server=y,suspend=n

上面的所有其他环境变量都已过时...