<p>The following questions are about an on-prem K3S setup.</p>
<p>1] How does HTTP/S traffic reach an ingress controller in say K3S?</p>
<p>When I hit any of my nodes on HTTPS port 443 I get the traefik ingress controller. This must be &quot;magic&quot; though because:</p>
<ul>
<li>There is no process on the host listening on 443 (according to lsof)</li>
<li>The actual <code>nodePort</code> on the <code>traefik</code> service (of type LoadBalancer) is 30492</li>
</ul>
<p>2] Where is the traefik config located inside the ingress controller pod?
When I shell into my traefik pods I cannot find the config anywhere - <code>/etc/traefik</code> does not even exist. Is everything done via API (from Ingress resource definitions) and not persisted?</p>
<p>3] Is ingress possible without any service of type LoadBalancer? I.e. can I use a nodePort service instead by using an external load balancer (like F5) to balance traffic between nodes and these nodeports?</p>
<p>4] Finally, how do the traefik controller pods &quot;know&quot; when a node is down and stop sending/balancing traffic to pods which no longer exist?</p>

<ol>
<li>Port-forwarding is responsible for traffic getting mapped to traefik ingress controller by hitting on port 443 and NodePort is generally in between this range 30000-32767 only.</li>
</ol>
<p>Refer this <a href="https://doc.traefik.io/traefik/user-guides/crd-acme/#port-forwarding" rel="nofollow noreferrer">documentation</a> for more information on port forwarding.</p>
<ol start="3">
<li>Yes, An Ingress does not expose arbitrary ports or protocols. Exposing services other than HTTP and HTTPS to the internet typically uses a service of type <a href="https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport" rel="nofollow noreferrer">Service.Type=NodePort</a> or <a href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer" rel="nofollow noreferrer">Service.Type=LoadBalancer</a>.</li>
</ol>
<p>Refer this <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress" rel="nofollow noreferrer">documentation</a> for more information on ingress.</p>
<ol start="4">
<li>Kubernetes has a health check mechanism to remove unhealthy pods from Kubernetes services (cf readiness probe). As unhealthy pods have no Kubernetes endpoints, Traefik will not forward traffic to them. Therefore, Traefik health check is not available for kubernetesCRD and kubernetesIngress providers.</li>
</ol>
<p>Refer this <a href="https://doc.traefik.io/traefik/routing/services/#health-check" rel="nofollow noreferrer">documentation</a> for more information on Health check.</p>
