diff --git a/testing/integration/k8s/k8s.go b/testing/integration/k8s/k8s.go index de30897e14a..229b0ad3b03 100644 --- a/testing/integration/k8s/k8s.go +++ b/testing/integration/k8s/k8s.go @@ -7,7 +7,7 @@ package k8s import "path/filepath" const ( - KubeStackChartVersion = "0.9.1" + KubeStackChartVersion = "0.10.5" KubeStackChartName = "opentelemetry-kube-stack" KubeStackChartNameWithVersion = KubeStackChartName + "-" + KubeStackChartVersion KubeStackChartArchiveName = KubeStackChartNameWithVersion + ".tgz" diff --git a/testing/integration/k8s/otel_helm_test.go b/testing/integration/k8s/otel_helm_test.go index 8c258a12941..6c4a0aedd31 100644 --- a/testing/integration/k8s/otel_helm_test.go +++ b/testing/integration/k8s/otel_helm_test.go @@ -43,7 +43,6 @@ func TestOtelKubeStackHelm(t *testing.T) { }, Group: define.Kubernetes, }) - t.Skip("https://github.com/elastic/elastic-agent/issues/10020: Constantly failing test") kCtx := k8sGetContext(t, info) diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml index f8c09590d42..463ab7bac30 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml @@ -34,4 +34,4 @@ name: opentelemetry-kube-stack sources: - https://github.com/open-telemetry/opentelemetry-operator type: application -version: 0.9.1 +version: 0.10.5 diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl index 2fd14821a59..241de30c44f 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl @@ -17,7 +17,7 @@ the config is written as YAML. {{- $_ := set $collector "config" $config }} {{- end }} {{- if .collector.presets.logsCollection.enabled }} -{{- $_ := set $collector "exclude" (printf "/var/log/pods/%s_%s*_*/%s/*.log" .namespace (include "opentelemetry-kube-stack.collectorFullname" .) (.Chart.Name | lower)) }} +{{- $_ := set $collector "exclude" (list (printf "/var/log/pods/%s_%s*_*/otc-container/*.log" .namespace (include "opentelemetry-kube-stack.collectorFullname" .))) }} {{- $config = (include "opentelemetry-kube-stack.collector.applyLogsCollectionConfig" (dict "collector" $collector) | fromYaml) -}} {{- $_ := set $collector "config" $config }} {{- end }} @@ -41,7 +41,7 @@ the config is written as YAML. {{- $config = (include "opentelemetry-kube-stack.collector.applyClusterMetricsConfig" (dict "collector" $collector "namespace" .namespace) | fromYaml) -}} {{- $_ := set $collector "config" $config }} {{- end }} -{{- toYaml $collector.config | nindent 4 }} +{{- tpl (toYaml $collector.config) . | nindent 4 }} {{- end }} {{/* @@ -110,6 +110,7 @@ processors: - sources: - from: connection extract: + otel_annotations: true metadata: - k8s.namespace.name - k8s.pod.name @@ -130,19 +131,14 @@ processors: - container.image.tag - container.image.name - k8s.cluster.uid + - service.namespace + - service.name + - service.version + - service.instance.id labels: - - tag_name: service.name - key: app.kubernetes.io/name - from: pod - - tag_name: service.name - key: k8s-app - from: pod - tag_name: k8s.app.instance key: app.kubernetes.io/instance from: pod - - tag_name: service.version - key: app.kubernetes.io/version - from: pod - tag_name: k8s.app.component key: app.kubernetes.io/component from: pod @@ -239,7 +235,7 @@ receivers: {{- define "opentelemetry-kube-stack.collector.clusterMetricsConfig" -}} {{- $disableLeaderElection := .collector.presets.kubernetesEvents.disableLeaderElection}} {{- if not $disableLeaderElection}} -{{- include "opentelemetry-kube-stack.collector.leaderElectionConfig" (dict "name" .electorName "leaseName" "k8s.cluster.receiver.opentelemetry.io" "leaseNamespace" .namespace)}} +{{- include "opentelemetry-kube-stack.collector.leaderElectionConfig" (dict "name" .electorName "leaseName" "k8s.cluster.receiver.opentelemetry.io" "leaseNamespace" .namespace)}} {{- end}} receivers: k8s_cluster: @@ -317,7 +313,8 @@ receivers: exclude: [] {{- else }} # Exclude collector container's logs. The file format is /var/log/pods/__//.log - exclude: {{ .exclude }} + exclude: + {{- toYaml .exclude | nindent 4 }} {{- end }} start_at: end retry_on_failure: @@ -347,7 +344,7 @@ receivers: {{- define "opentelemetry-kube-stack.collector.kubernetesEventsConfig" -}} {{- $disableLeaderElection := .collector.presets.kubernetesEvents.disableLeaderElection}} {{- if not $disableLeaderElection}} -{{- include "opentelemetry-kube-stack.collector.leaderElectionConfig" (dict "name" .electorName "leaseName" "k8s.objects.receiver.opentelemetry.io" "leaseNamespace" .namespace)}} +{{- include "opentelemetry-kube-stack.collector.leaderElectionConfig" (dict "name" .electorName "leaseName" "k8s.objects.receiver.opentelemetry.io" "leaseNamespace" .namespace)}} {{- end}} receivers: k8sobjects: @@ -368,4 +365,4 @@ extensions: auth_type: serviceAccount lease_name: {{ .leaseName }} lease_namespace: {{ .leaseNamespace }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/collector.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/collector.yaml index 88ee47d9061..1e7ce7e2c8d 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/collector.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/collector.yaml @@ -1,7 +1,7 @@ {{ range $_, $collector := $.Values.collectors -}} {{- if $collector.enabled -}} {{- $collector := (mergeOverwrite (deepCopy $.Values.defaultCRConfig) $collector) }} -{{- $merged := (dict "Template" $.Template "Files" $.Files "Chart" $.Chart "clusterRole" $.Values.clusterRole "collector" $collector "Release" $.Release "fullnameOverride" $.Values.fullnameOverride "presets" $.Values.presets "namespace" (include "opentelemetry-kube-stack.namespace" $) "kubelet" $.Values.kubelet) }} +{{- $merged := (dict "Template" $.Template "Files" $.Files "Chart" $.Chart "clusterRole" $.Values.clusterRole "collector" $collector "Release" $.Release "fullnameOverride" $.Values.fullnameOverride "presets" $.Values.presets "namespace" (include "opentelemetry-kube-stack.namespace" $) "kubelet" $.Values.kubelet "clusterName" $.Values.clusterName) }} {{- $fullname := (include "opentelemetry-kube-stack.collectorFullname" $merged) }} --- apiVersion: opentelemetry.io/v1beta1 @@ -90,7 +90,7 @@ spec: {{- end }} {{- with $collector.affinity }} affinity: - {{- toYaml . | nindent 4}} + {{- tpl (toYaml .) $merged | nindent 4}} {{- end }} {{- with $collector.lifecycle }} lifecycle: @@ -108,10 +108,18 @@ spec: updateStrategy: {{- toYaml . | nindent 4}} {{- end }} + {{- if eq $collector.mode "daemonset" }} + {{- with $collector.daemonSetUpdateStrategy }} + daemonSetUpdateStrategy: + {{- toYaml . | nindent 4}} + {{- end }} + {{- end }} + {{- if eq $collector.mode "deployment" }} {{- with $collector.deploymentUpdateStrategy }} deploymentUpdateStrategy: {{- toYaml . | nindent 4}} {{- end }} + {{- end }} {{- if or ($collector.presets.logsCollection.enabled) ($collector.presets.logsCollection.storeCheckpoints) ($collector.presets.hostMetrics.enabled) ($collector.volumeMounts) }} volumeMounts: {{- if $collector.presets.logsCollection.enabled }} @@ -133,7 +141,7 @@ spec: mountPropagation: HostToContainer {{- end }} {{- with $collector.volumeMounts }} - {{- toYaml . | nindent 2 }} + {{- tpl (toYaml .) $merged | nindent 2 }} {{- end }} {{- end }} {{- with $collector.ports }} @@ -203,7 +211,7 @@ spec: path: / {{- end }} {{- with $collector.volumes }} - {{- toYaml . | nindent 2 }} + {{- tpl (toYaml .) $merged | nindent 2 }} {{- end }} {{- end }} {{- with $collector.initContainers }} diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/hooks.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/hooks.yaml index da63300f6bc..031412d86b7 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/hooks.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/hooks.yaml @@ -69,10 +69,9 @@ spec: {{- else }} image: "{{ $.Values.cleanupJob.image.repository }}:{{ $.Values.cleanupJob.image.tag }}" {{- end }} - command: - - /bin/sh - - -c - - | - kubectl delete instrumentations,opampbridges,opentelemetrycollectors \ - -l helm.sh/chart={{ include "opentelemetry-kube-stack.chart" . }} + args: + - "delete" + - "instrumentations,opampbridges,opentelemetrycollectors" + - "-l" + - "helm.sh/chart={{ include "opentelemetry-kube-stack.chart" . }}" {{- end }} diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.schema.json b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.schema.json index 6b99132c7d1..20171cf6180 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.schema.json +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.schema.json @@ -473,7 +473,7 @@ "additionalProperties": false, "type": "object" }, - "DeploymentStrategy": { + "DeploymentUpdateStrategy": { "properties": { "type": { "type": "string" @@ -1673,8 +1673,11 @@ "updateStrategy": { "$ref": "#/$defs/DaemonSetUpdateStrategy" }, + "daemonSetUpdateStrategy": { + "$ref": "#/$defs/DaemonSetUpdateStrategy" + }, "deploymentUpdateStrategy": { - "$ref": "#/$defs/DeploymentStrategy" + "$ref": "#/$defs/DeploymentUpdateStrategy" } }, "additionalProperties": true, @@ -1768,6 +1771,20 @@ }, "scrapeConfigSelector": { "$ref": "#/$defs/LabelSelector" + }, + "allowNamespaces": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of namespaces to allow for scraping" + }, + "denyNamespaces": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of namespaces to exclude from scraping" } }, "additionalProperties": false, diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml index 2e3745c1d41..f99263d520e 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml @@ -17,8 +17,8 @@ cleanupJob: enabled: true # Image details for the kubectl image: - repository: bitnami/kubectl - tag: latest + repository: rancher/kubectl + tag: v1.34.1 # When digest is set to a non-empty value, images will be pulled by digest (regardless of tag value). digest: "" # To use the existingServiceAccount @@ -243,6 +243,14 @@ defaultCRConfig: # scrapeConfigSelector: # key1: value1 # key2: value2 + # # List of namespaces to allow for scraping + # allowNamespaces: + # - namespace-1 + # - namespace-2 + # # List of namespaces to exclude from scraping + # denyNamespaces: + # - namespace-3 + # - namespace-4 # securityContext: # runAsUser: 1000 # capabilities: @@ -307,10 +315,18 @@ defaultCRConfig: # metrics: # enableMetrics: true - # Update strategy for the collector + # NOTE: the updateStrategy value is deprecated. Use daemonSetUpdateStrategy instead. updateStrategy: {} # type: RollingUpdate + # Update strategy for the DaemonSet collector + daemonSetUpdateStrategy: {} + # type: RollingUpdate + + # Update strategy for the Deployment collector + deploymentUpdateStrategy: {} + # type: RollingUpdate + # Volume mounts for the collector volumeMounts: [] # - name: data