The migration to controller-runtime 0.23.1 introduced stricter validation
for event recorder names using the events.k8s.io API group.
The new API enforces that reportingController names must be valid Kubernetes qualified
names matching the regex: ([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9].
So far was good, but it seems that once the event is created, the event field
reportingInstance is populated from reportingController+reconciliationId.
And the reportingInstance has a limitation of 128 chars and hence we now have a limitation of
reportingController.
As per events doc:
reportingController (string)
reportingController is the name of the controller that emitted this Event, e.g. kubernetes.io/kubelet. This field cannot be empty for new Events.
reportingInstance (string)
reportingInstance is the ID of the controller instance, e.g. kubelet-xyzf. This field cannot be empty for new Events and it can have at most 128 characters.
Here our error log message :
E0501 20:33:03.500254 1 event_broadcaster.go:270] "Server rejected event (will not retry!)" err="Event \"windows-laav-a2.18ab8b3faaa83129\" is invalid: reportingInstance: Invalid value: \"\": can have at most 128 characters" event="&Event{ObjectMeta:{windows-laav-a2.18ab8b3faaa83129 vmsvc-e2e-so7rzi 0 0001-01-01 00:00:00 +0000 UTC <nil> <nil> map[] map[] [] [] []},EventTime:2026-05-01 20:33:03.490136698 +0000 UTC m=+27.204947134,Series:nil,ReportingController:vmware-system-vmop.vmware-system-vmop-controller-manager-7f885ffff5-mlnhc/virtualmachine-controller,ReportingInstance:vmware-system-vmop.vmware-system-vmop-controller-manager-7f885ffff5-mlnhc/virtualmachine-controller-423b393286e26d68e9777202c42da01a,Action:UpdateSuccess,Reason:UpdateSuccess,Regarding:{VirtualMachine vmsvc-e2e-so7rzi windows-laav-a2 a228f522-3a3b-43e9-8b5e-36eaa1b92e12 vmoperator.vmware.com/v1alpha6 5978637 },Related:nil,Note:Update success,Type:Normal,DeprecatedSource:{ },DeprecatedFirstTimestamp:0001-01-01 00:00:00 +0000 UTC,DeprecatedLastTimestamp:0001-01-01 00:00:00 +0000 UTC,DeprecatedCount:0,}"
The migration to controller-runtime 0.23.1 introduced stricter validation
for event recorder names using the events.k8s.io API group.
The new API enforces that reportingController names must be valid Kubernetes qualified
names matching the regex: ([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9].
So far was good, but it seems that once the event is created, the event field
reportingInstanceis populated fromreportingController+reconciliationId.And the reportingInstance has a limitation of 128 chars and hence we now have a limitation of
reportingController.
As per events doc:
Here our error log message :