From e4432221d612ee16989ab5ced581375b699482f4 Mon Sep 17 00:00:00 2001 From: wilsonge Date: Sun, 14 Nov 2021 02:21:05 +0000 Subject: [PATCH] Add kubernetes job name as the controller --- CHANGELOG.next.asciidoc | 1 + .../common/kubernetes/metadata/pod_test.go | 55 +++++++++++++++++++ .../common/kubernetes/metadata/resource.go | 3 +- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index bbf88e791f4..dfaa59994f6 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -26,6 +26,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Index template's default_fields setting is only populated with ECS fields. {pull}28596[28596] {issue}28215[28215] - Remove deprecated `--template` and `--ilm-policy` flags. Use `--index-management` instead. {pull}28870[28870] - Remove options `logging.files.suffix` and default to datetime endings. {pull}28927[28927] +- Add job.name in pods controlled by Jobs {pull}28954[28954] *Auditbeat* diff --git a/libbeat/common/kubernetes/metadata/pod_test.go b/libbeat/common/kubernetes/metadata/pod_test.go index 2ce0ad19877..ac810692693 100644 --- a/libbeat/common/kubernetes/metadata/pod_test.go +++ b/libbeat/common/kubernetes/metadata/pod_test.go @@ -252,6 +252,61 @@ func TestPod_Generate(t *testing.T) { }, }, }, + { + name: "test object with owner reference to Job", + input: &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + UID: types.UID(uid), + Namespace: namespace, + Labels: map[string]string{ + "foo": "bar", + }, + Annotations: map[string]string{ + "app": "production", + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "batch/v1", + Kind: "Job", + Name: "owner", + UID: "005f3b90-4b9d-12f8-acf0-31020a840144", + Controller: &boolean, + }, + }, + }, + TypeMeta: metav1.TypeMeta{ + Kind: "Pod", + APIVersion: "v1", + }, + Spec: v1.PodSpec{ + NodeName: "testnode", + }, + Status: v1.PodStatus{PodIP: "127.0.0.5"}, + }, + output: common.MapStr{ + "kubernetes": common.MapStr{ + "pod": common.MapStr{ + "name": "obj", + "uid": uid, + "ip": "127.0.0.5", + }, + "namespace": "default", + "job": common.MapStr{ + "name": "owner", + }, + "node": common.MapStr{ + "name": "testnode", + }, + "labels": common.MapStr{ + "foo": "bar", + }, + "annotations": common.MapStr{ + "app": "production", + }, + }, + }, + }, { name: "test object with owner reference to replicaset", input: &v1.Pod{ diff --git a/libbeat/common/kubernetes/metadata/resource.go b/libbeat/common/kubernetes/metadata/resource.go index 152c2be37a3..95f6ff8f909 100644 --- a/libbeat/common/kubernetes/metadata/resource.go +++ b/libbeat/common/kubernetes/metadata/resource.go @@ -118,7 +118,8 @@ func (r *Resource) GenerateK8s(kind string, obj kubernetes.Resource, options ... case "Deployment", "ReplicaSet", "StatefulSet", - "DaemonSet": + "DaemonSet", + "Job": safemapstr.Put(meta, strings.ToLower(ref.Kind)+".name", ref.Name) } }