diff --git a/pkg/export/attributes/attr_defs.go b/pkg/export/attributes/attr_defs.go index e63a5b9c7..87f5946c0 100644 --- a/pkg/export/attributes/attr_defs.go +++ b/pkg/export/attributes/attr_defs.go @@ -107,6 +107,7 @@ func getDefinitions(groups AttrGroups) map[Section]AttrReportGroup { attr.K8sPodUID: true, attr.K8sPodStartTime: true, attr.K8sClusterName: true, + attr.K8sOwnerName: true, }, } diff --git a/pkg/export/attributes/names/attrs.go b/pkg/export/attributes/names/attrs.go index 55eac8bc3..80346c4b0 100644 --- a/pkg/export/attributes/names/attrs.go +++ b/pkg/export/attributes/names/attrs.go @@ -54,16 +54,16 @@ const ( MessagingSystem = Name(semconv.MessagingSystemKey) MessagingDestination = Name(semconv.MessagingDestinationNameKey) - K8sNamespaceName = Name("k8s.namespace.name") - K8sPodName = Name("k8s.pod.name") - K8sDeploymentName = Name("k8s.deployment.name") - K8sReplicaSetName = Name("k8s.replicaset.name") - K8sDaemonSetName = Name("k8s.daemonset.name") - K8sStatefulSetName = Name("k8s.statefulset.name") - K8sUnknownOwnerName = Name("k8s.owner.name") - K8sNodeName = Name("k8s.node.name") - K8sPodUID = Name("k8s.pod.uid") - K8sPodStartTime = Name("k8s.pod.start_time") + K8sNamespaceName = Name("k8s.namespace.name") + K8sPodName = Name("k8s.pod.name") + K8sDeploymentName = Name("k8s.deployment.name") + K8sReplicaSetName = Name("k8s.replicaset.name") + K8sDaemonSetName = Name("k8s.daemonset.name") + K8sStatefulSetName = Name("k8s.statefulset.name") + K8sOwnerName = Name("k8s.owner.name") + K8sNodeName = Name("k8s.node.name") + K8sPodUID = Name("k8s.pod.uid") + K8sPodStartTime = Name("k8s.pod.start_time") ) // Beyla-specific network attributes diff --git a/pkg/internal/discover/watcher_kube.go b/pkg/internal/discover/watcher_kube.go index 66242c9ca..4dd0af7a0 100644 --- a/pkg/internal/discover/watcher_kube.go +++ b/pkg/internal/discover/watcher_kube.go @@ -9,6 +9,7 @@ import ( "github.com/mariomac/pipes/pipe" "k8s.io/client-go/tools/cache" + attr "github.com/grafana/beyla/pkg/export/attributes/names" "github.com/grafana/beyla/pkg/internal/helpers/container" "github.com/grafana/beyla/pkg/internal/helpers/maps" "github.com/grafana/beyla/pkg/internal/imetrics" @@ -338,20 +339,12 @@ func withMetadata(pp processAttrs, info *kube.PodInfo) processAttrs { services.AttrPodName: info.Name, } ret.podLabels = info.Labels - owner := info.Owner - for owner != nil { - ret.metadata[services.AttrOwnerName] = owner.Name - switch owner.LabelName { - case kube.OwnerDaemonSet: - ret.metadata[services.AttrDaemonSetName] = owner.Name - case kube.OwnerReplicaSet: - ret.metadata[services.AttrReplicaSetName] = owner.Name - case kube.OwnerDeployment: - ret.metadata[services.AttrDeploymentName] = owner.Name - case kube.OwnerStatefulSet: - ret.metadata[services.AttrStatefulSetName] = owner.Name - } - owner = owner.Owner + + if info.Owner != nil { + ret.metadata[attr.Name(info.Owner.LabelName).Prom()] = info.Owner.Name + topName, topLabel := info.Owner.TopOwnerNameLabel() + ret.metadata[attr.Name(topLabel).Prom()] = topName + ret.metadata[services.AttrOwnerName] = topName } return ret } diff --git a/pkg/internal/discover/watcher_kube_test.go b/pkg/internal/discover/watcher_kube_test.go index cc7e825a7..3c08b9f1c 100644 --- a/pkg/internal/discover/watcher_kube_test.go +++ b/pkg/internal/discover/watcher_kube_test.go @@ -30,9 +30,9 @@ const ( containerPID = 123 containerID = "container-123" containerPort = 332 - replicaSetName = "rs-3321" + replicaSetName = "the-deployment-123456789" deploymentName = "the-deployment" - podName = "the-pod" + podName = "the-deployment-123456789-abcde" ) func TestWatcherKubeEnricher(t *testing.T) { @@ -155,8 +155,8 @@ func TestWatcherKubeEnricherWithMatcher(t *testing.T) { newProcess(inputCh, 123, []uint32{777}) newProcess(inputCh, 456, []uint32{}) newProcess(inputCh, 789, []uint32{443}) - deployOwnedPod(t, k8sClient, namespace, "pod-789", "rs-789", "container-789") - deployReplicaSet(t, k8sClient, namespace, "rs-789", "ouyeah") + deployOwnedPod(t, k8sClient, namespace, "depl-rsid-podid", "depl-rsid", "container-789") + deployReplicaSet(t, k8sClient, namespace, "depl-rsid", "depl") }) // sending events that will match and will be forwarded @@ -205,8 +205,8 @@ func TestWatcherKubeEnricherWithMatcher(t *testing.T) { t.Run("both process and metadata match", func(t *testing.T) { newProcess(inputCh, 56, []uint32{443}) - deployOwnedPod(t, k8sClient, namespace, "pod-56", "rs-56", "container-56") - deployReplicaSet(t, k8sClient, namespace, "rs-56", "chacha") + deployOwnedPod(t, k8sClient, namespace, "chacha-rsid-podid", "chacha-rsid", "container-56") + deployReplicaSet(t, k8sClient, namespace, "chacha-rsid", "chacha") matches := testutil.ReadChannel(t, outputCh, timeout) require.Len(t, matches, 1) m := matches[0] diff --git a/pkg/internal/ebpf/httpssl/bpf_x86_bpfel.o b/pkg/internal/ebpf/httpssl/bpf_x86_bpfel.o index efa480980..b45a2130a 100644 --- a/pkg/internal/ebpf/httpssl/bpf_x86_bpfel.o +++ b/pkg/internal/ebpf/httpssl/bpf_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67dea49eb706de9128f88307465425297f108a1a69db7929b3c0fca71b4a761a +oid sha256:85531578e47d8a5aa4dd56d7d5a7eb90aee7668b5b90569b75c3ed33c5121c4d size 245976 diff --git a/pkg/internal/kube/informer.go b/pkg/internal/kube/informer.go index f05f77794..bc60da3a5 100644 --- a/pkg/internal/kube/informer.go +++ b/pkg/internal/kube/informer.go @@ -430,14 +430,8 @@ func (k *Metadata) AddNodeEventHandler(h cache.ResourceEventHandler) error { } func (i *PodInfo) ServiceName() string { - if i.Owner != nil { - // we have two levels of ownership at most - if i.Owner.Owner != nil { - return i.Owner.Owner.Name - } - - return i.Owner.Name + if on, _ := i.Owner.TopOwnerNameLabel(); on != "" { + return on } - return i.Name } diff --git a/pkg/internal/kube/informer_test.go b/pkg/internal/kube/informer_test.go index 7f675c4b9..b6455a2e1 100644 --- a/pkg/internal/kube/informer_test.go +++ b/pkg/internal/kube/informer_test.go @@ -16,6 +16,7 @@ func TestServiceName(t *testing.T) { pod2 := PodInfo{ Owner: &Owner{ + LabelName: OwnerReplicaSet, Owner: &Owner{ Name: "nested_two", }, @@ -23,19 +24,6 @@ func TestServiceName(t *testing.T) { } pod3 := PodInfo{ - Owner: &Owner{ - Owner: &Owner{ - Owner: &Owner{ - Name: "nested_three", - }, - }, - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "too_nested", - }, - } - - pod4 := PodInfo{ ObjectMeta: metav1.ObjectMeta{ Name: "not_nested", }, @@ -45,7 +33,6 @@ func TestServiceName(t *testing.T) { assert.Equal(t, "nested_one", pod.ServiceName()) assert.Equal(t, "nested_two", pod2.ServiceName()) - assert.Equal(t, "", pod3.ServiceName()) - assert.Equal(t, "not_nested", pod4.ServiceName()) + assert.Equal(t, "not_nested", pod3.ServiceName()) assert.Equal(t, "", pod5.ServiceName()) } diff --git a/pkg/internal/kube/owner.go b/pkg/internal/kube/owner.go index cd197fe6d..d8e99b909 100644 --- a/pkg/internal/kube/owner.go +++ b/pkg/internal/kube/owner.go @@ -15,7 +15,7 @@ const ( OwnerDeployment = OwnerLabel(attr.K8sDeploymentName) OwnerStatefulSet = OwnerLabel(attr.K8sStatefulSetName) OwnerDaemonSet = OwnerLabel(attr.K8sDaemonSetName) - OwnerUnknown = OwnerLabel(attr.K8sUnknownOwnerName) + OwnerGeneric = OwnerLabel(attr.K8sOwnerName) ) type Owner struct { @@ -57,11 +57,37 @@ func OwnerFrom(orefs []metav1.OwnerReference) *Owner { func unrecognizedOwner(or *metav1.OwnerReference) *Owner { return &Owner{ - LabelName: OwnerLabel(attr.K8sUnknownOwnerName), + LabelName: OwnerLabel(attr.K8sOwnerName), Name: or.Name, } } +// TopOwnerNameLabel returns the top-level name and metadata label in the owner chain. +// For example, if the owner is a ReplicaSet, it will return the Deployment name. +func (o *Owner) TopOwnerNameLabel() (string, OwnerLabel) { + if o == nil { + return "", "" + } + if o.LabelName == OwnerReplicaSet { + // we have two levels of ownership at most + if o.Owner != nil { + return o.Owner.Name, o.Owner.LabelName + } + // if the replicaset informer is disabled, we can't get the owner deployment, + // so we will heuristically extract it from the ReplicaSet Name (and cache it) + topOwnerName := o.Name + if idx := strings.LastIndexByte(topOwnerName, '-'); idx > 0 { + topOwnerName = topOwnerName[:idx] + o.Owner = &Owner{ + Name: topOwnerName, + LabelName: OwnerDeployment, + } + return topOwnerName, OwnerDeployment + } + } + return o.Name, o.LabelName +} + func (o *Owner) String() string { sb := strings.Builder{} o.string(&sb) diff --git a/pkg/internal/kube/owner_test.go b/pkg/internal/kube/owner_test.go index 82e966bdd..db42359ac 100644 --- a/pkg/internal/kube/owner_test.go +++ b/pkg/internal/kube/owner_test.go @@ -41,7 +41,7 @@ func TestOwnerFrom_Unrecognized(t *testing.T) { }) require.NotNil(t, owner) assert.Equal(t, &Owner{ - LabelName: OwnerUnknown, + LabelName: OwnerGeneric, Name: "theowner", }, owner) } @@ -52,7 +52,36 @@ func TestOwnerFrom_Unrecognized_AppsV1(t *testing.T) { }) require.NotNil(t, owner) assert.Equal(t, &Owner{ - LabelName: OwnerUnknown, + LabelName: OwnerGeneric, Name: "theowner", }, owner) } + +func TestTopOwnerLabel(t *testing.T) { + type testCase struct { + expectedLabel OwnerLabel + expectedName string + owner *Owner + } + for _, tc := range []testCase{ + {owner: nil}, + {expectedLabel: OwnerDaemonSet, expectedName: "ds", + owner: &Owner{LabelName: OwnerDaemonSet, Name: "ds"}}, + {expectedLabel: OwnerDeployment, expectedName: "rs-without-dep-meta", + owner: &Owner{LabelName: OwnerReplicaSet, Name: "rs-without-dep-meta-34fb1fa3a"}}, + {expectedLabel: OwnerDeployment, expectedName: "dep", + owner: &Owner{LabelName: OwnerReplicaSet, Name: "dep-34fb1fa3a", + Owner: &Owner{LabelName: OwnerDeployment, Name: "dep"}}}, + } { + t.Run(tc.expectedName, func(t *testing.T) { + name, label := tc.owner.TopOwnerNameLabel() + assert.Equal(t, tc.expectedName, name) + assert.Equal(t, tc.expectedLabel, label) + + // check that the output is consistent (e.g. after ReplicaSet owner data is cached) + name, label = tc.owner.TopOwnerNameLabel() + assert.Equal(t, tc.expectedName, name) + assert.Equal(t, tc.expectedLabel, label) + }) + } +} diff --git a/pkg/internal/netolly/ebpf/net_arm64_bpfel.o b/pkg/internal/netolly/ebpf/net_arm64_bpfel.o index 29755eeae..c26a2a9fd 100644 --- a/pkg/internal/netolly/ebpf/net_arm64_bpfel.o +++ b/pkg/internal/netolly/ebpf/net_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f1926ab4ebb8e41fa9d2d5f9bc0bfc351cec56b6d48ba22be01beb4335d2c3e +oid sha256:b2d5bbea40924b5d2e5954cb9ee69a8ec5008777747516586225d77ae3b5fa26 size 31232 diff --git a/pkg/internal/netolly/ebpf/netsk_x86_bpfel.o b/pkg/internal/netolly/ebpf/netsk_x86_bpfel.o index 999228ea5..916be9db5 100644 --- a/pkg/internal/netolly/ebpf/netsk_x86_bpfel.o +++ b/pkg/internal/netolly/ebpf/netsk_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71a96753d080b4641984f14c9b5615930a33d035d18febfceed706c779103485 +oid sha256:b3746deaaa2b5df4c010273dbaee625518d85e857625d64ddc4327529ef9e773 size 28368 diff --git a/pkg/transform/k8s.go b/pkg/transform/k8s.go index 16418dda5..40601a2f7 100644 --- a/pkg/transform/k8s.go +++ b/pkg/transform/k8s.go @@ -128,10 +128,10 @@ func (md *metadataDecorator) appendMetadata(span *request.Span, info *kube.PodIn attr.K8sPodStartTime: info.StartTimeStr, attr.K8sClusterName: md.clusterName, } - owner := info.Owner - for owner != nil { - span.ServiceID.Metadata[attr.Name(owner.LabelName)] = owner.Name - owner = owner.Owner + if info.Owner != nil { + span.ServiceID.Metadata[attr.Name(info.Owner.LabelName)] = info.Owner.Name + topName, topLabel := info.Owner.TopOwnerNameLabel() + span.ServiceID.Metadata[attr.Name(topLabel)] = topName } // override hostname by the Pod name span.ServiceID.HostName = info.Name diff --git a/pkg/transform/k8s_test.go b/pkg/transform/k8s_test.go index 22f7fa41f..a7ced5bbc 100644 --- a/pkg/transform/k8s_test.go +++ b/pkg/transform/k8s_test.go @@ -76,11 +76,12 @@ func TestDecoration(t *testing.T) { deco := testutil.ReadChannel(t, outputhCh, timeout) require.Len(t, deco, 1) assert.Equal(t, "the-ns", deco[0].ServiceID.Namespace) - assert.Equal(t, "rs-34", deco[0].ServiceID.Name) + assert.Equal(t, "rs", deco[0].ServiceID.Name) assert.Equal(t, map[attr.Name]string{ "k8s.node.name": "the-node", "k8s.namespace.name": "the-ns", "k8s.replicaset.name": "rs-34", + "k8s.deployment.name": "rs", "k8s.pod.name": "pod-34", "k8s.pod.uid": "uid-34", "k8s.pod.start_time": "2020-01-02 12:34:56", diff --git a/test/integration/components/beyla/Dockerfile b/test/integration/components/beyla/Dockerfile index aaebba2f7..ff88efaac 100644 --- a/test/integration/components/beyla/Dockerfile +++ b/test/integration/components/beyla/Dockerfile @@ -1,7 +1,7 @@ # Development version of the beyla Dockerfile that compiles for coverage # and allows retrieving coverage files. # The production-ready minimal image is in the project root's dockerfile. -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/beyla/Dockerfile_dbg b/test/integration/components/beyla/Dockerfile_dbg index 617a18495..ebc2cbfe5 100644 --- a/test/integration/components/beyla/Dockerfile_dbg +++ b/test/integration/components/beyla/Dockerfile_dbg @@ -1,7 +1,7 @@ # Development version of the beyla Dockerfile that compiles for coverage # and allows retrieving coverage files. # The production-ready minimal image is in the project root's dockerfile. -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/dotnetserver/Dockerfile b/test/integration/components/dotnetserver/Dockerfile index d38bda519..0eac4c3b3 100644 --- a/test/integration/components/dotnetserver/Dockerfile +++ b/test/integration/components/dotnetserver/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:7.0 as builder +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS builder # Set the working directory to /build WORKDIR /build diff --git a/test/integration/components/gohttp2/client/Dockerfile b/test/integration/components/gohttp2/client/Dockerfile index cc9f9b90f..de2e4a130 100644 --- a/test/integration/components/gohttp2/client/Dockerfile +++ b/test/integration/components/gohttp2/client/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/gohttp2/server/Dockerfile b/test/integration/components/gohttp2/server/Dockerfile index 47ac28b3b..fa2b580cd 100644 --- a/test/integration/components/gohttp2/server/Dockerfile +++ b/test/integration/components/gohttp2/server/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/gokafka/Dockerfile b/test/integration/components/gokafka/Dockerfile index 158360962..6ff18a03c 100644 --- a/test/integration/components/gokafka/Dockerfile +++ b/test/integration/components/gokafka/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/goredis/Dockerfile b/test/integration/components/goredis/Dockerfile index 4f2d25cd3..aaa5537e6 100644 --- a/test/integration/components/goredis/Dockerfile +++ b/test/integration/components/goredis/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/grpcpinger/Dockerfile b/test/integration/components/grpcpinger/Dockerfile index 60123c853..0f6335be3 100644 --- a/test/integration/components/grpcpinger/Dockerfile +++ b/test/integration/components/grpcpinger/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/httppinger/Dockerfile b/test/integration/components/httppinger/Dockerfile index 3e0953908..e68731fad 100644 --- a/test/integration/components/httppinger/Dockerfile +++ b/test/integration/components/httppinger/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/old_grpc/backend/Dockerfile b/test/integration/components/old_grpc/backend/Dockerfile index de6857380..33434a21b 100644 --- a/test/integration/components/old_grpc/backend/Dockerfile +++ b/test/integration/components/old_grpc/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23 as builder +FROM golang:1.23 AS builder WORKDIR /src diff --git a/test/integration/components/old_grpc/worker/Dockerfile b/test/integration/components/old_grpc/worker/Dockerfile index c0babe6aa..83b47fc86 100644 --- a/test/integration/components/old_grpc/worker/Dockerfile +++ b/test/integration/components/old_grpc/worker/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23 as builder +FROM golang:1.23 AS builder WORKDIR /src diff --git a/test/integration/components/pingclient/Dockerfile b/test/integration/components/pingclient/Dockerfile index 9d259eb37..0bb6c4f26 100644 --- a/test/integration/components/pingclient/Dockerfile +++ b/test/integration/components/pingclient/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/sqlclient/Dockerfile b/test/integration/components/sqlclient/Dockerfile index 8ef74e36d..3fe29faa2 100644 --- a/test/integration/components/sqlclient/Dockerfile +++ b/test/integration/components/sqlclient/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/testserver/Dockerfile_duplicate b/test/integration/components/testserver/Dockerfile_duplicate index c7f0e519f..8e6f9331b 100644 --- a/test/integration/components/testserver/Dockerfile_duplicate +++ b/test/integration/components/testserver/Dockerfile_duplicate @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/testserver/Dockerfile_nodebug b/test/integration/components/testserver/Dockerfile_nodebug index 44e3b1c47..604b8292e 100644 --- a/test/integration/components/testserver/Dockerfile_nodebug +++ b/test/integration/components/testserver/Dockerfile_nodebug @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/testserver/Dockerfile_rename1 b/test/integration/components/testserver/Dockerfile_rename1 index d5500604d..2b8eaea6c 100644 --- a/test/integration/components/testserver/Dockerfile_rename1 +++ b/test/integration/components/testserver/Dockerfile_rename1 @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/testserver/Dockerfile_static b/test/integration/components/testserver/Dockerfile_static index 0f1ed6d6c..33dc741de 100644 --- a/test/integration/components/testserver/Dockerfile_static +++ b/test/integration/components/testserver/Dockerfile_static @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.23 as builder +FROM golang:1.23 AS builder ARG TARGETARCH diff --git a/test/integration/components/testserver_1.17/Dockerfile b/test/integration/components/testserver_1.17/Dockerfile index 21d9ef311..e91cd543d 100644 --- a/test/integration/components/testserver_1.17/Dockerfile +++ b/test/integration/components/testserver_1.17/Dockerfile @@ -1,6 +1,6 @@ # Build the testserver binary # Docker command must be invoked from the projec root directory -FROM golang:1.17.13 as builder +FROM golang:1.17.13 AS builder ARG TARGETARCH diff --git a/test/integration/k8s/common/k8s_metrics_testfuncs.go b/test/integration/k8s/common/k8s_metrics_testfuncs.go index e16fd8ccf..eddd36964 100644 --- a/test/integration/k8s/common/k8s_metrics_testfuncs.go +++ b/test/integration/k8s/common/k8s_metrics_testfuncs.go @@ -214,7 +214,7 @@ func FeatureDisableInformersAppMetricsDecoration() features.Feature { "k8s_pod_name": "^testserver-.*", "k8s_pod_uid": UUIDRegex, "k8s_pod_start_time": TimeRegex, - "k8s_deployment_name": "", + "k8s_deployment_name": "^testserver$", "k8s_replicaset_name": "^testserver-.*", "k8s_cluster_name": "^beyla$", })).Feature() diff --git a/test/integration/k8s/daemonset/k8s_daemonset_traces_test.go b/test/integration/k8s/daemonset/k8s_daemonset_traces_test.go index 51f58c3a0..e678e0c41 100644 --- a/test/integration/k8s/daemonset/k8s_daemonset_traces_test.go +++ b/test/integration/k8s/daemonset/k8s_daemonset_traces_test.go @@ -70,7 +70,7 @@ func TestBasicTracing(t *testing.T) { {Key: "k8s.node.name", Type: "string", Value: ".+-control-plane$"}, {Key: "k8s.pod.uid", Type: "string", Value: k8s.UUIDRegex}, {Key: "k8s.pod.start_time", Type: "string", Value: k8s.TimeRegex}, - {Key: "k8s.deployment.name", Type: "string", Value: "^otherinstance"}, + {Key: "k8s.deployment.name", Type: "string", Value: "^otherinstance$"}, {Key: "k8s.namespace.name", Type: "string", Value: "^default$"}, {Key: "k8s.cluster.name", Type: "string", Value: "^beyla$"}, }, trace.Processes[parent.ProcessID].Tags)