Kong Ingress Controller reads state from the Kubernetes API server and generates a Kong Gateway configuration. If Kong Ingress Controller is not running, new Kong Gateway instances will not receive a configuration. Existing Kong Gateway instances will continue to process traffic using their existing configuration.
Your Kong Ingress Controller instance being offline is a major issue. The configuration loaded by Kong Gateway will quickly become outdated, especially the upstream endpoints hosting your applications. Without Kong Ingress Controller running, Kong Gateway will not detect new application pods, or remove old pods from it’s routing configuration.
Kong recommends running at least two Kong Ingress Controller instances. Kong Ingress Controller elects a leader when connected to a database-backed cluster or when Gateway Discovery is configured. This ensures that only a single controller pushes configuration to Kong’s database or to Kong’s Admin API to avoid potential conflicts and race conditions.
When a leader controller shuts down, other instances will detect that there is no longer a leader, and one will promote itself to the leader.
Leader election is controlled using the
Lease resource. For this reason, Kong Ingress Controller needs permission to create a
Lease resource. By default, the permission is given at Namespace level.
The name of the Lease is derived from the value of
election-id CLI flag or
CONTROLLER_ELECTION_ID environment variable (default:
"") as: “-". For example, if the Kong Ingress Controller has been deployed using Helm , the default `Lease` that is used for leader election will be `kong-ingress-controller-leader-kong`, and it will be present in the same namespace that the controller is deployed in.