Я пытаюсь выполнить удаленную отладку Java-приложения, работающего в Openshift с Istio, поэтому в качестве модуля с одним док-контейнером с самим приложением и еще одним контейнером с прокси Envoy.
Я установил аргументы отладки для процесса Java:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
и процесс открыл порт и написал:
Listening for transport dt_socket at address: 5005
Однако, когда я пытаюсь подключиться к этому как снаружи, так и из самого контейнера, я получаю:
> jdb -attach 172.17.0.8:5005
java.io.IOException: handshake failed - connection prematurally closed
at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:136)
at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232)
at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)
at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)
at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
at com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)
Fatal error:
Unable to attach to target VM.
Мое подозрение заключается в том, что это связано с прокси-сервером Istio, который не понимает JDWP и портится с этим (к моему удивлению даже при доступе из контейнера с использованием
oc exec -it myservice-42-abcdef -c myservice bash
но я не могу проверить iptables из контейнера, так как у меня там нет root).
Мой подозреваемый прав? Как я могу отключить прокси на определенных портах?