I am trying to put together a diff tool to get the difference between the manifest of a Helm resource and the resources live on the system (to spot added keys to configmaps, different labels and annotations, etc). The outputs of the live resources show all the fields, with their defaults (for instance a Deployment resource will show progressDeadlineSeconds: 600
), so, to create a clean diff, I would like to avoid to compare the attributes set to a default value.
With Kubernetes CRD it is possible to get the default values of objects attribute. For example:
kubectl get crd postgresclusters.postgres-operator.crunchydata.com -o yaml | grep -C2 default:
type: string
enabled:
default: false
description: Whether or not in-place pgBackRest restores
are enabled for this PostgresCluster.
--
type: object
stanza:
default: db
description: The name of an existing pgBackRest stanza to
use as the data source for the new PostgresCluster. Defaults
...
Is it possible to get the same information for builtin objects, such as Deployment?
It is possible to query kinds information from OpenAPI, for instance, the fields of a Deployments are visible in:
kubectl get --raw /openapi/v2 | jq '.definitions."io.k8s.api.apps.v1.DeploymentSpec".properties'
however on OpenAPI the fields deafults are not available (neither for CRDs nor for builtin kinds).
Is it possible to get the same information you may get about CRDs for builtin objects?