title: Connecting to mongodb on ssl via istio ingress gateway
body: <p>I have the following code in my istio ingress gateway</p>
  
  <pre><code>apiVersion: networking.istio.io/v1alpha3
  kind: Gateway
  metadata:
    name: my-gateway
    namespace: staging
  spec:
    selector:
      istio: ingressgateway # use Istio default gateway implementation
    servers:
    - hosts:
      - "my.mongodb.com"
      port:
        number: 27018
        protocol: MONGO
        name: mongo
  
  ---      
  
  apiVersion: networking.istio.io/v1alpha3
  kind: VirtualService
  metadata:
    name: myname
    namespace: staging
  spec:
    hosts:
      - "my.mongodb.com"
    gateways:
    - my-gateway
    tcp:
    - match:
      - port: 27018
      route:
      - destination:
          host: my-service
          port:
            number: 27018     
  </code></pre>
  
  <p>When I don't inject the sidecar, I can connect to this mongodb using <code>my.mongodb.com:27018 --ssl</code></p>
  
  <p>However, when I have the sidecar, I get the following error:</p>
  
  <pre><code>$ mongo my.mongodb.com:27018 --ssl
  MongoDB shell version v4.0.2
  connecting to: mongodb://my.mongodb.com:27018/test
  2019-02-13T23:30:44.201+1100 E QUERY    [js] Error: couldn't connect to server proxy.provendb.com:27018, connection attempt failed: SocketException: Secure.Transport: handshake failure :
  connect@src/mongo/shell/mongo.js:257:13
  @(connect):1:6
  exception: connect failed
  </code></pre>
  
  <p>What is the correct way to set up ssl enabled mongodb on istio ?</p>
  
  <h1>edit</h1>
  
  <p>I tried this</p>
  
  <pre><code>apiVersion: networking.istio.io/v1alpha3
  kind: Gateway
  metadata:
    name: my-gateway
    namespace: staging
  spec:
    selector:
      istio: ingressgateway # use Istio default gateway implementation
    servers:
    - hosts:
      - "my.mongodb.com"
      port:
        number: 443
        protocol: TLS
        name: tls-mongo
      tls:
        mode: PASSTHROUGH  
  
  
  apiVersion: networking.istio.io/v1alpha3
  kind: VirtualService
  metadata:
    name: myvs
    namespace: staging
  spec:
    hosts:
      - "my.mongodb.com"
    gateways:
    - my-gateway
    tcp:
    - match:
      - port: 443
      route:
      - destination:
          host: my-service
          port:
            number: 27018
            # name: proxy-port 
  </code></pre>
  
  <p>I get host unreachable</p>
  
  <pre><code>2019-02-14T05:38:08.392+1100 E QUERY    [js] Error: couldn't connect to server my.mongodb.com:443, connection attempt failed: HostUnreachable: Connection was closed :
  connect@src/mongo/shell/mongo.js:257:13
  @(connect):1:6
  exception: connect failed
  </code></pre>