У меня есть модуль с tomcat: jdk8-openjdk-slim в качестве базового образа и развернутым на нем приложением весенней загрузки .war. Цель состоит в том, чтобы подключиться к службе mon go, настроенной вне кластера, через ssl. В моем локальном env все работает нормально, я копирую сертификат mon go, сгенерированный с помощью этого guide внутри контейнера, и затем я могу прекрасно прочитать его из Java.
Когда я развернусь то же самое изображение в Kubernetes я получаю ошибку
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.connection.SocketStream.read(SocketStream.java:87) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:547) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:418) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:290) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.CommandHelper.sendAndReceive(CommandHelper.java:84) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:34) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:91) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:51) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:127) ~[mongo-java-driver-3.6.3.jar:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) ~[mongo-java-driver-3.6.3.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_242]
i ссылка на файл сертификата с этой строкой кода System.setProperty("javax.net.ssl.trustStore", certPath);
, где certPath читается из env var и представляет путь к файлу mongocert. Я также ссылаюсь на пропуск сертификата из env var.
Я добавил журналы, чтобы посмотреть, правильно ли были проанализированы переменные env, и они выглядят отлично.
Я также запустил kubectl exe c, чтобы увидеть, есть ли проблемы, связанные с повреждением certfile. или разрешения, и я не думаю, что это так (разрешения на файл -rwxrwxrwx 1 root root
)
Есть ли что-то, что Kubernetes делает за капотами, что приводит к этой проблеме, или я что-то упустил?
Заранее спасибо