In a microservices environment, it's common to distribute Kubernetes manifests across many Git repositories.
It may be desired to manage one or a handful of Ingress objects, rather than one per repo or microservice.
It might not be desired to manage them in a centralized location, since among other things, this requires tight coordination between the centralized and the distributed.
ingress-controller-controller allows you to manage one or many Ingresss from n number of Service objects, using Annotations.
Used it in conjunction with an Ingress Controller and an external-dns controller, Load Balancers and relevant DNS records can be fully automated using simple annotations on Services, GitOps'd in diverse locations.
How it works
Watch Services with a certain label via the Kubernetes API, and at each event loop:
Use the API to find the list of Services that have the right annotation
Calculate a list of desired Ingresss from the annotations
Use the API to find the list of Ingresss that have the right annotation
Delete any orphaned Ingresss
(ingress-controller-controller annotates Ingresss which it created)