'What is a difference between Ingress and Ingress controller?

I'm using k8s on GCP. It is required to set ingress to setup TLS connection so I set ingress for my application, it works !!!
BTW what is Ingress controller like as Nginx Ingress Controller?

I'm sure that ingress create new load balancer and serve application services through http request. but what is the point to set nginx controllers you can use annotation to set up small configuration for nginx.



Solution 1:[1]

Ingress Resource: object with a set of routing rules.
Ingress controller: just another pod(usually run with Deployment) running in k8.

The ingress controller is responsible for reading the Ingress Resource information and processing that data accordingly.

Metaphorical explanation:

Ingress (A gun),
Ingress Controller(soldier with a Gun) and
Ingress rules(Person who commands the soldier to where to shoot).

Solution 2:[2]

Just like other objects in K8s ingress is also a type of object K8s which is mainly referred as set of redirection rules.

Where as ingress controller is like other deployment objects(could be demon set as well) which listen and configure those ingress rules.

If I talk in terms of Nginx, Ingress controller is Nginx software itself where as ingress(ingress rules) are nginx configurations.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Vaibhav Jain