<p>I installed contour locally on <code>minikube version: v1.5.0</code> with:</p>

<pre><code>kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
</code></pre>

<p>I check the details of the contour ingress controller with:</p>

<pre><code>$ kubectl get -n projectcontour service contour -o wide
NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE     SELECTOR
contour   ClusterIP   10.103.81.4   &lt;none&gt;        8001/TCP   4d12h   app=contour
</code></pre>

<p>Now in the book it says:</p>

<blockquote>
  <p>If you are using minikube, you probably won’t have anything listed for
  EXTERNAL-IP. To fix this, you need to open a separate terminal window
  and run minikube tunnel. This configures networking routes such that
  you have unique IP addresses assigned to every service of type:
  LoadBalancer. - Brendan Burns. “Kubernetes: Up and Running.”</p>
</blockquote>

<p>I ran <code>minikube tunnel</code> in a seperate window but it still did not give me an <code>EXTERNAL-IP</code>.</p>

<p>How can I get this <code>EXTERNAL-IP</code> so I can point some hosts to it and test the ingress.</p>

<p><strong>Update</strong></p>

<p>I get all the services in the namespace and the <code>enoy</code> service has an external ip. I added those to <code>/etc/hosts</code> and it worked.</p>

<pre><code>$ kubectl get -n projectcontour service -o wide
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE     SELECTOR
contour   ClusterIP      10.103.81.4     &lt;none&gt;          8001/TCP                     4d12h   app=contour
envoy     LoadBalancer   10.97.220.191   10.97.220.191   80:32162/TCP,443:31422/TCP   4d12h   app=envoy
</code></pre>

<p><strong>Update 2</strong>:</p>

<p>Only where the <code>service.type = LoadBalancer</code> do you get an <code>externalIP</code>:</p>

<pre><code>$ kubectl describe service envoy -n projectcontour
Name:                     envoy
Namespace:                projectcontour
Labels:                   &lt;none&gt;
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"service.beta.kubernetes.io/aws-load-balancer-backend-protocol":"tcp"},"nam...
                          service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
Selector:                 app=envoy
Type:                     LoadBalancer
IP:                       10.97.220.191
LoadBalancer Ingress:     10.97.220.191
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  32162/TCP
Endpoints:                172.17.0.17:80
Port:                     https  443/TCP
TargetPort:               443/TCP
NodePort:                 https  31422/TCP
Endpoints:                172.17.0.17:443
Session Affinity:         None
External Traffic Policy:  Local
HealthCheck NodePort:     31511
Events:                   &lt;none&gt;
</code></pre>

<p>and:</p>

<pre><code>$ kubectl describe service contour -n projectcontour
Name:              contour
Namespace:         projectcontour
Labels:            &lt;none&gt;
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"contour","namespace":"projectcontour"},"spec":{"ports":[{"name":"...
Selector:          app=contour
Type:              ClusterIP
IP:                10.103.81.4
Port:              xds  8001/TCP
TargetPort:        8001/TCP
Endpoints:         172.17.0.13:8001,172.17.0.14:8001
Session Affinity:  None
Events:            &lt;none&gt;
</code></pre>

tread
<p>Your service type would need to be <code>LoadBalancer</code> to have an external-ip.</p>
