We have an issue when deploying WSO2 Api Manager inside of a kubernetes environment with a service mesh. This service mesh already handles HTTPS / SSL security, and is only able to receive non-encrypted traffic.
In our WSO2 configuration we have separated the different server_roles into different micro services (a gateway and control plane for now), so they need to call each other via the service mesh. We have configured these services with the toml config.
When we try to call the traffic manager service from the gateway using a tcp socket instead of the “default” ssl socket, the following exception is thrown.
2024-06-19 15:06:32,886] ERROR - DataEndpointConnectionWorker Error while trying to connect to the endpoint. Cannot borrow client for tcp://************:9611
org.wso2.carbon.databridge.agent.exception.DataEndpointAuthenticationException: Cannot borrow client for tcp://*************:9611
at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:210) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.runConnection(DataEndpointConnectionWorker.java:67) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at org.wso2.carbon.databridge.agent.endpoint.DataEndpoint.connect(DataEndpoint.java:163) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at org.wso2.carbon.databridge.agent.endpoint.DataEndpointGroup$ReconnectionTask.run(DataEndpointGroup.java:451) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: org.wso2.carbon.databridge.agent.exception.DataEndpointException: Unsupported protocol: tcp. Currently only ssl supported.
at org.wso2.carbon.databridge.agent.endpoint.binary.BinarySecureClientPoolFactory.createClient(BinarySecureClientPoolFactory.java:79) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at org.wso2.carbon.databridge.agent.client.AbstractClientPoolFactory.makeObject(AbstractClientPoolFactory.java:39) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1212) ~[commons-pool_1.5.6.wso2v1.jar:?]
at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:200) ~[org.wso2.carbon.databridge.agent_5.3.11.jar:?]
... 4 more
This seem to be due to the following configuration being set and not being supported:
traffic_manager_auth_urls=["tcp://**********:9611"]
The following configuration “works”, from a wso2 perspective, but is not supported by our network configuration. Thus it results in a network error.
traffic_manager_auth_urls=["ssl://**********:9711"]
Is it possible to use the traffic manager without ssl sockets, and instead just use tcp sockets everywhere?
Thijs Rijpert is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.