<p>I have the following services and would like to call those outside from kubernetes: </p>

<pre><code>k get services                              
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
greeter-service   ClusterIP   10.233.35.214   &lt;none&gt;        3000/TCP   4d9h
helloweb          ClusterIP   10.233.8.173    &lt;none&gt;        3000/TCP   4d9h
kubernetes        ClusterIP   10.233.0.1      &lt;none&gt;        443/TCP    4d13h
movieweb          ClusterIP   10.233.12.155   &lt;none&gt;        3000/TCP   3d9h\
</code></pre>

<p>The <strong>greeter-service</strong> is the first candidate, that I would like to reach from outside. I've created a virtual services as follows: </p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
    name: greeter-service
spec:
    hosts:
        - greeter-service.default.svc.cluster.local
    http:
        - match:
              - uri:
                    prefix: /greeting
          rewrite:
              uri: /hello
          route:
              - destination:
                    host: greeter-service.default.svc.cluster.local
                    port:
                        number: 3000
                    subset: v2
        - route:
              - destination:
                    host: greeter-service.default.svc.cluster.local
                    port:
                        number: 3000
                    subset: v1
</code></pre>

<p>then after the deployment: </p>

<pre><code>k get virtualservices                       
NAME              GATEWAYS    HOSTS                                         AGE
greeter-service               [greeter-service.default.svc.cluster.local]   3d2h
helloweb          [gateway]   [helloweb.dev]                                4d5h
movieweb          [gateway]   [movieweb.dev]                                3d9h
</code></pre>

<p>as you can see, the virtual service for <strong>greeter-service</strong> is created. 
Then I tried to call it from outside via curl: </p>

<pre><code>curl -v 172.17.8.180:80/greeting
*   Trying 172.17.8.180...
* TCP_NODELAY set
* Connected to 172.17.8.180 (172.17.8.180) port 80 (#0)
&gt; GET /greeting HTTP/1.1
&gt; Host: 172.17.8.180
&gt; User-Agent: curl/7.58.0
&gt; Accept: */*
&gt; 
&lt; HTTP/1.1 404 Not Found
&lt; date: Wed, 04 Dec 2019 20:34:55 GMT
&lt; server: istio-envoy
&lt; content-length: 0
&lt; 
* Connection #0 to host 172.17.8.180 left intact
</code></pre>

<p>The ingress controller is configured as follows:</p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: gateway
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - '*'
</code></pre>

<p>As you can see, I can not reach the service. What is wrong?</p>

<p>Your query didn't match the host. Try</p>

<pre><code>curl -v -H 'Host: greeter-service.default.svc.cluster.local' 172.17.8.180:80/greeting
</code></pre>
