<p>I'm running a bare metal Kubernetes cluster and trying to use a Load Balancer to expose my services. I know typically that the Load Balancer is a function of the underlying public cloud, but with recent support for Ingress Controllers it seems like it should now be possible to use nginx as a self-hosted load balancer.</p>

<p>So far, i've been following the example <a href="https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example" rel="noreferrer">here</a> to set up an nginx Ingress Controller and some test services behind it. However, I am unable to follow Step 6 which displays the external IP for the node that the load balancer is running on as my node does not have an ExternalIP in the addresses section, only a LegacyHostIP and InternalIP.</p>

<p>I've tried manually assigning an ExternalIP to my cluster by specifying it in the service's specification. However, this appears to be mapped as the externalID instead.</p>

<p>How can I manually set my node's ExternalIP address?</p>

<p>This is something that is tested and works for an nginx service created on a particular node.</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
    name: nginx
    namespace: default
spec:
    ports:
    -   port: 80
        protocol: TCP
        targetPort: 80
        name: http
    -   port: 443
        protocol: TCP
        targetPort: 443
        name: https
    externalIPs:
      - '{{external_ip}}'
    selector:
        app: nginx
</code></pre>

<p>Assumes an nginx deployment upstream listening on port 80, 443.
The externalIP is the public IP of the node.</p>
