They are tied by ingress class concept.
Each ingress controller is defined by some IngressClass.
In a nutshell IngressClass is a simple wrapper object, which contains:
- mandatory
controller
field which is a pointer to actual ingress controller binary,
- optional
parameters
field for additional configuration.
Typically you would use predefined IngressClasses shipped with standard controllers, but nothing prevents you to define your own (though it's rarely needed in practice).
Each ingress rule may be marked with corresponding ingress.class
annotation.
E. g. kubernetes.io/ingress.class: nginx
Also you may set a default ingress class in you cluster.
In this case ingress rules without class annotations will assume this default class.
ingress.class
annotation. Also you may set a default ingress class in you cluster, then ingress rules without class annotations will assume this default class. – Olesya Bolobova