Sidecar doubles connections to in-cluster Redis


My team is running several versions of Istio, and we are noticing behavior which I cannot explain with each version. Latest version is 1.5.4.

We have a Java app which connects to Redis using the Jedis library.

Our redis instances are installed in the cluster, using the DandyDev redis-ha helm chart. This results in three pods, each running a sentinel and redis container. Each pod has a kubernetes Service object with Cluster IP assigned.

The connection string used by the application uses the Service dns name.

On to the odd behavior. When the java app has istio sidecar injection enabled, we see that redis is receiving twice as many connections as expected. One connection goes to the service cluster IP, and one to the pod IP directly.

When istio sidecar injection is disabled, we see the expected behavior of connections only to the service cluster ip.

Are we missing something in the configuration, or is this expected behavior? We were expecting istio to handle direct connections to the pod IP, but here we’re getting both. In any case, having twice as many connections to redis is not ideal.

Thanks in advance for any help or insight into this behavior.