Skip to content

Commit 7665779

Browse files
committed
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 96e1fe4 commit 7665779

18 files changed

+105
-106
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@ jobs:
247247
working-directory: ${{ github.workspace }}/deployments/helm-chart
248248
- name: Expose Test Ingresses
249249
run: |
250-
kubectl port-forward service/${{ matrix.type }}-nginx-ingress 8080:80 &
251-
kubectl port-forward service/${{ matrix.type }}-nginx-ingress 8443:443 &
250+
kubectl port-forward service/${{ matrix.type }}-nginx-ingress-controller 8080:80 8443:443 &
252251
- name: Test HTTP
253252
run: |
254253
counter=0

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
{{/*

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 }}
@@ -196,7 +195,7 @@ spec:
196195
{{- else if .Values.controller.reportIngressStatus.externalService }}
197196
- -external-service={{ .Values.controller.reportIngressStatus.externalService }}
198197
{{- else if and (.Values.controller.service.create) (eq .Values.controller.service.type "LoadBalancer") }}
199-
- -external-service={{ include "nginx-ingress.serviceName" . }}
198+
- -external-service={{ include "nginx-ingress.controller.fullname" . }}
200199
{{- end }}
201200
{{- end }}
202201
- -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 }}
@@ -96,9 +94,9 @@ spec:
9694
containerPort: 80
9795
- name: https
9896
containerPort: 443
99-
{{ if .Values.controller.customPorts }}
97+
{{- if .Values.controller.customPorts }}
10098
{{ toYaml .Values.controller.customPorts | indent 8 }}
101-
{{ end }}
99+
{{- end }}
102100
{{- if .Values.prometheus.create }}
103101
- name: prometheus
104102
containerPort: {{ .Values.prometheus.port }}
@@ -200,7 +198,7 @@ spec:
200198
{{- else if .Values.controller.reportIngressStatus.externalService }}
201199
- -external-service={{ .Values.controller.reportIngressStatus.externalService }}
202200
{{- else if and (.Values.controller.service.create) (eq .Values.controller.service.type "LoadBalancer") }}
203-
- -external-service={{ include "nginx-ingress.serviceName" . }}
201+
- -external-service={{ include "nginx-ingress.controller.fullname" . }}
204202
{{- end }}
205203
{{- end }}
206204
- -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)