This message was deleted.
# general
a
This message was deleted.
c
Ingress resources don't create pods. They just tell the Ingress controller how to route requests.
Nginx and traefik are both examples of ingress controllers
i
Hmm, so that means I would need to a) Create an ingress controller, i.e., add an nginx workload/service to my application's namespace b) Create and ingress that routes to that controller?
btw: thanks again for all the help
c
No.
i
...sigh ...
c
An ingress controller is a thing that uses Ingress resources to route requests to services and pods. Loadbalancer services handle things at layer 3, ingress controllers handle things at layer 7.
Normally you would expose the ingress controller as either a Loadbalancer service, or as a daemonset using a fixed host port. That gives you an IP and port to connect to. The ingress looks at the TLS handshake, or host header, or uri in the request, and then routes things to many different services within the cluster.
It is the centralized ingress point for requests into your cluster. Hence the name.
Ingress resources configure the request routing engine in the ingress controller, by telling it how to match http requests, and where to send them
i
Right, so, I have a service, let's say a web server, i.e., http/port 80, as a service. And I have an external load balancer, nginx, that does my SSL termination for me. In my head I thought I could do the following: • HTTPS to external load balancer at https://myserver.something.com • Do SSL/TLS termination, send requests to http://myserver.something.com at the three worker nodes of the cluster • Create an ingress with path myserver.someting.com that connects to the web-server app/service However, that doesn't seem to work, most likely because I'm misunderstanding something. I thought the ingress would automatically route everything that goes to one of the worker nodes at myserver.something.com to the clusterIP of the service ...
The reason why I was asking about the ingress controller is that I was trying to debug it/tcpdump the packages but realised there is no pod for the ingress. Which makes sense given it's just a set of rules.
Ok, forget about it, I got a little bit further and it is kind of what I thought initially (and most likely everything you said and I didn't understand): An ingress controller (pod/workload) has to exist, e.g., an nginx one, which in Rancher using RKE2 is the rke2-nginx-ingress-controller pod. However, other applications have additional ingress controllers, e.g., gitlab comes with it's own ingress controller pod. When I create an ingress I can choose the ingressClass from the available ingress controllers, e.g., nginx (default rke2 ingress controller) and gitlab-nginx (the gitlab ingress controller)
Running into the next wall now but at least that kind of makes sense 🙂 Thanks again for your time, hope it wasn't too annoying.