diff --git a/testing/integration/k8s/k8s.go b/testing/integration/k8s/k8s.go index d97a100767c..3adab732ab3 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.11.1" + KubeStackChartVersion = "0.12.4" KubeStackChartName = "opentelemetry-kube-stack" KubeStackChartNameWithVersion = KubeStackChartName + "-" + KubeStackChartVersion KubeStackChartArchiveName = KubeStackChartNameWithVersion + ".tgz" diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.lock b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.lock index 442301f9cdf..10155aacf3f 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.lock +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.lock @@ -7,12 +7,12 @@ dependencies: version: 0.0.0 - name: opentelemetry-operator repository: https://open-telemetry.github.io/opentelemetry-helm-charts - version: 0.97.1 + version: 0.99.0 - name: kube-state-metrics repository: https://prometheus-community.github.io/helm-charts version: 6.3.0 - name: prometheus-node-exporter repository: https://prometheus-community.github.io/helm-charts version: 4.48.0 -digest: sha256:5eacf19a8cffc4f333b0e287fabbb387fc31d2b8315a77a918783b9906bd7e32 -generated: "2025-10-02T13:49:24.548948-06:00" +digest: sha256:9c04376f480118910fe4bb39bd64f8b6cde8ade4b76fb43fcecc2bfcbee838b3 +generated: "2025-11-05T22:11:01.225203082+01:00" diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml index 5f0dbea128b..9f2a2e2b157 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 0.129.1 +appVersion: 0.138.0 dependencies: - condition: crds.install,crds.installOtel name: otel-crds @@ -12,7 +12,7 @@ dependencies: - condition: opentelemetry-operator.enabled name: opentelemetry-operator repository: https://open-telemetry.github.io/opentelemetry-helm-charts - version: 0.97.1 + version: 0.99.0 - condition: kubeStateMetrics.enabled name: kube-state-metrics repository: https://prometheus-community.github.io/helm-charts @@ -34,4 +34,4 @@ name: opentelemetry-kube-stack sources: - https://github.com/open-telemetry/opentelemetry-operator type: application -version: 0.11.1 +version: 0.12.4 diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/Chart.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/Chart.yaml index a8f2c9d003e..f4894f28524 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/Chart.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 0.136.0 +appVersion: 0.138.0 description: OpenTelemetry Operator Helm chart for Kubernetes home: https://opentelemetry.io/ icon: https://raw.githubusercontent.com/cncf/artwork/a718fa97fffec1b9fd14147682e9e3ac0c8817cb/projects/opentelemetry/icon/color/opentelemetry-icon-color.png @@ -12,4 +12,4 @@ name: opentelemetry-operator sources: - https://github.com/open-telemetry/opentelemetry-operator type: application -version: 0.97.1 +version: 0.99.0 diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/ci/feature-gates-values.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/ci/feature-gates-values.yaml index b10a3779b13..82869b0c7a4 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/ci/feature-gates-values.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/ci/feature-gates-values.yaml @@ -3,4 +3,3 @@ manager: repository: "otel/opentelemetry-collector-k8s" featureGatesMap: operator.targetallocator.mtls: true - operator.collector.targetallocatorcr: false diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetry.io_targetallocators.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetry.io_targetallocators.yaml index 129187e746b..2015827170b 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetry.io_targetallocators.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetry.io_targetallocators.yaml @@ -1174,6 +1174,8 @@ spec: default: 30s format: duration type: string + dnsPolicy: + type: string env: items: properties: @@ -2244,6 +2246,8 @@ spec: type: string hostPort: format: int32 + maximum: 65535 + minimum: 0 type: integer name: type: string diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetrycollector.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetrycollector.yaml index 1fe00b8758a..d1fa47c6448 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetrycollector.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/conf/crds/crd-opentelemetrycollector.yaml @@ -5790,6 +5790,7 @@ spec: type: object maxReplicas: format: int32 + minimum: 1 type: integer metrics: items: @@ -5863,12 +5864,15 @@ spec: type: array minReplicas: format: int32 + minimum: 1 type: integer targetCPUUtilization: format: int32 + minimum: 1 type: integer targetMemoryUtilization: format: int32 + minimum: 1 type: integer type: object config: @@ -5979,6 +5983,8 @@ spec: type: type: string type: object + dnsPolicy: + type: string env: items: properties: @@ -6933,21 +6939,27 @@ spec: properties: failureThreshold: format: int32 + minimum: 1 type: integer initialDelaySeconds: format: int32 + minimum: 0 type: integer periodSeconds: format: int32 + minimum: 1 type: integer successThreshold: format: int32 + minimum: 1 type: integer terminationGracePeriodSeconds: format: int64 + minimum: 1 type: integer timeoutSeconds: format: int32 + minimum: 1 type: integer type: object managementState: @@ -7119,6 +7131,8 @@ spec: type: string hostPort: format: int32 + maximum: 65535 + minimum: 0 type: integer name: type: string @@ -7147,21 +7161,27 @@ spec: properties: failureThreshold: format: int32 + minimum: 1 type: integer initialDelaySeconds: format: int32 + minimum: 0 type: integer periodSeconds: format: int32 + minimum: 1 type: integer successThreshold: format: int32 + minimum: 1 type: integer terminationGracePeriodSeconds: format: int64 + minimum: 1 type: integer timeoutSeconds: format: int32 + minimum: 1 type: integer type: object replicas: @@ -7279,6 +7299,33 @@ spec: type: string shareProcessNamespace: type: boolean + startupProbe: + properties: + failureThreshold: + format: int32 + minimum: 1 + type: integer + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + successThreshold: + format: int32 + minimum: 1 + type: integer + terminationGracePeriodSeconds: + format: int64 + minimum: 1 + type: integer + timeoutSeconds: + format: int32 + minimum: 1 + type: integer + type: object targetAllocator: properties: affinity: diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/values.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/values.yaml index 59bb858c062..2c674b47863 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/values.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/charts/opentelemetry-operator/values.yaml @@ -50,7 +50,7 @@ manager: imagePullPolicy: IfNotPresent collectorImage: repository: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s - tag: 0.136.0 + tag: 0.138.0 opampBridgeImage: repository: "" tag: "" 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 241de30c44f..1573462f997 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/_config.tpl @@ -172,12 +172,20 @@ receivers: cpu: metrics: system.cpu.utilization: - enabled: true + enabled: true + system.cpu.logical.count: + enabled: true load: {} memory: metrics: system.memory.utilization: - enabled: true + enabled: true + system.memory.limit: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true disk: {} filesystem: metrics: @@ -220,6 +228,10 @@ receivers: - tracefs match_type: strict network: {} + system: + metrics: + system.uptime: + enabled: true {{- end }} {{- define "opentelemetry-kube-stack.collector.applyClusterMetricsConfig" -}} @@ -227,13 +239,16 @@ receivers: {{- $config := mustMergeOverwrite (include "opentelemetry-kube-stack.collector.clusterMetricsConfig" (dict "collector" .collector "namespace" .namespace "electorName" $electorName) | fromYaml) .collector.config }} {{- if and (dig "service" "pipelines" "metrics" false $config) (not (has "k8s_cluster" (dig "service" "pipelines" "metrics" "receivers" list $config))) }} {{- $_ := set $config.service.pipelines.metrics "receivers" (append ($config.service.pipelines.metrics.receivers | default list) "k8s_cluster" | uniq) }} +{{- $disableLeaderElection := .collector.presets.clusterMetrics.disableLeaderElection }} +{{- if not $disableLeaderElection }} {{- $_ := set $config.service "extensions" (append ($config.service.extensions | default list) (printf "k8s_leader_elector/%s" $electorName) | uniq) }} {{- end }} +{{- end }} {{- $config | toYaml }} {{- end }} {{- define "opentelemetry-kube-stack.collector.clusterMetricsConfig" -}} -{{- $disableLeaderElection := .collector.presets.kubernetesEvents.disableLeaderElection}} +{{- $disableLeaderElection := .collector.presets.clusterMetrics.disableLeaderElection}} {{- if not $disableLeaderElection}} {{- include "opentelemetry-kube-stack.collector.leaderElectionConfig" (dict "name" .electorName "leaseName" "k8s.cluster.receiver.opentelemetry.io" "leaseNamespace" .namespace)}} {{- end}} @@ -336,8 +351,11 @@ receivers: {{- $config := mustMergeOverwrite (include "opentelemetry-kube-stack.collector.kubernetesEventsConfig" (dict "collector" .collector "namespace" .namespace "electorName" $electorName) | fromYaml) .collector.config }} {{- if and (dig "service" "pipelines" "logs" false $config) (not (has "k8sobjects" (dig "service" "pipelines" "logs" "receivers" list $config))) }} {{- $_ := set $config.service.pipelines.logs "receivers" (append ($config.service.pipelines.logs.receivers | default list) "k8sobjects" | uniq) }} +{{- $disableLeaderElection := .collector.presets.kubernetesEvents.disableLeaderElection }} +{{- if not $disableLeaderElection }} {{- $_ := set $config.service "extensions" (append ($config.service.extensions | default list) (printf "k8s_leader_elector/%s" $electorName) | uniq) }} {{- end }} +{{- end }} {{- $config | toYaml }} {{- end }} diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/instrumentation.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/instrumentation.yaml index 4bb25662083..1bd4ddc19fa 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/instrumentation.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/templates/instrumentation.yaml @@ -20,8 +20,11 @@ spec: sampler: {{- toYaml . | nindent 4 }} {{- end }} + {{- $envOutput := include "opentelemetry-kube-stack.renderenvs" (dict "extraEnvs" $.Values.extraEnvs "env" .Values.instrumentation.env) | trim -}} + {{- if $envOutput }} env: - {{- include "opentelemetry-kube-stack.renderenvs" (dict "extraEnvs" $.Values.extraEnvs "env" .Values.instrumentation.env) | indent 4 }} + {{- $envOutput | nindent 4 }} + {{- end }} {{- with .Values.instrumentation.resource }} resource: {{- toYaml . | nindent 4 }} diff --git a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml index 5c2d4c970c5..9c626b79ce3 100644 --- a/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml +++ b/testing/integration/k8s/testdata/opentelemetry-kube-stack/values.yaml @@ -1657,14 +1657,15 @@ nodeExporter: prometheus-node-exporter: namespaceOverride: "" podLabels: - ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards - ## jobLabel: node-exporter releaseLabel: true extraArgs: - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/) - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ service: + ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards + labels: + jobLabel: node-exporter portName: http-metrics prometheus: monitor: