Skip to content

Commit 4fb6a28

Browse files
authored
chore: Add new label and metadata to pod (#3586)
Add new label and metadata to pod
1 parent 08ba509 commit 4fb6a28

File tree

10 files changed

+48
-3
lines changed

10 files changed

+48
-3
lines changed

cmd/nginx-ingress/main.go

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ import (
4242
// Injected during build
4343
var version string
4444

45+
const (
46+
nginxVersionAnnotation = "app.nginx.org/version"
47+
versionAnnotation = "app.kubernetes.io/version"
48+
)
49+
4550
func main() {
4651
commitHash, commitTime, dirtyBuild := getBuildInfo()
4752
fmt.Printf("NGINX Ingress Controller Version=%v Commit=%v Date=%v DirtyState=%v Arch=%v/%v Go=%v\n", version, commitHash, commitTime, dirtyBuild, runtime.GOOS, runtime.GOARCH, runtime.Version())
@@ -64,7 +69,9 @@ func main() {
6469

6570
nginxManager, useFakeNginxManager := createNginxManager(managerCollector)
6671

67-
getNginxVersionInfo(nginxManager)
72+
nginxVersion := getNginxVersionInfo(nginxManager)
73+
74+
updateSelfWithVersionInfo(kubeClient, version, nginxVersion)
6875

6976
templateExecutor, templateExecutorV2 := createTemplateExecutors()
7077

@@ -367,7 +374,7 @@ func createNginxManager(managerCollector collectors.ManagerCollector) (nginx.Man
367374
return nginxManager, useFakeNginxManager
368375
}
369376

370-
func getNginxVersionInfo(nginxManager nginx.Manager) {
377+
func getNginxVersionInfo(nginxManager nginx.Manager) string {
371378
nginxVersion := nginxManager.Version()
372379
isPlus := strings.Contains(nginxVersion, "plus")
373380
glog.Infof("Using %s", nginxVersion)
@@ -377,6 +384,7 @@ func getNginxVersionInfo(nginxManager nginx.Manager) {
377384
} else if !*nginxPlus && isPlus {
378385
glog.Fatal("NGINX Plus binary found without NGINX Plus flag (-nginx-plus)")
379386
}
387+
return nginxVersion
380388
}
381389

382390
func startApAgentsAndPlugins(nginxManager nginx.Manager) (chan error, chan error, chan error) {
@@ -746,3 +754,29 @@ func processConfigMaps(kubeClient *kubernetes.Clientset, cfgParams *configs.Conf
746754
}
747755
return cfgParams
748756
}
757+
758+
func updateSelfWithVersionInfo(kubeClient *kubernetes.Clientset, version string, nginxVersion string) {
759+
pod, err := kubeClient.CoreV1().Pods(os.Getenv("POD_NAMESPACE")).Get(context.TODO(), os.Getenv("POD_NAME"), meta_v1.GetOptions{})
760+
if err != nil {
761+
glog.Errorf("Error getting pod: %v", err)
762+
return
763+
}
764+
765+
// Copy pod and update the annotations.
766+
newPod := pod.DeepCopy()
767+
ann := newPod.ObjectMeta.Annotations
768+
if ann == nil {
769+
ann = make(map[string]string)
770+
}
771+
ann[nginxVersionAnnotation] = strings.Split(nginxVersion, "/")[1]
772+
ann[versionAnnotation] = version
773+
newPod.ObjectMeta.Annotations = ann
774+
775+
_, err = kubeClient.CoreV1().Pods(newPod.ObjectMeta.Namespace).Update(context.TODO(), newPod, meta_v1.UpdateOptions{})
776+
if err != nil {
777+
glog.Errorf("Error updating pod with annotations: %v", err)
778+
return
779+
}
780+
781+
glog.Infof("Pod annotation updated: %s", pod.ObjectMeta.Name)
782+
}

deployments/daemon-set/nginx-ingress.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ spec:
1111
metadata:
1212
labels:
1313
app: nginx-ingress
14+
app.kubernetes.io/name: nginx-ingress
1415
#annotations:
1516
#prometheus.io/scrape: "true"
1617
#prometheus.io/port: "9113"

deployments/daemon-set/nginx-plus-ingress.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ spec:
1111
metadata:
1212
labels:
1313
app: nginx-ingress
14+
app.kubernetes.io/name: nginx-ingress
1415
#annotations:
1516
#prometheus.io/scrape: "true"
1617
#prometheus.io/port: "9113"

deployments/deployment/nginx-ingress.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ spec:
1212
metadata:
1313
labels:
1414
app: nginx-ingress
15+
app.kubernetes.io/name: nginx-ingress
1516
#annotations:
1617
#prometheus.io/scrape: "true"
1718
#prometheus.io/port: "9113"

deployments/deployment/nginx-plus-ingress.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ spec:
1212
metadata:
1313
labels:
1414
app: nginx-ingress
15+
app.kubernetes.io/name: nginx-ingress
1516
#annotations:
1617
#prometheus.io/scrape: "true"
1718
#prometheus.io/port: "9113"

deployments/helm-chart/templates/_helpers.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Expand the name of the chart.
1111
Create labels
1212
*/}}
1313
{{- define "nginx-ingress.labels" -}}
14-
app.kubernetes.io/name: {{ include "nginx-ingress.name" . }}
14+
app.kubernetes.io/name: {{ .Chart.Name }}
1515
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
1616
app.kubernetes.io/managed-by: {{ .Release.Service }}
1717
app.kubernetes.io/instance: {{ .Release.Name }}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ spec:
1717
metadata:
1818
labels:
1919
app: {{ include "nginx-ingress.appName" . }}
20+
app.kubernetes.io/name: nginx-ingress
2021
{{- if .Values.nginxServiceMesh.enable }}
2122
nsm.nginx.com/daemonset: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
2223
spiffe.io/spiffeid: "true"

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ metadata:
55
name: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
66
namespace: {{ .Release.Namespace }}
77
labels:
8+
app.kubernetes.io/name: nginx-ingress
89
{{- include "nginx-ingress.labels" . | nindent 4 }}
910
{{- if .Values.controller.annotations }}
1011
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
@@ -18,6 +19,7 @@ spec:
1819
metadata:
1920
labels:
2021
app: {{ include "nginx-ingress.appName" . }}
22+
app.kubernetes.io/name: nginx-ingress
2123
{{- if .Values.nginxServiceMesh.enable }}
2224
nsm.nginx.com/deployment: {{ default (include "nginx-ingress.name" .) .Values.controller.name }}
2325
spiffe.io/spiffeid: "true"

deployments/helm-chart/templates/rbac.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,10 @@ rules:
7171
resources:
7272
- pods
7373
verbs:
74+
- get
7475
- list
7576
- watch
77+
- update
7678
- apiGroups:
7779
- ""
7880
resources:

deployments/rbac/rbac.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ rules:
4242
resources:
4343
- pods
4444
verbs:
45+
- get
4546
- list
4647
- watch
48+
- update
4749
- apiGroups:
4850
- ""
4951
resources:

0 commit comments

Comments
 (0)