Skip to content

Commit 107d2c3

Browse files
authored
Fix otelcol cr deletion failures (open-telemetry#3076)
* Fix otelcol cr deletion failures Set OpenTelemetryCollector CRD `spec.config.service.pipelines.processors` to optional to align with OTel Collector usage recommendations. * Fix e2e
1 parent 3a300b1 commit 107d2c3

File tree

131 files changed

+61
-175
lines changed

Some content is hidden

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

131 files changed

+61
-175
lines changed

.chloggen/fix-otelcol-crd.yaml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: bug_fix
3+
4+
# 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
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: "Fix deletion issue of `otelcol` CR by making `spec.config.service.pipelines.processors` optional"
9+
10+
# One or more tracking issues related to the change
11+
issues: [3075]
12+
13+
# (Optional) One or more lines of additional information to render under the primary note.
14+
# These lines will be padded with 2 spaces and then inserted directly into the document.
15+
# Use pipe (|) for multiline entries.
16+
subtext: |
17+
This change makes `spec.config.service.pipelines.processors` in `OpenTelemetryCollector` CRD optional, aligning with OTel Collector best practices. It resolves deletion issues by providing flexibility in CRD configuration, addressing conflicts between strict validation and practical uses.
18+
Note: Updating the `opentelemetrycollectors.opentelemetry.io` CRD resource is required.

README.md

-4
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ spec:
121121
pipelines:
122122
traces:
123123
receivers: [jaeger]
124-
processors: []
125124
exporters: [debug]
126125
EOF
127126

@@ -629,7 +628,6 @@ spec:
629628
pipelines:
630629
metrics:
631630
receivers: [prometheus]
632-
processors: []
633631
exporters: [debug]
634632
EOF
635633
```
@@ -654,7 +652,6 @@ service:
654652
pipelines:
655653
metrics:
656654
receivers: [prometheus]
657-
processors: []
658655
exporters: [debug]
659656
```
660657

@@ -713,7 +710,6 @@ spec:
713710
pipelines:
714711
metrics:
715712
receivers: [prometheus]
716-
processors: []
717713
exporters: [debug]
718714
EOF
719715
```

apis/v1beta1/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (c *AnyConfig) MarshalJSON() ([]byte, error) {
9090
// Pipeline is a struct of component type to a list of component IDs.
9191
type Pipeline struct {
9292
Exporters []string `json:"exporters" yaml:"exporters"`
93-
Processors []string `json:"processors" yaml:"processors"`
93+
Processors []string `json:"processors,omitempty" yaml:"processors,omitempty"`
9494
Receivers []string `json:"receivers" yaml:"receivers"`
9595
}
9696

apis/v1beta1/testdata/otelcol-connectors.yaml

-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ service:
1717
pipelines:
1818
traces:
1919
receivers: [foo]
20-
processors: []
2120
exporters: [count]
2221
metrics:
2322
receivers: [count]
24-
processors: []
2523
exporters: [bar]

apis/v1beta1/testdata/otelcol-extensions.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,5 @@ service:
2323
traces:
2424
receivers:
2525
- otlp
26-
processors: []
2726
exporters:
2827
- otlp/auth

apis/v1beta1/testdata/otelcol-filelog.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,4 @@ service:
8181
pipelines:
8282
logs:
8383
receivers: [filelog]
84-
processors: []
8584
exporters: [debug]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
receivers:
2+
otlp:
3+
protocols:
4+
grpc:
5+
http:
6+
exporters:
7+
debug:
8+
service:
9+
pipelines:
10+
traces:
11+
receivers:
12+
- otlp
13+
exporters:
14+
- debug

bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -5856,7 +5856,6 @@ spec:
58565856
type: array
58575857
required:
58585858
- exporters
5859-
- processors
58605859
- receivers
58615860
type: object
58625861
type: object

cmd/operator-opamp-bridge/agent/agent_test.go

-6
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,6 @@ func TestAgent_onMessage(t *testing.T) {
642642
"name: " + testCollectorName,
643643
"namespace: " + testNamespace,
644644
"send_batch_size: 10000",
645-
"processors: []",
646645
"status:",
647646
},
648647
},
@@ -688,7 +687,6 @@ func TestAgent_onMessage(t *testing.T) {
688687
"name: " + testCollectorName,
689688
"namespace: " + testNamespace,
690689
"send_batch_size: 10000",
691-
"processors: []",
692690
"status:",
693691
},
694692
},
@@ -702,7 +700,6 @@ func TestAgent_onMessage(t *testing.T) {
702700
"name: " + testCollectorName,
703701
"namespace: " + testNamespace,
704702
"send_batch_size: 10000",
705-
"processors: []",
706703
"status:",
707704
},
708705
},
@@ -735,7 +732,6 @@ func TestAgent_onMessage(t *testing.T) {
735732
"name: " + testCollectorName,
736733
"namespace: " + testNamespace,
737734
"send_batch_size: 10000",
738-
"processors: []",
739735
"status:",
740736
},
741737
},
@@ -749,7 +745,6 @@ func TestAgent_onMessage(t *testing.T) {
749745
"name: " + testCollectorName,
750746
"namespace: " + testNamespace,
751747
"send_batch_size: 10000",
752-
"processors: []",
753748
"status:",
754749
},
755750
otherCollectorKey: {
@@ -786,7 +781,6 @@ func TestAgent_onMessage(t *testing.T) {
786781
"name: " + testCollectorName,
787782
"namespace: " + testNamespace,
788783
"send_batch_size: 10000",
789-
"processors: []",
790784
"status:",
791785
},
792786
},

cmd/operator-opamp-bridge/agent/testdata/basic.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,4 @@ spec:
2626
pipelines:
2727
traces:
2828
receivers: [otlp]
29-
processors: []
3029
exporters: [debug]

cmd/operator-opamp-bridge/agent/testdata/invalid.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,4 @@ spec:
2626
pipelines:
2727
traces:
2828
receivers: [otlp]
29-
processors: []
3029
exporters: [debug]

cmd/operator-opamp-bridge/operator/client_test.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,8 @@ func Test_collectorUpdate(t *testing.T) {
177177
require.NoError(t, err, "Should apply base config")
178178

179179
// Get the newly created collector
180-
instance, err := c.GetInstance(name, namespace)
180+
_, err = c.GetInstance(name, namespace)
181181
require.NoError(t, err, "Should be able to get the newly created instance")
182-
assert.Contains(t, instance.Spec.Config, "processors: []")
183182

184183
// Try updating with an invalid one
185184
configmap.Body = []byte("empty, invalid!")
@@ -224,9 +223,8 @@ func Test_collectorDelete(t *testing.T) {
224223
require.NoError(t, err, "Should apply base config")
225224

226225
// Get the newly created collector
227-
instance, err := c.GetInstance(name, namespace)
226+
_, err = c.GetInstance(name, namespace)
228227
require.NoError(t, err, "Should be able to get the newly created instance")
229-
assert.Contains(t, instance.Spec.Config, "processors: []")
230228

231229
// Delete it
232230
err = c.Delete(name, namespace)

cmd/operator-opamp-bridge/operator/testdata/collector.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,4 @@ spec:
2727
pipelines:
2828
traces:
2929
receivers: [otlp]
30-
processors: []
3130
exporters: [debug]

cmd/operator-opamp-bridge/operator/testdata/invalid-collector.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,4 @@ spec:
2424
pipelines:
2525
traces:
2626
receivers: [otlp]
27-
processors: []
2827
exporters: [debug]

cmd/operator-opamp-bridge/operator/testdata/reporting-collector.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,4 @@ spec:
2727
pipelines:
2828
traces:
2929
receivers: [otlp]
30-
processors: []
3130
exporters: [debug]

cmd/operator-opamp-bridge/operator/testdata/unmanaged-collector.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,4 @@ spec:
2727
pipelines:
2828
traces:
2929
receivers: [otlp]
30-
processors: []
3130
exporters: [debug]

cmd/otel-allocator/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ spec:
115115
pipelines:
116116
metrics:
117117
receivers: [prometheus]
118-
processors: []
119118
exporters: [logging]
120119
```
121120

config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -5842,7 +5842,6 @@ spec:
58425842
type: array
58435843
required:
58445844
- exporters
5845-
- processors
58465845
- receivers
58475846
type: object
58485847
type: object

controllers/builder_test.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ service:
134134
"app.kubernetes.io/version": "latest",
135135
},
136136
Annotations: map[string]string{
137-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
137+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
138138
"prometheus.io/path": "/metrics",
139139
"prometheus.io/port": "8888",
140140
"prometheus.io/scrape": "true",
@@ -156,7 +156,7 @@ service:
156156
"app.kubernetes.io/version": "latest",
157157
},
158158
Annotations: map[string]string{
159-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
159+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
160160
"prometheus.io/path": "/metrics",
161161
"prometheus.io/port": "8888",
162162
"prometheus.io/scrape": "true",
@@ -242,7 +242,7 @@ service:
242242
Annotations: nil,
243243
},
244244
Data: map[string]string{
245-
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n",
245+
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n",
246246
},
247247
},
248248
&corev1.ServiceAccount{
@@ -385,7 +385,7 @@ service:
385385
"app.kubernetes.io/version": "latest",
386386
},
387387
Annotations: map[string]string{
388-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
388+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
389389
"prometheus.io/path": "/metrics",
390390
"prometheus.io/port": "8888",
391391
"prometheus.io/scrape": "true",
@@ -407,7 +407,7 @@ service:
407407
"app.kubernetes.io/version": "latest",
408408
},
409409
Annotations: map[string]string{
410-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
410+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
411411
"prometheus.io/path": "/metrics",
412412
"prometheus.io/port": "8888",
413413
"prometheus.io/scrape": "true",
@@ -493,7 +493,7 @@ service:
493493
Annotations: nil,
494494
},
495495
Data: map[string]string{
496-
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n",
496+
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n",
497497
},
498498
},
499499
&corev1.ServiceAccount{
@@ -672,7 +672,7 @@ service:
672672
"app.kubernetes.io/version": "latest",
673673
},
674674
Annotations: map[string]string{
675-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
675+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
676676
"prometheus.io/path": "/metrics",
677677
"prometheus.io/port": "8888",
678678
"prometheus.io/scrape": "true",
@@ -694,7 +694,7 @@ service:
694694
"app.kubernetes.io/version": "latest",
695695
},
696696
Annotations: map[string]string{
697-
"opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401",
697+
"opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8",
698698
"prometheus.io/path": "/metrics",
699699
"prometheus.io/port": "8888",
700700
"prometheus.io/scrape": "true",
@@ -780,7 +780,7 @@ service:
780780
Annotations: nil,
781781
},
782782
Data: map[string]string{
783-
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n",
783+
"collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n",
784784
},
785785
},
786786
&corev1.Service{
@@ -1202,7 +1202,7 @@ service:
12021202
"app.kubernetes.io/version": "latest",
12031203
},
12041204
Annotations: map[string]string{
1205-
"opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009",
1205+
"opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43",
12061206
"prometheus.io/path": "/metrics",
12071207
"prometheus.io/port": "8888",
12081208
"prometheus.io/scrape": "true",
@@ -1225,7 +1225,7 @@ service:
12251225
"app.kubernetes.io/version": "latest",
12261226
},
12271227
Annotations: map[string]string{
1228-
"opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009",
1228+
"opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43",
12291229
"prometheus.io/path": "/metrics",
12301230
"prometheus.io/port": "8888",
12311231
"prometheus.io/scrape": "true",
@@ -1311,7 +1311,7 @@ service:
13111311
Annotations: nil,
13121312
},
13131313
Data: map[string]string{
1314-
"collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - prometheus\n",
1314+
"collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - prometheus\n",
13151315
},
13161316
},
13171317
&corev1.ServiceAccount{
@@ -1598,7 +1598,7 @@ prometheus_cr:
15981598
"app.kubernetes.io/version": "latest",
15991599
},
16001600
Annotations: map[string]string{
1601-
"opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009",
1601+
"opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43",
16021602
"prometheus.io/path": "/metrics",
16031603
"prometheus.io/port": "8888",
16041604
"prometheus.io/scrape": "true",
@@ -1621,7 +1621,7 @@ prometheus_cr:
16211621
"app.kubernetes.io/version": "latest",
16221622
},
16231623
Annotations: map[string]string{
1624-
"opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009",
1624+
"opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43",
16251625
"prometheus.io/path": "/metrics",
16261626
"prometheus.io/port": "8888",
16271627
"prometheus.io/scrape": "true",
@@ -1707,7 +1707,7 @@ prometheus_cr:
17071707
Annotations: nil,
17081708
},
17091709
Data: map[string]string{
1710-
"collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - prometheus\n",
1710+
"collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - prometheus\n",
17111711
},
17121712
},
17131713
&corev1.ServiceAccount{

controllers/testdata/test.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,4 @@ service:
1818
pipelines:
1919
metrics:
2020
receivers: [prometheus, jaeger]
21-
processors: []
2221
exporters: [logging]

controllers/testdata/test_ta_update.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,4 @@ service:
1818
pipelines:
1919
metrics:
2020
receivers: [prometheus, jaeger]
21-
processors: []
2221
exporters: [logging]

0 commit comments

Comments
 (0)