Description:
Currently with a large number of CRs the gateway controller's resource utilization is very spiky at startup and at re-syncs when resources are periodically re-reconciled. This requires high resource limits to be configured in order to handle these short infrequent bursts.
Ideally the resource usage would be lower and more consistent during large re-sync events.
This could be accomplished by compacting many reconcile calls into a single run of the main reconciliation loop rather then wasting resources re-building the state of the world for each CR. external-dns does something similar here.
The minimum interval the reconciliation loop runs could be configurable with a sensible default (something like 1-5 seconds). The behavior should allow the controller to react immediately to a single event but then wait the the configured interval before running again.
Here is the behavior observed at startup where cpu and memory usage is high while the controller tries to reconcile ~600 TLSRoutes.

Description:
Currently with a large number of CRs the gateway controller's resource utilization is very spiky at startup and at re-syncs when resources are periodically re-reconciled. This requires high resource limits to be configured in order to handle these short infrequent bursts.
Ideally the resource usage would be lower and more consistent during large re-sync events.
This could be accomplished by compacting many reconcile calls into a single run of the main reconciliation loop rather then wasting resources re-building the state of the world for each CR. external-dns does something similar here.
The minimum interval the reconciliation loop runs could be configurable with a sensible default (something like 1-5 seconds). The behavior should allow the controller to react immediately to a single event but then wait the the configured interval before running again.
Here is the behavior observed at startup where cpu and memory usage is high while the controller tries to reconcile ~600 TLSRoutes.
