fix(validation): enforce stricter label validation#16852
Conversation
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Reviewer Checklist🔍 Each of these sections need to be checked by the reviewer of the PR 🔍:
|
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
Signed-off-by: Ilya Lobkov <ilya.lobkov@konghq.com>
@lobkovilya you could try running it on a subset without golden files but that would require you reset some stuff and then re-commit |
slonka
left a comment
There was a problem hiding this comment.
just found this, Ilya will adjust
| // Privileged callers (K8s controllers, etc.) legitimately set | ||
| // OwnerSystem labels like kuma.io/managed-by. Drop them only on | ||
| // user paths, where any value is impersonation. | ||
| if !o.Privileged { |
There was a problem hiding this comment.
updating an existing generated Workload or MeshService will silently drop labels like kuma.io/managed-by and kuma.io/deletion-grace-period-started-at
Motivation
Label validation on create/update was inconsistent across the K8s
webhook, REST API server, and KDS sync. Users could silently override
CP-computed labels, and
kuma.io/originmismatches were tolerated —masking resources applied to the wrong control plane.
Implementation information
Introduces a single declarative registry of reserved labels in
pkg/core/resources/labels/and reroutes every entry point throughit:
LabelSpecdeclares each label'sOwner(
ControlPlane/User/System) and its expected value.Validatereturns{Errors, Warnings}: errors reject (format,user-owned
AllowedValues, strictkuma.io/originmismatch);warnings cover CP-owned labels the user set wrong — accepted, then
overridden by
Compute.Computeis authoritative: it force-sets/deletes CP-owned labelsfrom the registry. The webhook defaulter skips it on
Privilegedcontexts (KDS sync, GC, storage-version migration).
Supporting documentation
Fix #16049