Currently, I am studying Kubernetes and I came across the term Ingress object. I was wondering if there is a list of differences between the two as to me they seem like synonyms. To me it seems that an NGINX is a more functional ingress as it allows for instance video and image compression, pre-fetching and caching.
On the other hand, Ingresses seem to overlap with NGINX' reverse proxies by providing load-balancing, traffic routing, TLS/SSL terminating. The only thing I see that an ingress may have compared to a NGINX/Envoy RP is that it is a "kubernetes API object".
Does this mean that it consists of 2 parts - an interfacing one between the API and some actual reverse proxy? Meaning, is an "ingress" just a kubernetes term for a wrapper of an NGINX RP enforcing Kubernetes' API on it OR it is a totally separate type of server?
Could you please list some list of the differences between the two?
You are right in your understanding.Ingress has two parts a controller which implements kubernetes ingress API interface for automated and fast way to configure a reverse proxy such as nginx or envoy.
The other part is the reverse proxy itself such as nginx, envoy.
So when you deploy a ingress setup in kubernetes it will deploy a ingress controller and a reverse proxy in your kubernetes cluster.
There are multiple vendors implementing the IngressController
. Even nginx
has one.
You are correct about Ingress
resource in Kubernetes just acting like a reverse proxy that we used to manually deploy. The IngressController
service is the actual reverse proxy which receives the traffic. The kubernetes resource Ingress
that you create is like the nginx.conf
config file that you would have created. You can create and run your own Ingress
by running an nginx
deployment, wrap it with a LoadBalancer
service and expressing your traffic rules by manually creating nginx.conf
file. Using Ingress
resource instead is just the native and simpler way to do this in Kubernetes.