Skip to content

Commit c04bfd9

Browse files
committed
Merge branch 'main' of https://github.com/open-telemetry/opentelemetry-operator into 2947-updating-ds-sf-depl-mutation
2 parents f4ab9aa + 3147097 commit c04bfd9

File tree

132 files changed

+4733
-315
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+4733
-315
lines changed

.chloggen/3090-enable-multiinstrumentation-by-default.yaml

-30
This file was deleted.

.chloggen/fips.yaml .chloggen/TA-update-configs-to-enable-mtls.yaml

+5-6
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22
change_type: enhancement
33

44
# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action)
5-
component: collector
5+
component: target allocator, collector
66

77
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8-
note: Add flag to disable components when operator runs on FIPS enabled cluster.
8+
note: "Enable mTLS between the TA and collector for passing secrets in the scrape_config securely"
99

1010
# One or more tracking issues related to the change
11-
issues: [3315]
11+
issues: [1669]
1212

1313
# (Optional) One or more lines of additional information to render under the primary note.
1414
# These lines will be padded with 2 spaces and then inserted directly into the document.
1515
# Use pipe (|) for multiline entries.
1616
subtext: |
17-
Flag `--fips-disabled-components=receiver.otlp,exporter.otlp,processor.batch,extension.oidc` can be used to disable
18-
components when operator runs on FIPS enabled cluster. The operator uses `/proc/sys/crypto/fips_enabled` to check
19-
if FIPS is enabled.
17+
This change enables mTLS between the collector and the target allocator (requires cert-manager).
18+
This is necessary for passing secrets securely from the TA to the collector for scraping endpoints that have authentication.

.chloggen/container-names.yaml

-16
This file was deleted.

.chloggen/improve-probe-parsing.yaml

-16
This file was deleted.

.chloggen/resource-attribute-from-annotations.yaml

-24
This file was deleted.

.github/workflows/e2e.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,16 @@ jobs:
3434
- e2e-upgrade
3535
- e2e-multi-instrumentation
3636
- e2e-metadata-filters
37+
- e2e-ta-collector-mtls
3738
include:
3839
- group: e2e-instrumentation
3940
setup: "add-instrumentation-params prepare-e2e"
4041
- group: e2e-multi-instrumentation
4142
setup: "add-instrumentation-params prepare-e2e"
4243
- group: e2e-metadata-filters
4344
setup: "add-operator-arg OPERATOR_ARG='--annotations-filter=.*filter.out --annotations-filter=config.*.gke.io.* --labels-filter=.*filter.out' prepare-e2e"
45+
- group: e2e-ta-collector-mtls
46+
setup: "add-operator-arg OPERATOR_ARG='--feature-gates=operator.targetallocator.mtls' add-certmanager-permissions prepare-e2e"
4447
- group: e2e-automatic-rbac
4548
setup: "add-rbac-permissions-to-operator prepare-e2e"
4649
steps:
@@ -57,7 +60,7 @@ jobs:
5760
path: bin
5861
key: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('Makefile') }}-${{ steps.setup-go.outputs.go-version }}
5962
- name: Install chainsaw
60-
uses: kyverno/[email protected].10
63+
uses: kyverno/[email protected].11
6164
- name: Install tools
6265
run: make install-tools
6366
- name: Prepare e2e tests
+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: "Publish must-gather image"
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
tags: [ 'v*' ]
7+
8+
workflow_dispatch:
9+
10+
env:
11+
PLATFORMS: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
12+
13+
jobs:
14+
publish:
15+
name: Publish must-gather container image
16+
runs-on: ubuntu-22.04
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- uses: actions/setup-go@v5
21+
with:
22+
go-version: '~1.22.4'
23+
24+
- name: Unshallow
25+
run: git fetch --prune --unshallow
26+
27+
- name: Build the binary for each supported architecture
28+
run: |
29+
for platform in $(echo $PLATFORMS | tr "," "\n"); do
30+
arch=${platform#*/}
31+
echo "Building must-gather for $arch"
32+
make must-gather ARCH=$arch
33+
done
34+
35+
- name: Docker meta
36+
id: docker_meta
37+
uses: docker/metadata-action@v5
38+
with:
39+
images: |
40+
ghcr.io/open-telemetry/opentelemetry-operator/must-gather
41+
tags: |
42+
type=semver,pattern={{version}}
43+
type=semver,pattern={{major}}.{{minor}}
44+
type=semver,pattern={{raw}}
45+
type=ref,event=branch
46+
47+
- name: Set up QEMU
48+
uses: docker/setup-qemu-action@v3
49+
50+
- name: Set up Docker Buildx
51+
uses: docker/setup-buildx-action@v3
52+
53+
- name: Cache Docker layers
54+
uses: actions/cache@v4
55+
with:
56+
path: /tmp/.buildx-cache
57+
key: ${{ runner.os }}-buildx-${{ github.sha }}
58+
restore-keys: |
59+
${{ runner.os }}-buildx-
60+
61+
- name: Log into Docker.io
62+
uses: docker/login-action@v3
63+
if: ${{ github.event_name == 'push' }}
64+
with:
65+
username: ${{ secrets.DOCKER_USERNAME }}
66+
password: ${{ secrets.DOCKER_PASSWORD }}
67+
68+
- name: Login to GitHub Package Registry
69+
uses: docker/login-action@v3
70+
if: ${{ github.event_name == 'push' }}
71+
with:
72+
registry: ghcr.io
73+
username: ${{ github.repository_owner }}
74+
password: ${{ secrets.GITHUB_TOKEN }}
75+
76+
- name: Build and push must-gather image
77+
uses: docker/build-push-action@v6
78+
with:
79+
context: .
80+
file: ./cmd/gather/Dockerfile
81+
platforms: ${{ env.PLATFORMS }}
82+
push: ${{ github.event_name != 'pull_request' }}
83+
tags: ${{ steps.docker_meta.outputs.tags }}
84+
labels: ${{ steps.docker_meta.outputs.labels }}
85+
cache-from: type=local,src=/tmp/.buildx-cache
86+
cache-to: type=local,dest=/tmp/.buildx-cache

.gitignore

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# Binaries for programs and plugins
32
*.exe
43
*.exe~
@@ -39,8 +38,9 @@ config/manager/kustomization.yaml
3938
kubeconfig
4039
tests/_build/
4140
config/rbac/extra-permissions-operator/
41+
config/rbac/certmanager-permissions/
4242

4343
# autoinstrumentation artifacts
4444
build
4545
node_modules
46-
package-lock.json
46+
package-lock.json

CHANGELOG.md

+109
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,115 @@
22

33
<!-- next version -->
44

5+
## 0.110.0
6+
7+
### 🛑 Breaking changes 🛑
8+
9+
- `auto-instrumentation`: Enable multi instrumentation by default. (#3090)
10+
11+
Starting with this release, the OpenTelemetry Operator now enables multi-instrumentation by default.
12+
This enhancement allows instrumentation of multiple containers in a pod with language-specific configurations.
13+
14+
Key Changes:
15+
- Single Instrumentation (Default Behavior): If no container names are specified using the
16+
`instrumentation.opentelemetry.io/container-names` annotation, instrumentation will be applied to the first container in
17+
the pod spec by default. This only applies when single instrumentation injection is configured.
18+
- Multi-Container Pods: In scenarios where different containers in a pod use distinct technologies, users must specify the
19+
container(s) for instrumentation using language-specific annotations. Without this specification, the default behavior may
20+
not work as expected for multi-container environments.
21+
22+
Compatibility:
23+
- Users already utilizing the `instrumentation.opentelemetry.io/container-names` annotation do not need to take any action.
24+
Their existing setup will continue to function as before.
25+
- Important: Users who attempt to configure both `instrumentation.opentelemetry.io/container-names` and language-specific annotations
26+
(for multi-instrumentation) simultaneously will encounter an error, as this configuration is not supported.
27+
28+
- `collector`: Remove ComponentUseLocalHostAsDefaultHost collector feature gate. (#3306)
29+
30+
This change may break setups where receiver endpoints are not explicitly configured to listen on e.g. 0.0.0.0.
31+
Change \#3333 attempts to address this issue for a known set of components.
32+
The operator performs the adjustment for the following receivers:
33+
- otlp
34+
- skywalking
35+
- jaeger
36+
- loki
37+
- opencensus
38+
- zipkin
39+
- tcplog
40+
- udplog
41+
- fluentforward
42+
- statsd
43+
- awsxray/UDP
44+
- carbon
45+
- collectd
46+
- sapm
47+
- signalfx
48+
- splunk_hec
49+
- wavefront
50+
51+
52+
### 💡 Enhancements 💡
53+
54+
- `auto-instrumentation, collector`: Add a must gather utility to help troubleshoot (#3149)
55+
56+
The new utility is available as part of a new container image.
57+
58+
To use the image in a running OpenShift cluster, you need to run the following command:
59+
60+
```sh
61+
oc adm must-gather --image=ghcr.io/open-telemetry/opentelemetry-operator/must-gather -- /usr/bin/must-gather --operator-namespace opentelemetry-operator-system
62+
```
63+
64+
See the [README](https://github.com/open-telemetry/opentelemetry-operator/blob/main/cmd/gather/README.md) for more details.
65+
66+
- `collector`: set default address for all parsed receivers (#3126)
67+
68+
This feature is enabled by default. It can be disabled by specifying
69+
`--feature-gates=-operator.collector.default.config`.
70+
- `operator`: Use 0.0.0.0 as otlp receiver default address (#3126)
71+
- `collector`: Add flag to disable components when operator runs on FIPS enabled cluster. (#3315)
72+
Flag `--fips-disabled-components=receiver.otlp,exporter.otlp,processor.batch,extension.oidc` can be used to disable
73+
components when operator runs on FIPS enabled cluster. The operator uses `/proc/sys/crypto/fips_enabled` to check
74+
if FIPS is enabled.
75+
76+
- `collector`: Improves healthcheck parsing capabilities, allowing for future extensions to configure a healthcheck other than the v1 healthcheck extension. (#3184)
77+
- `auto-instrumentation`: Add support for k8s labels such as app.kubernetes.io/name for resource attributes (#3112)
78+
79+
You can opt-in as follows:
80+
```yaml
81+
apiVersion: opentelemetry.io/v1alpha1
82+
kind: Instrumentation
83+
metadata:
84+
name: my-instrumentation
85+
spec:
86+
defaults:
87+
useLabelsForResourceAttributes: true
88+
```
89+
The following labels are supported:
90+
- `app.kubernetes.io/name` becomes `service.name`
91+
- `app.kubernetes.io/version` becomes `service.version`
92+
- `app.kubernetes.io/part-of` becomes `service.namespace`
93+
- `app.kubernetes.io/instance` becomes `service.instance.id`
94+
95+
96+
### 🧰 Bug fixes 🧰
97+
98+
- `auto-instrumentation`: Fix ApacheHttpd, Nginx and SDK injectors to honour their container-names annotations. (#3313)
99+
100+
This is a breaking change if anyone is accidentally using the enablement flag with container names for these 3 injectors.
101+
102+
### Components
103+
104+
* [OpenTelemetry Collector - v0.110.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.110.0)
105+
* [OpenTelemetry Contrib - v0.110.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.110.0)
106+
* [Java auto-instrumentation - v1.33.5](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v1.33.5)
107+
* [.NET auto-instrumentation - v1.2.0](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/tag/v1.2.0)
108+
* [Node.JS - v0.52.1](https://github.com/open-telemetry/opentelemetry-js/releases/tag/experimental%2Fv0.52.1)
109+
* [Python - v0.48b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.48b0)
110+
* [Go - v0.14.0-alpha](https://github.com/open-telemetry/opentelemetry-go-instrumentation/releases/tag/v0.14.0-alpha)
111+
* [ApacheHTTPD - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4)
112+
* [Nginx - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4)
113+
5114
## 0.109.0
6115

7116
### 🚩 Deprecations 🚩

0 commit comments

Comments
 (0)