Kong Ingress Controller provides Kubernetes Events to help understand the state of your system. Events occur when an invalid configuration is rejected by Kong Gateway (
KongConfigurationApplyFailed) or when an invalid configuration such as an upstream service that does not exist is detected (
The Events are not cleared immediately after you resolve the issues. However, the Event
count stops increasing after you fix the problem. Events do eventually expire after an hour, by default, but may be outdated.
Finding problem resource Events
Once you see a translation or configuration push failure, you can
locate which Kubernetes resources require changes by searching for Events. For
example, this Ingress attempts to create a gRPC route that also uses HTTP
methods, which is impossible:
Kong Gateway rejects the route that Kong Ingress Controller creates
from this Ingress and return an error. Kong Ingress Controller processes
this error and create a Kubernetes Event linked to the Ingress.
You can find these Events by searching across all namespaces for Events
with the reason that indicate Kong Ingress Controller failures:
kubectl get events -A --field-selector='reason=KongConfigurationApplyFailed'
The results should look like this:
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE
default 35m Warning KongConfigurationApplyFailed ingress/httpbin invalid methods: cannot set 'methods' when 'protocols' is 'grpc' or 'grpcs'
The controller can also create Events with the reason
KongConfigurationTranslationFailed when it detects issues before sending
configuration to Kong.
The complete Event contains additional information about the problem resource,
the number of times the problem occurred, and when it occurred:
message: 'invalid methods: cannot set ''methods'' when ''protocols'' is ''grpc''
Kong Ingress Controller creates one Event for each problem with a
resource, so you may see multiple Events for a single resource with different
messages. The message describes the reason the resource is invalid. In this
case, it’s because gRPC routes cannot use HTTP methods.