Unable to connect to postgreSQL from OpenShift

I deployed metabase docker image (metabase/metabase:latest) to my OpenShift space. Confirmed that I can connect to postgreSQL database from my OpenShift cluster using a simple python application. However when i tried to connect from within my OpenShift metabase app, i'm getting java.util.concurrent.TimeoutException: Timed out after 10.0 s
For database connection I'm using secure connection with SSL Mode=verify-ca and authenticated client certificates. The same docker image connects to that postgreSQL database when I run it on my local workstation.
Any help will be much appreciated.

here's a full stack:

2022-06-07 21:35:33,660 ERROR driver.util :: Database connection error
java.util.concurrent.TimeoutException: Timed out after 10.0 s
	at metabase.util$deref_with_timeout.invokeStatic(util.clj:343)
	at metabase.util$deref_with_timeout.invoke(util.clj:335)
	at metabase.util$do_with_timeout.invokeStatic(util.clj:349)
	at metabase.util$do_with_timeout.invoke(util.clj:346)
	at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:47)
	at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:36)
	at clojure.lang.RestFn.invoke(RestFn.java:442)
	at metabase.api.database$test_database_connection.invokeStatic(database.clj:431)
	at metabase.api.database$test_database_connection.doInvoke(database.clj:421)
	at clojure.lang.RestFn.invoke(RestFn.java:425)
	at metabase.api.database$fn__73329$test_connection_details__73334$fn__73335.invoke(database.clj:470)
	at metabase.api.database$fn__73329$test_connection_details__73334.invoke(database.clj:460)
	at metabase.api.database$fn__73361.invokeStatic(database.clj:498)
	at metabase.api.database$fn__73361.invoke(database.clj:484)
	at compojure.core$wrap_response$fn__32273.invoke(core.clj:160)
	at compojure.core$wrap_route_middleware$fn__32257.invoke(core.clj:132)
	at compojure.core$wrap_route_info$fn__32262.invoke(core.clj:139)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:151)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at metabase.server.middleware.auth$enforce_authentication$fn__65369.invoke(auth.clj:14)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at compojure.core$make_context$handler__32313.invoke(core.clj:289)
	at compojure.core$make_context$fn__32317.invoke(core.clj:299)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at metabase.api.routes$fn__76493$fn__76496.invoke(routes.clj:56)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:662)
	at metabase.server.routes$fn__76638$fn__76639.doInvoke(routes.clj:57)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at compojure.core$make_context$handler__32313.invoke(core.clj:289)
	at compojure.core$make_context$fn__32317.invoke(core.clj:299)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at metabase.server.routes$fn__76626$fn__76628.invoke(routes.clj:41)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__73621.invoke(exceptions.clj:98)
	at metabase.server.middleware.exceptions$catch_api_exceptions$fn__73618.invoke(exceptions.clj:86)
	at metabase.server.middleware.log$log_api_call$fn__77107$fn__77108$fn__77109.invoke(log.clj:209)
	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)
	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)
	at metabase.server.middleware.log$log_api_call$fn__77107$fn__77108.invoke(log.clj:201)
	at toucan.db$_do_with_call_counting.invokeStatic(db.clj:216)
	at toucan.db$_do_with_call_counting.invoke(db.clj:209)
	at metabase.server.middleware.log$log_api_call$fn__77107.invoke(log.clj:200)
	at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__80460.invoke(browser_cookie.clj:38)
	at metabase.server.middleware.security$add_security_headers$fn__55229.invoke(security.clj:148)
	at metabase.server.middleware.json$wrap_json_body$fn__79615.invoke(json.clj:62)
	at metabase.server.middleware.json$wrap_streamed_json_response$fn__79633.invoke(json.clj:98)
	at metabase.server.middleware.offset_paging$handle_paging$fn__55253.invoke(offset_paging.clj:42)
	at ring.middleware.keyword_params$wrap_keyword_params$fn__80727.invoke(keyword_params.clj:55)
	at ring.middleware.params$wrap_params$fn__80743.invoke(params.clj:69)
	at metabase.server.middleware.misc$maybe_set_site_url$fn__34379.invoke(misc.clj:59)
	at metabase.server.middleware.session$bind_current_user$fn__45722$fn__45723.invoke(session.clj:262)
	at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:243)
	at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:235)
	at metabase.server.middleware.session$bind_current_user$fn__45722.invoke(session.clj:261)
	at metabase.server.middleware.session$wrap_current_user_info$fn__45709.invoke(session.clj:221)
	at metabase.server.middleware.session$wrap_session_id$fn__45695.invoke(session.clj:167)
	at metabase.server.middleware.auth$wrap_api_key$fn__65377.invoke(auth.clj:27)
	at ring.middleware.cookies$wrap_cookies$fn__80647.invoke(cookies.clj:216)
	at metabase.server.middleware.misc$add_content_type$fn__34362.invoke(misc.clj:27)
	at metabase.server.middleware.misc$disable_streaming_buffering$fn__34387.invoke(misc.clj:76)
	at ring.middleware.gzip$wrap_gzip$fn__80689.invoke(gzip.clj:86)
	at metabase.server.middleware.misc$bind_request$fn__34390.invoke(misc.clj:93)
	at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__80476.invoke(ssl.clj:38)
	at metabase.server$async_proxy_handler$fn__76880.invoke(server.clj:73)
	at metabase.server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Unknown Source)
2022-06-07 21:35:33,663 ERROR api.database :: Cannot connect to Database
java.lang.Exception: Timed out after 10.0 s
	at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:53)
	at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:36)
	at clojure.lang.RestFn.invoke(RestFn.java:442)
	at metabase.api.database$test_database_connection.invokeStatic(database.clj:431)
	at metabase.api.database$test_database_connection.doInvoke(database.clj:421)
	at clojure.lang.RestFn.invoke(RestFn.java:425)
	at metabase.api.database$fn__73329$test_connection_details__73334$fn__73335.invoke(database.clj:470)
	at metabase.api.database$fn__73329$test_connection_details__73334.invoke(database.clj:460)
	at metabase.api.database$fn__73361.invokeStatic(database.clj:498)
	at metabase.api.database$fn__73361.invoke(database.clj:484)
	at compojure.core$wrap_response$fn__32273.invoke(core.clj:160)
	at compojure.core$wrap_route_middleware$fn__32257.invoke(core.clj:132)
	at compojure.core$wrap_route_info$fn__32262.invoke(core.clj:139)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:151)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at metabase.server.middleware.auth$enforce_authentication$fn__65369.invoke(auth.clj:14)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at compojure.core$make_context$handler__32313.invoke(core.clj:289)
	at compojure.core$make_context$fn__32317.invoke(core.clj:299)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$make_context$fn__32317.invoke(core.clj:300)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at metabase.api.routes$fn__76493$fn__76496.invoke(routes.clj:56)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:662)
	at metabase.server.routes$fn__76638$fn__76639.doInvoke(routes.clj:57)
	at clojure.lang.RestFn.invoke(RestFn.java:436)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at compojure.core$make_context$handler__32313.invoke(core.clj:289)
	at compojure.core$make_context$fn__32317.invoke(core.clj:299)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at compojure.core$wrap_route_matches$fn__32266.invoke(core.clj:153)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285$f__32286$respond_SINGLEQUOTE___32287.invoke(core.clj:197)
	at metabase.server.routes$fn__76626$fn__76628.invoke(routes.clj:41)
	at compojure.core$routes$fn__32285$f__32286.invoke(core.clj:198)
	at compojure.core$routes$fn__32285.invoke(core.clj:200)
	at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__73621.invoke(exceptions.clj:98)
	at metabase.server.middleware.exceptions$catch_api_exceptions$fn__73618.invoke(exceptions.clj:86)
	at metabase.server.middleware.log$log_api_call$fn__77107$fn__77108$fn__77109.invoke(log.clj:209)
	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)
	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)
	at metabase.server.middleware.log$log_api_call$fn__77107$fn__77108.invoke(log.clj:201)
	at toucan.db$_do_with_call_counting.invokeStatic(db.clj:216)
	at toucan.db$_do_with_call_counting.invoke(db.clj:209)
	at metabase.server.middleware.log$log_api_call$fn__77107.invoke(log.clj:200)
	at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__80460.invoke(browser_cookie.clj:38)
	at metabase.server.middleware.security$add_security_headers$fn__55229.invoke(security.clj:148)
	at metabase.server.middleware.json$wrap_json_body$fn__79615.invoke(json.clj:62)
	at metabase.server.middleware.json$wrap_streamed_json_response$fn__79633.invoke(json.clj:98)
	at metabase.server.middleware.offset_paging$handle_paging$fn__55253.invoke(offset_paging.clj:42)
	at ring.middleware.keyword_params$wrap_keyword_params$fn__80727.invoke(keyword_params.clj:55)
	at ring.middleware.params$wrap_params$fn__80743.invoke(params.clj:69)
	at metabase.server.middleware.misc$maybe_set_site_url$fn__34379.invoke(misc.clj:59)
	at metabase.server.middleware.session$bind_current_user$fn__45722$fn__45723.invoke(session.clj:262)
	at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:243)
	at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:235)
	at metabase.server.middleware.session$bind_current_user$fn__45722.invoke(session.clj:261)
	at metabase.server.middleware.session$wrap_current_user_info$fn__45709.invoke(session.clj:221)
	at metabase.server.middleware.session$wrap_session_id$fn__45695.invoke(session.clj:167)
	at metabase.server.middleware.auth$wrap_api_key$fn__65377.invoke(auth.clj:27)
	at ring.middleware.cookies$wrap_cookies$fn__80647.invoke(cookies.clj:216)
	at metabase.server.middleware.misc$add_content_type$fn__34362.invoke(misc.clj:27)
	at metabase.server.middleware.misc$disable_streaming_buffering$fn__34387.invoke(misc.clj:76)
	at ring.middleware.gzip$wrap_gzip$fn__80689.invoke(gzip.clj:86)
	at metabase.server.middleware.misc$bind_request$fn__34390.invoke(misc.clj:93)
	at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__80476.invoke(ssl.clj:38)
	at metabase.server$async_proxy_handler$fn__76880.invoke(server.clj:73)
	at metabase.server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.util.concurrent.TimeoutException: Timed out after 10.0 s
	at metabase.util$deref_with_timeout.invokeStatic(util.clj:343)
	at metabase.util$deref_with_timeout.invoke(util.clj:335)
	at metabase.util$do_with_timeout.invokeStatic(util.clj:349)
	at metabase.util$do_with_timeout.invoke(util.clj:346)
	at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:47)

This seems to be clearly an issue in the firewall rules of the database in openshift. Try checking what's allowed in the DB and then try again.

By the way: don't use mutable container images to deploy something in production