From ea18e26605a094cfe14b624d130a8dddd9eb42d5 Mon Sep 17 00:00:00 2001 From: Nicolas Lamirault Date: Thu, 21 Aug 2025 09:21:38 +0200 Subject: [PATCH] feat(helm): refactoring Kubernetes recommanded labels Signed-off-by: Nicolas Lamirault --- templates/helm/templates/_helpers.tpl.tpl | 27 +++++++++++++++++++ .../templates/caches-role-binding.yaml.tpl | 14 ++-------- templates/helm/templates/caches-role.yaml.tpl | 14 ++-------- .../templates/cluster-role-binding.yaml.tpl | 14 ++-------- .../cluster-role-controller.yaml.tpl | 14 ++-------- templates/helm/templates/deployment.yaml.tpl | 17 +++--------- .../leader-election-role-binding.yaml.tpl | 7 +---- .../templates/leader-election-role.yaml.tpl | 7 +---- .../helm/templates/metrics-service.yaml.tpl | 12 ++------- templates/helm/templates/role-reader.yaml.tpl | 7 +---- templates/helm/templates/role-writer.yaml.tpl | 7 +---- .../helm/templates/service-account.yaml.tpl | 7 +---- templates/helm/values.yaml.tpl | 3 +++ 13 files changed, 49 insertions(+), 101 deletions(-) diff --git a/templates/helm/templates/_helpers.tpl.tpl b/templates/helm/templates/_helpers.tpl.tpl index 9fb4f7b0..4a791869 100644 --- a/templates/helm/templates/_helpers.tpl.tpl +++ b/templates/helm/templates/_helpers.tpl.tpl @@ -61,3 +61,30 @@ SEDREPLACERULES {{ "{{- end -}}" }} {{ "{{ join \",\" $list }}" }} {{ "{{- end -}}" }} + +{{ "{{/*" }} +{{ "Kubernetes recommended labels for all resources" }} +{{ "*/}}" }} +{{ DefineTemplate "app.labels" }} +app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} +app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} +app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} +app.kubernetes.io/component: {{ .ControllerName }}-controller +app.kubernetes.io/part-of: {{ IncludeTemplate "app.name" }} +app.kubernetes.io/managed-by: Helm +helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} +k8s-app: {{ IncludeTemplate "app.name" }} +{{ "{{- if .Values.commonLabels }}" }} +{{ "{{- range $key, $value := .Values.commonLabels }}" }} +{{ "{{ $key }}: {{ $value | quote }}" }} +{{ "{{- end }}" }} +{{ "{{- end }}" }} +{{ "{{- end -}}" }} + +{{ "{{/*" }} +{{ "Selector labels for matching pods" }} +{{ "*/}}" }} +{{ DefineTemplate "app.selectorLabels" }} +app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} +app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} +{{ "{{- end -}}" }} diff --git a/templates/helm/templates/caches-role-binding.yaml.tpl b/templates/helm/templates/caches-role-binding.yaml.tpl index 803777ea..d587a4a2 100644 --- a/templates/helm/templates/caches-role-binding.yaml.tpl +++ b/templates/helm/templates/caches-role-binding.yaml.tpl @@ -3,12 +3,7 @@ kind: ClusterRoleBinding metadata: name: {{ IncludeTemplate "app.fullname" }}-namespaces-cache labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} roleRef: kind: ClusterRole apiGroup: rbac.authorization.k8s.io @@ -24,12 +19,7 @@ metadata: name: {{ IncludeTemplate "app.fullname" }}-configmaps-cache namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} roleRef: kind: Role apiGroup: rbac.authorization.k8s.io diff --git a/templates/helm/templates/caches-role.yaml.tpl b/templates/helm/templates/caches-role.yaml.tpl index 49dbe8a4..4a15f613 100644 --- a/templates/helm/templates/caches-role.yaml.tpl +++ b/templates/helm/templates/caches-role.yaml.tpl @@ -3,12 +3,7 @@ kind: ClusterRole metadata: name: {{ IncludeTemplate "app.fullname" }}-namespaces-cache labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} rules: - apiGroups: - "" @@ -25,12 +20,7 @@ metadata: name: {{ IncludeTemplate "app.fullname" }}-configmaps-cache namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} rules: - apiGroups: - "" diff --git a/templates/helm/templates/cluster-role-binding.yaml.tpl b/templates/helm/templates/cluster-role-binding.yaml.tpl index 17b7d9b2..d490bb77 100644 --- a/templates/helm/templates/cluster-role-binding.yaml.tpl +++ b/templates/helm/templates/cluster-role-binding.yaml.tpl @@ -4,12 +4,7 @@ kind: ClusterRoleBinding metadata: name: {{ IncludeTemplate "app.fullname" }}-rolebinding labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} roleRef: kind: ClusterRole apiGroup: rbac.authorization.k8s.io @@ -34,12 +29,7 @@ metadata: name: {{ "{{ $fullname }}" }}-{{ "{{ . }}" }} namespace: {{ "{{ . }}" }} labels: - app.kubernetes.io/name: {{ "{{ $fullname }}" }} - app.kubernetes.io/instance: {{ "{{ $.Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ $appVersion }}" }} - k8s-app: {{ "{{ $fullname }}" }} - helm.sh/chart: {{ "{{ $chartVersion }}" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} roleRef: kind: Role apiGroup: rbac.authorization.k8s.io diff --git a/templates/helm/templates/cluster-role-controller.yaml.tpl b/templates/helm/templates/cluster-role-controller.yaml.tpl index bb0a9192..ad18dd25 100644 --- a/templates/helm/templates/cluster-role-controller.yaml.tpl +++ b/templates/helm/templates/cluster-role-controller.yaml.tpl @@ -9,12 +9,7 @@ kind: ClusterRole metadata: name: {{ IncludeTemplate "app.fullname" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} {{ "{{- range $key, $value := $labels }}" }} {{ "{{ $key }}: {{ $value | quote }}" }} {{ "{{- end }}" }} @@ -30,12 +25,7 @@ metadata: name: {{ "{{ $fullname }}" }}-{{ "{{ . }}" }} namespace: {{ "{{ . }}" }} labels: - app.kubernetes.io/name: {{ "{{ $fullname }}" }} - app.kubernetes.io/instance: {{ "{{ $.Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ $appVersion }}" }} - k8s-app: {{ "{{ $fullname }}" }} - helm.sh/chart: {{ "{{ $chartVersion }}" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} {{ "{{- range $key, $value := $labels }}" }} {{ "{{ $key }}: {{ $value | quote }}" }} {{ "{{- end }}" }} diff --git a/templates/helm/templates/deployment.yaml.tpl b/templates/helm/templates/deployment.yaml.tpl index 4199253f..715ce539 100644 --- a/templates/helm/templates/deployment.yaml.tpl +++ b/templates/helm/templates/deployment.yaml.tpl @@ -4,18 +4,12 @@ metadata: name: {{ IncludeTemplate "app.fullname" }} namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} spec: replicas: {{ "{{ .Values.deployment.replicas }}" }} selector: matchLabels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} + {{ IncludeTemplate "app.selectorLabels" | nindent 6 }} template: metadata: {{ "{{- if .Values.deployment.annotations }}" }} @@ -25,10 +19,7 @@ spec: {{ "{{- end }}" }} {{ "{{- end }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - k8s-app: {{ IncludeTemplate "app.name" }} + {{ IncludeTemplate "app.selectorLabels" | nindent 8 }} {{ "{{- range $key, $value := .Values.deployment.labels }}" }} {{ "{{ $key }}: {{ $value | quote }}" }} {{ "{{- end }}" }} @@ -148,7 +139,7 @@ spec: {{ "{{- if .Values.deployment.extraEnvVars -}}" }} {{ "{{ toYaml .Values.deployment.extraEnvVars | nindent 8 }}" }} {{ "{{- end }}" }} - {{ "{{- if or .Values.aws.credentials.secretName .Values.deployment.extraVolumeMounts }}" }} + {{ "{{- if or .Values.aws.credentials.secretName .Values.deployment.extraVolumeMounts }}" }} volumeMounts: {{ "{{- if .Values.aws.credentials.secretName }}" }} - name: {{ "{{ .Values.aws.credentials.secretName }}" }} diff --git a/templates/helm/templates/leader-election-role-binding.yaml.tpl b/templates/helm/templates/leader-election-role-binding.yaml.tpl index 15f40ec7..5514977f 100644 --- a/templates/helm/templates/leader-election-role-binding.yaml.tpl +++ b/templates/helm/templates/leader-election-role-binding.yaml.tpl @@ -9,12 +9,7 @@ metadata: namespace: {{ "{{ .Release.Namespace }}" }} {{ "{{ end }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} roleRef: apiGroup: rbac.authorization.k8s.io kind: Role diff --git a/templates/helm/templates/leader-election-role.yaml.tpl b/templates/helm/templates/leader-election-role.yaml.tpl index 845f8d4a..7376e117 100644 --- a/templates/helm/templates/leader-election-role.yaml.tpl +++ b/templates/helm/templates/leader-election-role.yaml.tpl @@ -9,12 +9,7 @@ metadata: namespace: {{ "{{ .Release.Namespace }}" }} {{ "{{ end }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} rules: - apiGroups: - coordination.k8s.io diff --git a/templates/helm/templates/metrics-service.yaml.tpl b/templates/helm/templates/metrics-service.yaml.tpl index dbda1e78..83641fe3 100644 --- a/templates/helm/templates/metrics-service.yaml.tpl +++ b/templates/helm/templates/metrics-service.yaml.tpl @@ -5,18 +5,10 @@ metadata: name: {{ "{{ .Chart.Name | trimSuffix \"-chart\" | trunc 44 }}-controller-metrics" }} namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} spec: selector: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - k8s-app: {{ IncludeTemplate "app.name" }} + {{ IncludeTemplate "app.selectorLabels" | nindent 4 }} {{ "{{- range $key, $value := .Values.deployment.labels }}" }} {{ "{{ $key }}: {{ $value | quote }}" }} {{ "{{- end }}" }} diff --git a/templates/helm/templates/role-reader.yaml.tpl b/templates/helm/templates/role-reader.yaml.tpl index b7de4568..ff241c8e 100644 --- a/templates/helm/templates/role-reader.yaml.tpl +++ b/templates/helm/templates/role-reader.yaml.tpl @@ -6,12 +6,7 @@ metadata: name: {{ IncludeTemplate "app.fullname" }}-reader namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} rules: - apiGroups: - {{ .APIGroup }} diff --git a/templates/helm/templates/role-writer.yaml.tpl b/templates/helm/templates/role-writer.yaml.tpl index 4eadf20a..3f0632a8 100644 --- a/templates/helm/templates/role-writer.yaml.tpl +++ b/templates/helm/templates/role-writer.yaml.tpl @@ -6,12 +6,7 @@ metadata: name: {{ IncludeTemplate "app.fullname" }}-writer namespace: {{ "{{ .Release.Namespace }}" }} labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} rules: - apiGroups: - {{ .APIGroup }} diff --git a/templates/helm/templates/service-account.yaml.tpl b/templates/helm/templates/service-account.yaml.tpl index 832e51f4..301a2b48 100644 --- a/templates/helm/templates/service-account.yaml.tpl +++ b/templates/helm/templates/service-account.yaml.tpl @@ -3,12 +3,7 @@ apiVersion: v1 kind: ServiceAccount metadata: labels: - app.kubernetes.io/name: {{ IncludeTemplate "app.name" }} - app.kubernetes.io/instance: {{ "{{ .Release.Name }}" }} - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/version: {{ "{{ .Chart.AppVersion | quote }}" }} - k8s-app: {{ IncludeTemplate "app.name" }} - helm.sh/chart: {{ IncludeTemplate "chart.name-version" }} + {{ IncludeTemplate "app.labels" | nindent 4 }} name: {{ IncludeTemplate "service-account.name" }} namespace: {{ "{{ .Release.Namespace }}" }} annotations: diff --git a/templates/helm/values.yaml.tpl b/templates/helm/values.yaml.tpl index 0c8f1ad8..e60f5ae5 100644 --- a/templates/helm/values.yaml.tpl +++ b/templates/helm/values.yaml.tpl @@ -11,6 +11,9 @@ image: nameOverride: "" fullnameOverride: "" +# Additional labels to add to all resources +commonLabels: {} + deployment: annotations: {} labels: {}