<p>I am attempting to get Istio setup on Kubernetes as an ingress controller. The problem is that my two applications seem to be accessible from the Istio ingress controllers node port (E.g., <a href="http://[host]:31380/application1" rel="nofollow noreferrer">http://[host]:31380/application1</a> and 
 <a href="http://[host]:31380/application2" rel="nofollow noreferrer">http://[host]:31380/application2</a>) but not accessible from 443/80.</p>

<p>I am new to Kubernetes and Istio so I had use the <a href="https://istio.io/docs/guides/bookinfo/" rel="nofollow noreferrer">https://istio.io/docs/guides/bookinfo/</a> guide as a reference. Following the guide was fairly easy and I was able to access the Bookinfo application using the node port as mentioned. I am unable to access it from 443/80 though. I used the helm chart to install Istio. I also don't see anything under Ingresses within the Kubernetes dashboard.</p>

<p>Here is an example of the gateway/virtual service yaml:</p>

<pre>
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: myapp-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp-virtual-service
spec:
  hosts:
  - "*"
  gateways:
  - myapp-gateway
  http:
  - match:
    - uri:
        prefix: /myapp
    route:
    - destination:
        host: myapp-app-service
        port:
          number: 7080
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: kibana
        port:
          number: 5601
</pre>

<p>Any ideas on what I have to do to get it to listen on 443? Am I missing a component entirely? </p>

<p>If routing to your application is required to run on 443/80, your Kubernetes cluster must have an external load balancer deployed. If one is not present, the traffic will be routed to the ingress node port. </p>

<p>Refer to - <a href="https://istio.io/docs/tasks/traffic-management/ingress/#determining-the-ingress-ip-and-ports" rel="nofollow noreferrer">https://istio.io/docs/tasks/traffic-management/ingress/#determining-the-ingress-ip-and-ports</a> (Determining the ingress IP and ports):</p>

<p><em>"If the EXTERNAL-IP value is set, your environment has an external load balancer that you can use for the ingress gateway. If the EXTERNAL-IP value is  (or perpetually ), your environment does not provide an external load balancer for the ingress gateway. In this case, you can access the gateway using the service’s node port."</em></p>

<p>Example for my bare-metal instance without an external load balancer:</p>

<pre>[admin@master1 ~]$ kubectl get svc -n istio-system | grep istio-ingress
istio-ingress              LoadBalancer   10.114.107.196   &lt;pending&gt;     80:32400/TCP,443:31564/TCP                                            5d
istio-ingressgateway       LoadBalancer   10.99.1.148      &lt;pending&gt;     80:31380/TCP,443:31390/TCP,31400:31400/TCP                            5d</pre>

<p>If you are deploying to an online cloud provider such as IBM Bluemix (probably AWS/Azure/etc.), you should already have one configured. If your configuration is on bare-metal, you likely don't have a load balancer configured.</p>

<p>Example for my Bluemix instance with an external load balancer:</p>

<pre>λ kubectl get svc -n istio-system | grep istio-ingress
istio-ingress              LoadBalancer   172.21.26.25     123.45.67.195   80:32000/TCP,443:31694/TCP                                            6h
istio-ingressgateway       LoadBalancer   172.21.139.142   123.45.67.196   80:31380/TCP,443:31390/TCP,31400:31400/TCP                            6h</pre>

<p>I have not yet gone back to deploy a load balancer to bare-metal so would like to hear if anyone has. I have briefly looked at Metal but have not spent much time on it.</p>
