Skip to content

Commit 4005a0b

Browse files
authored
Merge branch 'main' into bug/2561
2 parents 1e58b3e + 60d37e1 commit 4005a0b

10 files changed

+156
-181
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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 the RBAC resources creation when the processor was only enabled"
9+
10+
# One or more tracking issues related to the change
11+
issues: [2788]
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:
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: breaking
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: target allocator
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: Promote `operator.collector.rewritetargetallocator` feature flag to stable
9+
10+
# One or more tracking issues related to the change
11+
issues: [2796]
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:

autoinstrumentation/java/version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.1.0
1+
2.2.0

internal/manifests/collector/adapters/config_to_ports.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func ConfigToComponentPorts(logger logr.Logger, cType ComponentType, config map[
100100
}
101101

102102
if err != nil {
103-
logger.V(2).Info("no parser found for '%s'", cmptName)
103+
logger.V(2).Info("no parser found for", "component", cmptName)
104104
continue
105105
}
106106

internal/manifests/collector/adapters/config_to_rbac.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func ConfigToRBAC(logger logr.Logger, config map[interface{}]interface{}) []rbac
5252
processorName := key.(string)
5353
processorParser, err := processor.For(logger, processorName, processorCfg)
5454
if err != nil {
55-
logger.V(2).Info("no parser found for '%s'", processorName)
55+
logger.V(2).Info("no parser found for", "processor", processorName)
5656
continue
5757
}
5858

internal/manifests/collector/config_replace_test.go

+1-60
Original file line numberDiff line numberDiff line change
@@ -18,57 +18,17 @@ import (
1818
"os"
1919
"testing"
2020

21-
"github.com/prometheus/prometheus/discovery/http"
2221
"github.com/stretchr/testify/assert"
2322
"github.com/stretchr/testify/require"
24-
colfeaturegate "go.opentelemetry.io/collector/featuregate"
2523
"gopkg.in/yaml.v2"
2624

2725
ta "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters"
28-
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
2926
)
3027

3128
func TestPrometheusParser(t *testing.T) {
3229
param, err := newParams("test/test-img", "testdata/http_sd_config_test.yaml")
3330
assert.NoError(t, err)
3431

35-
t.Run("should update config with http_sd_config", func(t *testing.T) {
36-
err := colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), false)
37-
require.NoError(t, err)
38-
t.Cleanup(func() {
39-
_ = colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), true)
40-
})
41-
actualConfig, err := ReplaceConfig(param.OtelCol)
42-
assert.NoError(t, err)
43-
44-
// prepare
45-
var cfg Config
46-
promCfgMap, err := ta.ConfigToPromConfig(actualConfig)
47-
assert.NoError(t, err)
48-
49-
promCfg, err := yaml.Marshal(promCfgMap)
50-
assert.NoError(t, err)
51-
52-
err = yaml.UnmarshalStrict(promCfg, &cfg)
53-
assert.NoError(t, err)
54-
55-
// test
56-
expectedMap := map[string]bool{
57-
"prometheus": false,
58-
"service-x": false,
59-
}
60-
for _, scrapeConfig := range cfg.PromConfig.ScrapeConfigs {
61-
assert.Len(t, scrapeConfig.ServiceDiscoveryConfigs, 1)
62-
assert.Equal(t, scrapeConfig.ServiceDiscoveryConfigs[0].Name(), "http")
63-
assert.Equal(t, scrapeConfig.ServiceDiscoveryConfigs[0].(*http.SDConfig).URL, "http://test-targetallocator:80/jobs/"+scrapeConfig.JobName+"/targets?collector_id=$POD_NAME")
64-
expectedMap[scrapeConfig.JobName] = true
65-
}
66-
for k := range expectedMap {
67-
assert.True(t, expectedMap[k], k)
68-
}
69-
assert.True(t, cfg.TargetAllocConfig == nil)
70-
})
71-
7232
t.Run("should update config with targetAllocator block if block not present", func(t *testing.T) {
7333
// Set up the test scenario
7434
param.OtelCol.Spec.TargetAllocator.Enabled = true
@@ -171,26 +131,7 @@ func TestReplaceConfig(t *testing.T) {
171131
assert.YAMLEq(t, expectedConfig, actualConfig)
172132
})
173133

174-
t.Run("should rewrite scrape configs with SD config when TargetAllocator is enabled and feature flag is not set", func(t *testing.T) {
175-
err := colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), false)
176-
require.NoError(t, err)
177-
t.Cleanup(func() {
178-
_ = colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), true)
179-
})
180-
181-
param.OtelCol.Spec.TargetAllocator.Enabled = true
182-
183-
expectedConfigBytes, err := os.ReadFile("testdata/relabel_config_expected_with_sd_config.yaml")
184-
assert.NoError(t, err)
185-
expectedConfig := string(expectedConfigBytes)
186-
187-
actualConfig, err := ReplaceConfig(param.OtelCol)
188-
assert.NoError(t, err)
189-
190-
assert.YAMLEq(t, expectedConfig, actualConfig)
191-
})
192-
193-
t.Run("should remove scrape configs if TargetAllocator is enabled and feature flag is set", func(t *testing.T) {
134+
t.Run("should remove scrape configs if TargetAllocator is enabled", func(t *testing.T) {
194135
param.OtelCol.Spec.TargetAllocator.Enabled = true
195136

196137
expectedConfigBytes, err := os.ReadFile("testdata/config_expected_targetallocator.yaml")

internal/manifests/collector/configmap_test.go

-109
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@ package collector
1717
import (
1818
"testing"
1919

20-
colfeaturegate "go.opentelemetry.io/collector/featuregate"
21-
2220
"github.com/stretchr/testify/assert"
23-
24-
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
2521
)
2622

2723
func TestDesiredConfigMap(t *testing.T) {
@@ -73,111 +69,6 @@ service:
7369
}
7470
})
7571

76-
t.Run("should return expected collector config map with http_sd_config if rewrite flag disabled", func(t *testing.T) {
77-
err := colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), false)
78-
assert.NoError(t, err)
79-
t.Cleanup(func() {
80-
_ = colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), true)
81-
})
82-
expectedLables["app.kubernetes.io/component"] = "opentelemetry-collector"
83-
expectedLables["app.kubernetes.io/name"] = "test-collector"
84-
85-
expectedData := map[string]string{
86-
"collector.yaml": `exporters:
87-
debug:
88-
receivers:
89-
jaeger:
90-
protocols:
91-
grpc: null
92-
prometheus:
93-
config:
94-
scrape_configs:
95-
- http_sd_configs:
96-
- url: http://test-targetallocator:80/jobs/otel-collector/targets?collector_id=$POD_NAME
97-
job_name: otel-collector
98-
scrape_interval: 10s
99-
service:
100-
pipelines:
101-
metrics:
102-
exporters:
103-
- debug
104-
processors: []
105-
receivers:
106-
- prometheus
107-
- jaeger
108-
`,
109-
}
110-
111-
param := deploymentParams()
112-
param.OtelCol.Spec.TargetAllocator.Enabled = true
113-
actual, err := ConfigMap(param)
114-
115-
assert.NoError(t, err)
116-
assert.Equal(t, "test-collector", actual.GetName())
117-
assert.Equal(t, expectedLables, actual.GetLabels())
118-
assert.Equal(t, len(expectedData), len(actual.Data))
119-
for k, expected := range expectedData {
120-
assert.YAMLEq(t, expected, actual.Data[k])
121-
}
122-
123-
})
124-
125-
t.Run("should return expected escaped collector config map with http_sd_config if rewrite flag disabled", func(t *testing.T) {
126-
err := colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), false)
127-
assert.NoError(t, err)
128-
t.Cleanup(func() {
129-
_ = colfeaturegate.GlobalRegistry().Set(featuregate.EnableTargetAllocatorRewrite.ID(), true)
130-
})
131-
132-
expectedLables["app.kubernetes.io/component"] = "opentelemetry-collector"
133-
expectedLables["app.kubernetes.io/name"] = "test-collector"
134-
expectedLables["app.kubernetes.io/version"] = "latest"
135-
136-
expectedData := map[string]string{
137-
"collector.yaml": `exporters:
138-
debug:
139-
receivers:
140-
prometheus:
141-
config:
142-
scrape_configs:
143-
- http_sd_configs:
144-
- url: http://test-targetallocator:80/jobs/serviceMonitor%2Ftest%2Ftest%2F0/targets?collector_id=$POD_NAME
145-
job_name: serviceMonitor/test/test/0
146-
target_allocator:
147-
collector_id: ${POD_NAME}
148-
endpoint: http://test-targetallocator:80
149-
http_sd_config:
150-
refresh_interval: 60s
151-
interval: 30s
152-
service:
153-
pipelines:
154-
metrics:
155-
exporters:
156-
- debug
157-
processors: []
158-
receivers:
159-
- prometheus
160-
`,
161-
}
162-
163-
param, err := newParams("test/test-img", "testdata/http_sd_config_servicemonitor_test_ta_set.yaml")
164-
assert.NoError(t, err)
165-
param.OtelCol.Spec.TargetAllocator.Enabled = true
166-
actual, err := ConfigMap(param)
167-
168-
assert.NoError(t, err)
169-
assert.Equal(t, "test-collector", actual.Name)
170-
assert.Equal(t, expectedLables, actual.Labels)
171-
assert.Equal(t, len(expectedData), len(actual.Data))
172-
for k, expected := range expectedData {
173-
assert.YAMLEq(t, expected, actual.Data[k])
174-
}
175-
176-
// Reset the value
177-
expectedLables["app.kubernetes.io/version"] = "0.47.0"
178-
179-
})
180-
18172
t.Run("should return expected escaped collector config map with target_allocator config block", func(t *testing.T) {
18273
expectedLables["app.kubernetes.io/component"] = "opentelemetry-collector"
18374
expectedLables["app.kubernetes.io/name"] = "test-collector"

internal/manifests/collector/parser/processor/processor_k8sattributes.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ func (o *K8sAttributesParser) ParserName() string {
5252
func (o *K8sAttributesParser) GetRBACRules() []rbacv1.PolicyRule {
5353
var prs []rbacv1.PolicyRule
5454

55+
// This one needs to be added always
56+
policy := rbacv1.PolicyRule{
57+
APIGroups: []string{""},
58+
Resources: []string{"pods", "namespaces"},
59+
Verbs: []string{"get", "watch", "list"},
60+
}
61+
prs = append(prs, policy)
62+
5563
extractCfg, ok := o.config["extract"]
5664
if !ok {
5765
return prs
@@ -67,14 +75,6 @@ func (o *K8sAttributesParser) GetRBACRules() []rbacv1.PolicyRule {
6775
return prs
6876
}
6977

70-
// This one needs to be added always
71-
policy := rbacv1.PolicyRule{
72-
APIGroups: []string{""},
73-
Resources: []string{"pods", "namespaces"},
74-
Verbs: []string{"get", "watch", "list"},
75-
}
76-
prs = append(prs, policy)
77-
7878
for _, m := range metadata {
7979
metadataField := fmt.Sprint(m)
8080
if metadataField == "k8s.deployment.uid" || metadataField == "k8s.deployment.name" {

0 commit comments

Comments
 (0)