Controller: Fail annotation parsing fast and report errors. (#11740)

This commit is contained in:
Johannes Rudolph 2024-11-20 21:10:55 +01:00 committed by Marco Ebert
parent 6ceccbd67b
commit a5cd15d74a

View file

@ -240,6 +240,8 @@ type k8sStore struct {
backendConfigMu *sync.RWMutex backendConfigMu *sync.RWMutex
defaultSSLCertificate string defaultSSLCertificate string
recorder record.EventRecorder
} }
// New creates a new object store to be used in the ingress controller. // New creates a new object store to be used in the ingress controller.
@ -279,6 +281,7 @@ func New(
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{ recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{
Component: "nginx-ingress-controller", Component: "nginx-ingress-controller",
}) })
store.recorder = recorder
// k8sStore fulfills resolver.Resolver interface // k8sStore fulfills resolver.Resolver interface
store.annotations = annotations.NewAnnotationExtractor(store) store.annotations = annotations.NewAnnotationExtractor(store)
@ -938,6 +941,9 @@ func (s *k8sStore) syncIngress(ing *networkingv1.Ingress) {
klog.Error(err) klog.Error(err)
return return
} }
if parsed.Denied != nil {
s.recorder.Eventf(ing, corev1.EventTypeWarning, "AnnotationParsingFailed", fmt.Sprintf("Error parsing annotations: %v", *parsed.Denied))
}
err = s.listers.IngressWithAnnotation.Update(&ingress.Ingress{ err = s.listers.IngressWithAnnotation.Update(&ingress.Ingress{
Ingress: *copyIng, Ingress: *copyIng,
ParsedAnnotations: parsed, ParsedAnnotations: parsed,