Skip to content

Commit 96077f9

Browse files
authored
Fix Helm Chart labels and templates. Move version update to labels (#3606)
Fix Helm Chart labels and templates. Move version update to labels. "app.kubernetes.io/version" and "app.nginx.org/version" should be labels and not annotations. This also fixes name generation for the Helm Chart and adds selector labels.
1 parent 1823da6 commit 96077f9

18 files changed

+107
-108
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,7 @@ jobs:
242242
working-directory: ${{ github.workspace }}/deployments/helm-chart
243243
- name: Expose Test Ingresses
244244
run: |
245-
kubectl port-forward service/${{ matrix.type }}-nginx-ingress 8080:80 &
246-
kubectl port-forward service/${{ matrix.type }}-nginx-ingress 8443:443 &
245+
kubectl port-forward service/${{ matrix.type }}-nginx-ingress-controller 8080:80 8443:443 &
247246
- name: Test HTTP
248247
run: |
249248
counter=0
@@ -393,8 +392,8 @@ jobs:
393392
run: |
394393
mv ${{ steps.package.outputs.path }} ${{ github.workspace }}/helm-charts/${{ steps.package-helm.outputs.type }}/
395394
cd ${{ github.workspace }}/helm-charts
396-
helm repo index ${{ needs.package-helm.outputs.type }} --url https://helm.nginx.com/${{ needs.package-helm.outputs.type }}
395+
helm repo index ${{ steps.package-helm.outputs.type }} --url https://helm.nginx.com/${{ steps.package-helm.outputs.type }}
397396
git add -A
398397
git -c user.name='NGINX Kubernetes Team' -c user.email='[email protected]' \
399-
commit -m "NGINX Ingress Controller - Release ${{ needs.package-helm.outputs.type }} ${{ needs.package-helm.outputs.version }}"
398+
commit -m "NGINX Ingress Controller - Release ${{ steps.package-helm.outputs.type }} ${{ steps.package-helm.outputs.version }}"
400399
git push -u origin master

cmd/nginx-ingress/main.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ import (
4343
var version string
4444

4545
const (
46-
nginxVersionAnnotation = "app.nginx.org/version"
47-
versionAnnotation = "app.kubernetes.io/version"
46+
nginxVersionLabel = "app.nginx.org/version"
47+
versionLabel = "app.kubernetes.io/version"
4848
)
4949

5050
func main() {
@@ -762,21 +762,21 @@ func updateSelfWithVersionInfo(kubeClient *kubernetes.Clientset, version string,
762762
return
763763
}
764764

765-
// Copy pod and update the annotations.
765+
// Copy pod and update the labels.
766766
newPod := pod.DeepCopy()
767-
ann := newPod.ObjectMeta.Annotations
768-
if ann == nil {
769-
ann = make(map[string]string)
767+
labels := newPod.ObjectMeta.Labels
768+
if labels == nil {
769+
labels = make(map[string]string)
770770
}
771-
ann[nginxVersionAnnotation] = strings.Split(nginxVersion, "/")[1]
772-
ann[versionAnnotation] = version
773-
newPod.ObjectMeta.Annotations = ann
771+
labels[nginxVersionLabel] = strings.TrimSuffix(strings.Split(nginxVersion, "/")[1], "\n")
772+
labels[versionLabel] = strings.TrimPrefix(version, "v")
773+
newPod.ObjectMeta.Labels = labels
774774

775775
_, err = kubeClient.CoreV1().Pods(newPod.ObjectMeta.Namespace).Update(context.TODO(), newPod, meta_v1.UpdateOptions{})
776776
if err != nil {
777-
glog.Errorf("Error updating pod with annotations: %v", err)
777+
glog.Errorf("Error updating pod with labels: %v", err)
778778
return
779779
}
780780

781-
glog.Infof("Pod annotation updated: %s", pod.ObjectMeta.Name)
781+
glog.Infof("Pod label updated: %s", pod.ObjectMeta.Name)
782782
}

deployments/helm-chart/templates/_helpers.tpl

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,61 @@
44
Expand the name of the chart.
55
*/}}
66
{{- define "nginx-ingress.name" -}}
7-
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}
7+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
8+
{{- end }}
9+
10+
{{/*
11+
Create a default fully qualified app name.
12+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
13+
If release name contains chart name it will be used as a full name.
14+
*/}}
15+
{{- define "nginx-ingress.fullname" -}}
16+
{{- if .Values.fullnameOverride }}
17+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
18+
{{- else }}
19+
{{- $name := default .Chart.Name .Values.nameOverride }}
20+
{{- if contains $name .Release.Name }}
21+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
22+
{{- else }}
23+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
24+
{{- end }}
25+
{{- end }}
26+
{{- end }}
27+
28+
{{/*
29+
Create a default fully qualified controller name.
30+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
31+
*/}}
32+
{{- define "nginx-ingress.controller.fullname" -}}
33+
{{- printf "%s-%s" (include "nginx-ingress.fullname" .) .Values.controller.name | trunc 63 | trimSuffix "-" -}}
834
{{- end -}}
935

1036
{{/*
11-
Create labels
37+
Create chart name and version as used by the chart label.
38+
*/}}
39+
{{- define "nginx-ingress.chart" -}}
40+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
41+
{{- end }}
42+
43+
{{/*
44+
Common labels
1245
*/}}
1346
{{- define "nginx-ingress.labels" -}}
14-
app.kubernetes.io/name: {{ .Chart.Name }}
15-
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
47+
helm.sh/chart: {{ include "nginx-ingress.chart" . }}
48+
{{ include "nginx-ingress.selectorLabels" . }}
49+
{{- if .Chart.AppVersion }}
50+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
51+
{{- end }}
1652
app.kubernetes.io/managed-by: {{ .Release.Service }}
53+
{{- end }}
54+
55+
{{/*
56+
Selector labels
57+
*/}}
58+
{{- define "nginx-ingress.selectorLabels" -}}
59+
app.kubernetes.io/name: {{ include "nginx-ingress.name" . }}
1760
app.kubernetes.io/instance: {{ .Release.Name }}
18-
{{- end -}}
61+
{{- end }}
1962

2063
{{/*
2164
Expand the name of the configmap.
@@ -24,7 +67,7 @@ Expand the name of the configmap.
2467
{{- if .Values.controller.customConfigMap -}}
2568
{{ .Values.controller.customConfigMap }}
2669
{{- else -}}
27-
{{- default (include "nginx-ingress.name" .) .Values.controller.config.name -}}
70+
{{- default (include "nginx-ingress.fullname" .) .Values.controller.config.name -}}
2871
{{- end -}}
2972
{{- end -}}
3073

@@ -35,50 +78,29 @@ Expand leader election lock name.
3578
{{- if .Values.controller.reportIngressStatus.leaderElectionLockName -}}
3679
{{ .Values.controller.reportIngressStatus.leaderElectionLockName }}
3780
{{- else -}}
38-
{{- printf "%s-%s" (include "nginx-ingress.name" .) "leader-election" -}}
81+
{{- printf "%s-%s" (include "nginx-ingress.fullname" .) "leader-election" -}}
3982
{{- end -}}
4083
{{- end -}}
4184

4285
{{/*
4386
Expand service account name.
4487
*/}}
4588
{{- define "nginx-ingress.serviceAccountName" -}}
46-
{{- default (include "nginx-ingress.name" .) .Values.controller.serviceAccount.name -}}
47-
{{- end -}}
48-
49-
{{/*
50-
Expand service name.
51-
*/}}
52-
{{- define "nginx-ingress.serviceName" -}}
53-
{{- default (include "nginx-ingress.name" .) .Values.controller.service.name }}
54-
{{- end -}}
55-
56-
{{/*
57-
Expand serviceMonitor name.
58-
*/}}
59-
{{- define "nginx-ingress.serviceMonitorName" -}}
60-
{{- default (include "nginx-ingress.name" .) .Values.controller.serviceMonitor.name }}
89+
{{- default (include "nginx-ingress.fullname" .) .Values.controller.serviceAccount.name -}}
6190
{{- end -}}
6291

6392
{{/*
6493
Expand default TLS name.
6594
*/}}
6695
{{- define "nginx-ingress.defaultTLSName" -}}
67-
{{- printf "%s-%s" (include "nginx-ingress.name" .) "default-server-tls" -}}
96+
{{- printf "%s-%s" (include "nginx-ingress.fullname" .) "default-server-tls" -}}
6897
{{- end -}}
6998

7099
{{/*
71100
Expand wildcard TLS name.
72101
*/}}
73102
{{- define "nginx-ingress.wildcardTLSName" -}}
74-
{{- printf "%s-%s" (include "nginx-ingress.name" .) "wildcard-tls" -}}
75-
{{- end -}}
76-
77-
{{/*
78-
Expand app name.
79-
*/}}
80-
{{- define "nginx-ingress.appName" -}}
81-
{{- default (include "nginx-ingress.name" .) .Values.controller.name -}}
103+
{{- printf "%s-%s" (include "nginx-ingress.fullname" .) "wildcard-tls" -}}
82104
{{- end -}}
83105

84106
{{- define "nginx-ingress.tag" -}}

deployments/helm-chart/templates/controller-daemonset.yaml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: apps/v1
33
kind: DaemonSet
44
metadata:
5-
name: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
5+
name: {{ include "nginx-ingress.controller.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
88
{{- include "nginx-ingress.labels" . | nindent 4 }}
@@ -12,14 +12,13 @@ metadata:
1212
spec:
1313
selector:
1414
matchLabels:
15-
app: {{ include "nginx-ingress.appName" . }}
15+
{{- include "nginx-ingress.selectorLabels" . | nindent 6 }}
1616
template:
1717
metadata:
1818
labels:
19-
app: {{ include "nginx-ingress.appName" . }}
20-
app.kubernetes.io/name: nginx-ingress
19+
{{- include "nginx-ingress.selectorLabels" . | nindent 8 }}
2120
{{- if .Values.nginxServiceMesh.enable }}
22-
nsm.nginx.com/daemonset: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
21+
nsm.nginx.com/daemonset: {{ include "nginx-ingress.controller.fullname" . }}
2322
spiffe.io/spiffeid: "true"
2423
{{- end }}
2524
{{- if .Values.controller.pod.extraLabels }}
@@ -198,7 +197,7 @@ spec:
198197
{{- else if .Values.controller.reportIngressStatus.externalService }}
199198
- -external-service={{ .Values.controller.reportIngressStatus.externalService }}
200199
{{- else if and (.Values.controller.service.create) (eq .Values.controller.service.type "LoadBalancer") }}
201-
- -external-service={{ include "nginx-ingress.serviceName" . }}
200+
- -external-service={{ include "nginx-ingress.controller.fullname" . }}
202201
{{- end }}
203202
{{- end }}
204203
- -enable-leader-election={{ .Values.controller.reportIngressStatus.enableLeaderElection }}

deployments/helm-chart/templates/controller-deployment.yaml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
apiVersion: apps/v1
33
kind: Deployment
44
metadata:
5-
name: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
5+
name: {{ include "nginx-ingress.controller.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
8-
app.kubernetes.io/name: nginx-ingress
98
{{- include "nginx-ingress.labels" . | nindent 4 }}
109
{{- if .Values.controller.annotations }}
1110
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
@@ -14,14 +13,13 @@ spec:
1413
replicas: {{ .Values.controller.replicaCount }}
1514
selector:
1615
matchLabels:
17-
app: {{ include "nginx-ingress.appName" . }}
16+
{{- include "nginx-ingress.selectorLabels" . | nindent 6 }}
1817
template:
1918
metadata:
2019
labels:
21-
app: {{ include "nginx-ingress.appName" . }}
22-
app.kubernetes.io/name: nginx-ingress
20+
{{- include "nginx-ingress.selectorLabels" . | nindent 8 }}
2321
{{- if .Values.nginxServiceMesh.enable }}
24-
nsm.nginx.com/deployment: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
22+
nsm.nginx.com/deployment: {{ include "nginx-ingress.controller.fullname" . }}
2523
spiffe.io/spiffeid: "true"
2624
{{- end }}
2725
{{- if .Values.controller.pod.extraLabels }}
@@ -98,9 +96,9 @@ spec:
9896
containerPort: 80
9997
- name: https
10098
containerPort: 443
101-
{{ if .Values.controller.customPorts }}
99+
{{- if .Values.controller.customPorts }}
102100
{{ toYaml .Values.controller.customPorts | indent 8 }}
103-
{{ end }}
101+
{{- end }}
104102
{{- if .Values.prometheus.create }}
105103
- name: prometheus
106104
containerPort: {{ .Values.prometheus.port }}
@@ -202,7 +200,7 @@ spec:
202200
{{- else if .Values.controller.reportIngressStatus.externalService }}
203201
- -external-service={{ .Values.controller.reportIngressStatus.externalService }}
204202
{{- else if and (.Values.controller.service.create) (eq .Values.controller.service.type "LoadBalancer") }}
205-
- -external-service={{ include "nginx-ingress.serviceName" . }}
203+
- -external-service={{ include "nginx-ingress.controller.fullname" . }}
206204
{{- end }}
207205
{{- end }}
208206
- -enable-leader-election={{ .Values.controller.reportIngressStatus.enableLeaderElection }}

deployments/helm-chart/templates/controller-globalconfiguration.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: k8s.nginx.org/v1alpha1
33
kind: GlobalConfiguration
44
metadata:
5-
name: {{ include "nginx-ingress.name" . }}
5+
name: {{ include "nginx-ingress.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
88
{{- include "nginx-ingress.labels" . | nindent 4 }}

deployments/helm-chart/templates/controller-hpa.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: autoscaling/v2
33
kind: HorizontalPodAutoscaler
44
metadata:
5-
name: {{ include "nginx-ingress.serviceName" . }}
5+
name: {{ include "nginx-ingress.controller.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
88
{{- include "nginx-ingress.labels" . | nindent 4 }}
@@ -14,7 +14,7 @@ spec:
1414
scaleTargetRef:
1515
apiVersion: apps/v1
1616
kind: Deployment
17-
name: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
17+
name: {{ include "nginx-ingress.controller.fullname" . }}
1818
minReplicas: {{ .Values.controller.autoscaling.minReplicas }}
1919
maxReplicas: {{ .Values.controller.autoscaling.maxReplicas }}
2020
metrics:

deployments/helm-chart/templates/controller-ingress-class.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ apiVersion: networking.k8s.io/v1
22
kind: IngressClass
33
metadata:
44
name: {{ .Values.controller.ingressClass }}
5+
labels:
6+
{{- include "nginx-ingress.labels" . | nindent 4 }}
57
{{- if .Values.controller.setAsDefaultIngress }}
68
annotations:
79
ingressclass.kubernetes.io/is-default-class: "true"

deployments/helm-chart/templates/controller-pdb.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
{{- if .Values.controller.podDisruptionBudget -}}
1+
{{- if .Values.controller.podDisruptionBudget.enabled -}}
22
apiVersion: policy/v1
33
kind: PodDisruptionBudget
44
metadata:
5-
name: {{ include "nginx-ingress.serviceName" . }}
5+
name: {{ include "nginx-ingress.controller.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
88
{{- include "nginx-ingress.labels" . | nindent 4 }}
@@ -13,7 +13,7 @@ metadata:
1313
spec:
1414
selector:
1515
matchLabels:
16-
app: {{ include "nginx-ingress.appName" . }}
16+
{{- include "nginx-ingress.selectorLabels" . | nindent 6 }}
1717
{{- if .Values.controller.podDisruptionBudget.minAvailable }}
1818
minAvailable: {{ .Values.controller.podDisruptionBudget.minAvailable }}
1919
{{- end }}

deployments/helm-chart/templates/controller-service.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: v1
33
kind: Service
44
metadata:
5-
name: {{ include "nginx-ingress.serviceName" . }}
5+
name: {{ include "nginx-ingress.controller.fullname" . }}
66
namespace: {{ .Release.Namespace }}
77
labels:
88
{{- include "nginx-ingress.labels" . | nindent 4 }}
@@ -61,7 +61,7 @@ spec:
6161
{{- end }}
6262
{{- end }}
6363
selector:
64-
app: {{ include "nginx-ingress.appName" . }}
64+
{{- include "nginx-ingress.selectorLabels" . | nindent 4 }}
6565
{{- if .Values.controller.service.externalIPs }}
6666
externalIPs:
6767
{{ toYaml .Values.controller.service.externalIPs | indent 4 }}

0 commit comments

Comments
 (0)