<p>help me figure it out.</p>
<p>I have a Bare Metal Kubernetes cluster with three nodes, each node has a public ip.
I have installed MetalLB and IngressController.</p>
<p>It is not clear to me which IP should I redirect domains and subdomains to so that they can be resolved by the Ingress Controller?</p>
<p>I need to initially define on which node the Ingress Controller will be launched?
I need to install the Ingress Controller, and then look at the worker node, on which it will be installed and send all domains or subdomains there?
What happens if, after restarting the cluster, the ingress controller will be deployed on another node?</p>
<p>All the tutorials I've seen show how it works locally or with a cloud load balancer.</p>
<p>Help me understand how this should work correctly.</p>

JDev
<p>Usually, when you install MetalLB, you configure a pool of addresses which can be used to assign new IPs at LoadBalancer services whenever they are created. Such IP addresses need to be available, they cannot be created out of nothing of course.. they could be in lease from your hosting provider for example.</p>
<p>If instead you have a private Bare Metal cluster which serves only your LAN network, you could just select a private range of IP addresses which are not used.</p>
<p>Then, once MetalLB is running, what happens is the following:</p>
<ul>
<li>Someone / something creates a <code>LoadBalancer</code> services (an HELM Chart, a user with a definition, with commands, etc)</li>
<li>The newly created service needs an external IP. MetalLB will select one address from the configured selected range and assign it to that service</li>
<li>MetalLb will start to announce using standard protocol that the IP address can now be reached by contacting the cluster, it can work either in <code>Layer2</code> mode (one node of the cluster holds that additional IP address) or <code>BGP</code> (true load balancing across all nodes of the cluster)</li>
</ul>
<p>From that point, you can just reach the new service by contacting this newly assigned IP address (which is NOT the ip of any of the cluster nodes)</p>
<p>Usually, the Ingress Controller will just bring a LoadBalancer service (which will grab an external IP address from MetalLb) and then, you can reach hte Ingress Controller from that IP.</p>
<p>As for your other questions, you don't need to worry about where the Ingress Controller is running or similar, it will be automatically handled.</p>
<p>The only thing you may want to do is to make the domain names which you want to serve point to the external IP address assigned to the Ingress Controller.</p>
<hr />
<p>Some docs:</p>
<ul>
<li>MetalLB <a href="https://metallb.universe.tf/concepts/" rel="nofollow noreferrer">explanations</a></li>
<li>Bitnami MetalLB <a href="https://github.com/bitnami/charts/tree/master/bitnami/metallb" rel="nofollow noreferrer">chart</a></li>
<li>LoadBalancer service <a href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer" rel="nofollow noreferrer">docs</a></li>
</ul>
