Skip to content

Commit e8bd5fc

Browse files
ashleydaviessimonmartyThirdEyeSqueegee
authored
chore(helm-chart): add commonLabels property (#462)
*Issue #, if available:* None *Description of changes:* Adds a (fairly standard) `commonLabels` property to the Helm chart to allow users to define labels across all created resources. One example use case is putting labels denoting team ownership, which is often desirable to require at resource creation time (this is my use case 😆 but I am sure I am not the only person who'd find this valuable) I've tested this with and without `commonLabels` set to a value, and the output is as expected in both cases. One notable consideration here - conventions vary amongst Helm charts for whether it's appropriate for `commonLabels` to be included in Pod templates within an owning resource like a DaemonSet, or whether `commonLabels` should apply just top-level resources. IIRC several Bitnami charts, for instance, do **not** include `commonLabels` in nested Pod template labels. Personally, I have only ever found this (not including it on pods) a frustrating convention - chances are if you want a label to be on every top-level resource, you probably _also_ want them on managed sub-resources, too. From my experience, the semantics here vary with a roughly ~50/50 split between charts, although I don't claim to have been exposed to a large enough sample size to speak with much authority here. Accordingly, I've chosen to include it on pods here, which is also the simplest way to do it within the existing chart structure. `helm template .` with `commonLabels: { }` (as in PR; truncated long resources for brevity): ```yaml --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: v1 kind: ServiceAccount metadata: name: release-name-secrets-store-csi-driver-provider-aws namespace: default labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: release-name-secrets-store-csi-driver-provider-aws-cluster-role labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws ... --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: release-name-secrets-store-csi-driver-provider-aws-cluster-role-binding labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws ... --- # Source: secrets-store-csi-driver-provider-aws/templates/daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: namespace: default name: release-name-secrets-store-csi-driver-provider-aws labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws spec: updateStrategy: type: RollingUpdate selector: matchLabels: app: secrets-store-csi-driver-provider-aws template: metadata: labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws spec: ... ``` `helm template .` with `commonLabels: { frogs: true }` (truncated long resources for brevity): ```yaml --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: v1 kind: ServiceAccount metadata: name: release-name-secrets-store-csi-driver-provider-aws namespace: default labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws frogs: true --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: release-name-secrets-store-csi-driver-provider-aws-cluster-role labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws frogs: true ... --- # Source: secrets-store-csi-driver-provider-aws/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: release-name-secrets-store-csi-driver-provider-aws-cluster-role-binding labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws frogs: true ... --- # Source: secrets-store-csi-driver-provider-aws/templates/daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: namespace: default name: release-name-secrets-store-csi-driver-provider-aws labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws frogs: true spec: updateStrategy: type: RollingUpdate selector: matchLabels: app: secrets-store-csi-driver-provider-aws template: metadata: labels: helm.sh/chart: secrets-store-csi-driver-provider-aws-1.0.1 app.kubernetes.io/name: secrets-store-csi-driver-provider-aws app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app: secrets-store-csi-driver-provider-aws frogs: true spec: ... ``` By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. Co-authored-by: Simon Marty <[email protected]> Co-authored-by: Angad <[email protected]>
1 parent a61cefd commit e8bd5fc

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

charts/secrets-store-csi-driver-provider-aws/templates/_helpers.tpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
4141
{{- end }}
4242
app.kubernetes.io/managed-by: {{ .Release.Service }}
4343
app: {{ template "provider.name" . }}
44+
{{- with .Values.commonLabels }}
45+
{{ toYaml . }}
46+
{{- end }}
4447
{{- end }}
4548

4649
{{/*

charts/secrets-store-csi-driver-provider-aws/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ kubeletPath: "/var/lib/kubelet"
1111

1212
driverWritesSecrets: false
1313

14+
commonLabels: {}
1415
podLabels: {}
1516
podAnnotations: {}
1617

0 commit comments

Comments
 (0)