Promote minimized CRD ObjectMeta type to be it's own named type
When building tooling that looks at CRDs or works with k8s yaml, understanding the types that are are being used is helpful for custom validations, rewrites, generation, and other rules.
In CRDs when someone references ObjectMeta, rather than getting all of ObjectMeta the CRD has a minimal representation, this was done in https://github.com/kubernetes-sigs/controller-tools/pull/557#discussion_r1179261104 which causes issues for our tooling when, specifically, PodTemplateSpec which contains ObjectMeta in it is used in some CRDs, this results in only parts of ObjectMeta being present in the resulting schema.
While we have a work around to look for the minimized structure of ObjectMeta that is written in CRDs, it's essentially a fuzzy match dependent on however the code-generator behaves, which isn't a reliable way to make tooling.
Rather than writing a minimized version of ObjectMeta, instead I propose adding a new type to the k8s schema that represents an embedded ObjectMeta that has a stronger guarantee of stability. For example MinimalObjectMeta or something which would be what is currently written in CRDs. This would allow for some level of stability for what we can expect in a schema where that occurs instead of needing to guess what fields the code-generator us using today if we want to apply custom tooling to ObjectMeta types.
This came up in part because the fields that are added are a mix of the fields from various sections in the docs about ObjectMeta https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/ where initial thinking may be the non-service and writable fields would be available in CRDs but instead the mix leads to confusion which a named type would solve.
Related https://github.com/kubernetes-sigs/controller-tools/pull/557/files#diff-d44a1fc23240ca1bdc8c22b4e23fe14ce4366bb1624542b417de0008d68a8e9aL115 https://github.com/kubernetes/kubernetes/issues/103739
Is there a plan to change this ?
We have a similar issue while using Gitops. Flux controllers use ObjectMeta for the CRDs. As the tool doesn't generate full schema for metadata, few formatting issues escape our CI checks and cause issues. More details in https://github.com/fluxcd/flux2/issues/4038
The Kubernetes project currently lacks enough contributors to adequately respond to all issues.
This bot triages un-triaged issues according to the following rules:
- After 90d of inactivity,
lifecycle/staleis applied - After 30d of inactivity since
lifecycle/stalewas applied,lifecycle/rottenis applied - After 30d of inactivity since
lifecycle/rottenwas applied, the issue is closed
You can:
- Mark this issue as fresh with
/remove-lifecycle stale - Close this issue with
/close - Offer to help out with Issue Triage
Please send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues.
This bot triages un-triaged issues according to the following rules:
- After 90d of inactivity,
lifecycle/staleis applied - After 30d of inactivity since
lifecycle/stalewas applied,lifecycle/rottenis applied - After 30d of inactivity since
lifecycle/rottenwas applied, the issue is closed
You can:
- Mark this issue as fresh with
/remove-lifecycle rotten - Close this issue with
/close - Offer to help out with Issue Triage
Please send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle rotten
/remove-lifecycle rotten