diff --git a/.chloggen/3090-enable-multiinstrumentation-by-default.yaml b/.chloggen/3090-enable-multiinstrumentation-by-default.yaml deleted file mode 100755 index 29cbebcef3..0000000000 --- a/.chloggen/3090-enable-multiinstrumentation-by-default.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: 'breaking' - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: auto-instrumentation - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Enable multi instrumentation by default. - -# One or more tracking issues related to the change -issues: [3090] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: | - Starting with this release, the OpenTelemetry Operator now enables multi-instrumentation by default. - This enhancement allows instrumentation of multiple containers in a pod with language-specific configurations.| - Key Changes: - - Single Instrumentation (Default Behavior): If no container names are specified using the - `instrumentation.opentelemetry.io/container-names` annotation, instrumentation will be applied to the first container in - the pod spec by default. This only applies when single instrumentation injection is configured. - - Multi-Container Pods: In scenarios where different containers in a pod use distinct technologies, users must specify the - container(s) for instrumentation using language-specific annotations. Without this specification, the default behavior may - not work as expected for multi-container environments. - Compatibility: - - Users already utilizing the `instrumentation.opentelemetry.io/container-names` annotation do not need to take any action. - Their existing setup will continue to function as before. - - Important: Users who attempt to configure both `instrumentation.opentelemetry.io/container-names` and language-specific annotations - (for multi-instrumentation) simultaneously will encounter an error, as this configuration is not supported. diff --git a/.chloggen/3149-add-must-gather.yaml b/.chloggen/3149-add-must-gather.yaml deleted file mode 100755 index d42c553265..0000000000 --- a/.chloggen/3149-add-must-gather.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: auto-instrumentation, collector - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: "Add a must gather utility to help troubleshoot" - -# One or more tracking issues related to the change -issues: [3149] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: | - The new utility is available as part of a new container image. - - To use the image in a running OpenShift cluster, you need to run the following command: - - ```sh - oc adm must-gather --image=ghcr.io/open-telemetry/opentelemetry-operator/must-gather -- /usr/bin/must-gather --operator-namespace opentelemetry-operator-system - ``` - - See the [README](https://github.com/open-telemetry/opentelemetry-operator/blob/main/cmd/gather/README.md) for more details. diff --git a/.chloggen/add_all_receiver_defaults.yaml b/.chloggen/add_all_receiver_defaults.yaml deleted file mode 100755 index e4bb2b6c2b..0000000000 --- a/.chloggen/add_all_receiver_defaults.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: collector - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: set default address for all parsed receivers - -# One or more tracking issues related to the change -issues: [3126] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: | - This feature is enabled by default. It can be disabled by specifying - `--feature-gates=-operator.collector.default.config`. diff --git a/.chloggen/add_receiver_defaults.yaml b/.chloggen/add_receiver_defaults.yaml deleted file mode 100755 index 7ffaefb2d8..0000000000 --- a/.chloggen/add_receiver_defaults.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: operator - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Use 0.0.0.0 as otlp receiver default address - -# One or more tracking issues related to the change -issues: [3126] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: diff --git a/.chloggen/container-names.yaml b/.chloggen/container-names.yaml deleted file mode 100755 index 034d411f8d..0000000000 --- a/.chloggen/container-names.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: bug_fix - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: auto-instrumentation - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Fix ApacheHttpd, Nginx and SDK injectors to honour their container-names annotations. - -# One or more tracking issues related to the change -issues: [3313] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: This is a breaking change if anyone is accidentally using the enablement flag with container names for these 3 injectors. diff --git a/.chloggen/fips.yaml b/.chloggen/fips.yaml deleted file mode 100755 index ec572de643..0000000000 --- a/.chloggen/fips.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: collector - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Add flag to disable components when operator runs on FIPS enabled cluster. - -# One or more tracking issues related to the change -issues: [3315] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: | - Flag `--fips-disabled-components=receiver.otlp,exporter.otlp,processor.batch,extension.oidc` can be used to disable - components when operator runs on FIPS enabled cluster. The operator uses `/proc/sys/crypto/fips_enabled` to check - if FIPS is enabled. diff --git a/.chloggen/improve-probe-parsing.yaml b/.chloggen/improve-probe-parsing.yaml deleted file mode 100755 index ec9b3fe8c2..0000000000 --- a/.chloggen/improve-probe-parsing.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: enhancement - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: collector - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Improves healthcheck parsing capabilities, allowing for future extensions to configure a healthcheck other than the v1 healthcheck extension. - -# One or more tracking issues related to the change -issues: [3184] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: diff --git a/.chloggen/remove_localhost_fg.yaml b/.chloggen/remove_localhost_fg.yaml deleted file mode 100755 index 276c3d74b3..0000000000 --- a/.chloggen/remove_localhost_fg.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' -change_type: breaking - -# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) -component: collector - -# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). -note: Remove ComponentUseLocalHostAsDefaultHost collector feature gate. - -# One or more tracking issues related to the change -issues: [3306] - -# (Optional) One or more lines of additional information to render under the primary note. -# These lines will be padded with 2 spaces and then inserted directly into the document. -# Use pipe (|) for multiline entries. -subtext: | - This change may break setups where receiver endpoints are not explicitly configured to listen on e.g. 0.0.0.0. - Change \#3333 attempts to address this issue for a known set of components. - The operator performs the adjustment for the following receivers: - - otlp - - skywalking - - jaeger - - loki - - opencensus - - zipkin - - tcplog - - udplog - - fluentforward - - statsd - - awsxray/UDP - - carbon - - collectd - - sapm - - signalfx - - splunk_hec - - wavefront diff --git a/.chloggen/resource-attribute-from-annotations.yaml b/.chloggen/resource-attribute-from-annotations.yaml deleted file mode 100755 index 1ddf782c5d..0000000000 --- a/.chloggen/resource-attribute-from-annotations.yaml +++ /dev/null @@ -1,24 +0,0 @@ -change_type: enhancement - -component: auto-instrumentation - -note: Add support for k8s labels such as app.kubernetes.io/name for resource attributes - -issues: [3112] - -subtext: | - You can opt-in as follows: - ```yaml - apiVersion: opentelemetry.io/v1alpha1 - kind: Instrumentation - metadata: - name: my-instrumentation - spec: - defaults: - useLabelsForResourceAttributes: true - ``` - The following labels are supported: - - `app.kubernetes.io/name` becomes `service.name` - - `app.kubernetes.io/version` becomes `service.version` - - `app.kubernetes.io/part-of` becomes `service.namespace` - - `app.kubernetes.io/instance` becomes `service.instance.id` diff --git a/CHANGELOG.md b/CHANGELOG.md index c9d919240a..72fca56e33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,115 @@ +## 0.110.0 + +### 🛑 Breaking changes 🛑 + +- `auto-instrumentation`: Enable multi instrumentation by default. (#3090) + + Starting with this release, the OpenTelemetry Operator now enables multi-instrumentation by default. + This enhancement allows instrumentation of multiple containers in a pod with language-specific configurations. + + Key Changes: + - Single Instrumentation (Default Behavior): If no container names are specified using the + `instrumentation.opentelemetry.io/container-names` annotation, instrumentation will be applied to the first container in + the pod spec by default. This only applies when single instrumentation injection is configured. + - Multi-Container Pods: In scenarios where different containers in a pod use distinct technologies, users must specify the + container(s) for instrumentation using language-specific annotations. Without this specification, the default behavior may + not work as expected for multi-container environments. + + Compatibility: + - Users already utilizing the `instrumentation.opentelemetry.io/container-names` annotation do not need to take any action. + Their existing setup will continue to function as before. + - Important: Users who attempt to configure both `instrumentation.opentelemetry.io/container-names` and language-specific annotations + (for multi-instrumentation) simultaneously will encounter an error, as this configuration is not supported. + +- `collector`: Remove ComponentUseLocalHostAsDefaultHost collector feature gate. (#3306) + + This change may break setups where receiver endpoints are not explicitly configured to listen on e.g. 0.0.0.0. + Change \#3333 attempts to address this issue for a known set of components. + The operator performs the adjustment for the following receivers: + - otlp + - skywalking + - jaeger + - loki + - opencensus + - zipkin + - tcplog + - udplog + - fluentforward + - statsd + - awsxray/UDP + - carbon + - collectd + - sapm + - signalfx + - splunk_hec + - wavefront + + +### 💡 Enhancements 💡 + +- `auto-instrumentation, collector`: Add a must gather utility to help troubleshoot (#3149) + + The new utility is available as part of a new container image. + + To use the image in a running OpenShift cluster, you need to run the following command: + + ```sh + oc adm must-gather --image=ghcr.io/open-telemetry/opentelemetry-operator/must-gather -- /usr/bin/must-gather --operator-namespace opentelemetry-operator-system + ``` + + See the [README](https://github.com/open-telemetry/opentelemetry-operator/blob/main/cmd/gather/README.md) for more details. + +- `collector`: set default address for all parsed receivers (#3126) + + This feature is enabled by default. It can be disabled by specifying + `--feature-gates=-operator.collector.default.config`. +- `operator`: Use 0.0.0.0 as otlp receiver default address (#3126) +- `collector`: Add flag to disable components when operator runs on FIPS enabled cluster. (#3315) + Flag `--fips-disabled-components=receiver.otlp,exporter.otlp,processor.batch,extension.oidc` can be used to disable + components when operator runs on FIPS enabled cluster. The operator uses `/proc/sys/crypto/fips_enabled` to check + if FIPS is enabled. + +- `collector`: Improves healthcheck parsing capabilities, allowing for future extensions to configure a healthcheck other than the v1 healthcheck extension. (#3184) +- `auto-instrumentation`: Add support for k8s labels such as app.kubernetes.io/name for resource attributes (#3112) + + You can opt-in as follows: + ```yaml + apiVersion: opentelemetry.io/v1alpha1 + kind: Instrumentation + metadata: + name: my-instrumentation + spec: + defaults: + useLabelsForResourceAttributes: true + ``` + The following labels are supported: + - `app.kubernetes.io/name` becomes `service.name` + - `app.kubernetes.io/version` becomes `service.version` + - `app.kubernetes.io/part-of` becomes `service.namespace` + - `app.kubernetes.io/instance` becomes `service.instance.id` + + +### 🧰 Bug fixes 🧰 + +- `auto-instrumentation`: Fix ApacheHttpd, Nginx and SDK injectors to honour their container-names annotations. (#3313) + + This is a breaking change if anyone is accidentally using the enablement flag with container names for these 3 injectors. + +### Components + +* [OpenTelemetry Collector - v0.110.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.110.0) +* [OpenTelemetry Contrib - v0.110.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.110.0) +* [Java auto-instrumentation - v1.33.5](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v1.33.5) +* [.NET auto-instrumentation - v1.2.0](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/tag/v1.2.0) +* [Node.JS - v0.52.1](https://github.com/open-telemetry/opentelemetry-js/releases/tag/experimental%2Fv0.52.1) +* [Python - v0.48b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.48b0) +* [Go - v0.14.0-alpha](https://github.com/open-telemetry/opentelemetry-go-instrumentation/releases/tag/v0.14.0-alpha) +* [ApacheHTTPD - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4) +* [Nginx - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4) + ## 0.109.0 ### 🚩 Deprecations 🚩 diff --git a/README.md b/README.md index f3485d7fac..2940dbc527 100644 --- a/README.md +++ b/README.md @@ -814,6 +814,7 @@ The OpenTelemetry Operator _might_ work on versions outside of the given range, | OpenTelemetry Operator | Kubernetes | Cert-Manager | Prometheus-Operator | |------------------------|----------------| ------------ |---------------------| | v0.109.0 | v1.23 to v1.31 | v1 | v0.76.0 | +| v0.109.0 | v1.23 to v1.31 | v1 | v0.76.0 | | v0.108.0 | v1.23 to v1.31 | v1 | v0.76.0 | | v0.107.0 | v1.23 to v1.30 | v1 | v0.75.0 | | v0.106.0 | v1.23 to v1.30 | v1 | v0.75.0 | @@ -836,7 +837,6 @@ The OpenTelemetry Operator _might_ work on versions outside of the given range, | v0.89.0 | v1.23 to v1.28 | v1 | v0.69.1 | | v0.88.0 | v1.23 to v1.28 | v1 | v0.68.0 | | v0.87.0 | v1.23 to v1.28 | v1 | v0.68.0 | -| v0.86.0 | v1.23 to v1.28 | v1 | v0.68.0 | ## Contributing and Developing diff --git a/RELEASE.md b/RELEASE.md index 1fecc1e997..046a05c81c 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -44,9 +44,9 @@ The operator should be released within a week after the [OpenTelemetry collector | Version | Release manager | |----------|-----------------| -| v0.110.0 | @swiatekm | | v0.111.0 | @frzifus | | v0.112.0 | @yuriolisa | | v0.113.0 | @pavolloffay | | v0.114.0 | @TylerHelmuth | -| v0.115.0 | @jaronoff97 | \ No newline at end of file +| v0.115.0 | @jaronoff97 | +| v0.116.0 | @swiatekm | \ No newline at end of file diff --git a/bundle/community/manifests/opentelemetry-operator.clusterserviceversion.yaml b/bundle/community/manifests/opentelemetry-operator.clusterserviceversion.yaml index 3b1454f8d6..0811d9a12b 100644 --- a/bundle/community/manifests/opentelemetry-operator.clusterserviceversion.yaml +++ b/bundle/community/manifests/opentelemetry-operator.clusterserviceversion.yaml @@ -99,13 +99,13 @@ metadata: categories: Logging & Tracing,Monitoring certified: "false" containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator - createdAt: "2024-09-19T17:15:52Z" + createdAt: "2024-10-08T09:52:53Z" description: Provides the OpenTelemetry components, including the Collector operators.operatorframework.io/builder: operator-sdk-v1.29.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: github.com/open-telemetry/opentelemetry-operator support: OpenTelemetry Community - name: opentelemetry-operator.v0.109.0 + name: opentelemetry-operator.v0.110.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -479,7 +479,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.serviceAccountName - image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.109.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.110.0 livenessProbe: httpGet: path: /healthz @@ -587,7 +587,7 @@ spec: minKubeVersion: 1.23.0 provider: name: OpenTelemetry Community - version: 0.109.0 + version: 0.110.0 webhookdefinitions: - admissionReviewVersions: - v1alpha1 diff --git a/bundle/openshift/manifests/opentelemetry-operator.clusterserviceversion.yaml b/bundle/openshift/manifests/opentelemetry-operator.clusterserviceversion.yaml index 70db688513..24958408c7 100644 --- a/bundle/openshift/manifests/opentelemetry-operator.clusterserviceversion.yaml +++ b/bundle/openshift/manifests/opentelemetry-operator.clusterserviceversion.yaml @@ -99,13 +99,13 @@ metadata: categories: Logging & Tracing,Monitoring certified: "false" containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator - createdAt: "2024-09-19T17:16:12Z" + createdAt: "2024-10-08T09:52:57Z" description: Provides the OpenTelemetry components, including the Collector operators.operatorframework.io/builder: operator-sdk-v1.29.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: github.com/open-telemetry/opentelemetry-operator support: OpenTelemetry Community - name: opentelemetry-operator.v0.109.0 + name: opentelemetry-operator.v0.110.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -483,7 +483,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.serviceAccountName - image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.109.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.110.0 livenessProbe: httpGet: path: /healthz @@ -591,7 +591,7 @@ spec: minKubeVersion: 1.23.0 provider: name: OpenTelemetry Community - version: 0.109.0 + version: 0.110.0 webhookdefinitions: - admissionReviewVersions: - v1alpha1 diff --git a/versions.txt b/versions.txt index 5ae4d22241..1cc74d1487 100644 --- a/versions.txt +++ b/versions.txt @@ -2,16 +2,16 @@ # by default with the OpenTelemetry Operator. This would usually be the latest # stable OpenTelemetry version. When you update this file, make sure to update the # the docs as well. -opentelemetry-collector=0.109.0 +opentelemetry-collector=0.110.0 # Represents the current release of the OpenTelemetry Operator. -operator=0.109.0 +operator=0.110.0 # Represents the current release of the Target Allocator. -targetallocator=0.109.0 +targetallocator=0.110.0 # Represents the current release of the Operator OpAMP Bridge. -operator-opamp-bridge=0.109.0 +operator-opamp-bridge=0.110.0 # Represents the current release of Java instrumentation. # Should match autoinstrumentation/java/version.txt