Skip to content

Commit c8a51c7

Browse files
committed
Ability to configure Collector's Service, Headless Service, Monitoring Service and Extension Service
1 parent 087f27e commit c8a51c7

22 files changed

+839
-74
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: enhancement
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: "Add the ability to configure the Collector's Service, Headless Service, Monitoring Service and Extension Service"
9+
10+
# One or more tracking issues related to the change
11+
issues: [4205]
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+
Introduces additional CRD options to configure and manage all the services deployed alongside the Collector.
18+
Each of the Service, Headless Service, Monitoring Service & Extension Service can now be individually Enabled/Disabled
19+
and the Name can be overridden.

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,7 @@ TMP_DIR=$$(mktemp -d) ;\
657657
cd $$TMP_DIR ;\
658658
go mod init tmp ;\
659659
echo "Downloading $(2)" ;\
660+
echo "replace fybrik.io/crdoc => github.com/fybrik/crdoc v0.5.2" >> go.mod ;\
660661
go get $(2)@$(3) ;\
661662
GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\
662663
rm -rf $$TMP_DIR ;\

apis/v1alpha1/convert.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,15 @@ func tov1beta1(in OpenTelemetryCollector) (v1beta1.OpenTelemetryCollector, error
103103
StatefulSetCommonFields: v1beta1.StatefulSetCommonFields{
104104
VolumeClaimTemplates: copy.Spec.VolumeClaimTemplates,
105105
},
106-
Autoscaler: tov1beta1Autoscaler(copy.Spec.Autoscaler, copy.Spec.MinReplicas, copy.Spec.MaxReplicas),
107-
TargetAllocator: tov1beta1TA(copy.Spec.TargetAllocator),
108-
Mode: v1beta1.Mode(copy.Spec.Mode),
109-
UpgradeStrategy: v1beta1.UpgradeStrategy(copy.Spec.UpgradeStrategy),
110-
Config: *cfg,
106+
Autoscaler: tov1beta1Autoscaler(copy.Spec.Autoscaler, copy.Spec.MinReplicas, copy.Spec.MaxReplicas),
107+
TargetAllocator: tov1beta1TA(copy.Spec.TargetAllocator),
108+
Mode: v1beta1.Mode(copy.Spec.Mode),
109+
UpgradeStrategy: v1beta1.UpgradeStrategy(copy.Spec.UpgradeStrategy),
110+
Config: *cfg,
111+
Service: tov1beta1ServiceSpec(copy.Spec.Service),
112+
HeadlessService: tov1beta1ServiceSpec(copy.Spec.HeadlessService),
113+
MonitoringService: tov1beta1ServiceSpec(copy.Spec.MonitoringService),
114+
ExtensionService: tov1beta1ServiceSpec(copy.Spec.ExtensionService),
111115
Ingress: v1beta1.Ingress{
112116
Type: v1beta1.IngressType(copy.Spec.Ingress.Type),
113117
RuleType: v1beta1.IngressRuleType(copy.Spec.Ingress.RuleType),
@@ -250,6 +254,13 @@ func tov1beta1Probe(in *Probe) *v1beta1.Probe {
250254
}
251255
}
252256

257+
func tov1beta1ServiceSpec(in ServiceSpec) v1beta1.ServiceSpec {
258+
return v1beta1.ServiceSpec{
259+
Enabled: in.Enabled,
260+
Name: in.Name,
261+
}
262+
}
263+
253264
func tov1beta1ConfigMaps(in []ConfigMapsSpec) []v1beta1.ConfigMapsSpec {
254265
var mapsSpecs []v1beta1.ConfigMapsSpec
255266
for _, m := range in {
@@ -336,6 +347,10 @@ func tov1alpha1(in v1beta1.OpenTelemetryCollector) (*OpenTelemetryCollector, err
336347
Termination: TLSRouteTerminationType(copy.Spec.Ingress.Route.Termination),
337348
},
338349
},
350+
Service: tov1alpha1ServiceSpec(copy.Spec.Service),
351+
HeadlessService: tov1alpha1ServiceSpec(copy.Spec.HeadlessService),
352+
MonitoringService: tov1alpha1ServiceSpec(copy.Spec.MonitoringService),
353+
ExtensionService: tov1alpha1ServiceSpec(copy.Spec.ExtensionService),
339354
HostNetwork: copy.Spec.HostNetwork,
340355
ShareProcessNamespace: copy.Spec.ShareProcessNamespace,
341356
PriorityClassName: copy.Spec.PriorityClassName,
@@ -383,6 +398,13 @@ func tov1alpha1Probe(in *v1beta1.Probe) *Probe {
383398
}
384399
}
385400

401+
func tov1alpha1ServiceSpec(in v1beta1.ServiceSpec) ServiceSpec {
402+
return ServiceSpec{
403+
Enabled: in.Enabled,
404+
Name: in.Name,
405+
}
406+
}
407+
386408
func tov1alpha1Autoscaler(in *v1beta1.AutoscalerSpec) *AutoscalerSpec {
387409
if in == nil {
388410
return nil

apis/v1alpha1/opentelemetrycollector_types.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,22 @@ type OpenTelemetryCollectorSpec struct {
239239
// +optional
240240
ServiceName string `json:"serviceName,omitempty"`
241241

242+
// Service to override configuration of the generated Collector Service.
243+
// +optional
244+
Service ServiceSpec `json:"service,omitempty"`
245+
246+
// HeadlessService to override configuration of the generated Collector HeadlessService.
247+
// +optional
248+
HeadlessService ServiceSpec `json:"headlessService,omitempty"`
249+
250+
// MonitoringService to override configuration of the generated Collector MonitoringService.
251+
// +optional
252+
MonitoringService ServiceSpec `json:"monitoringService,omitempty"`
253+
254+
// ExtensionService to override configuration of the generated Collector ExtensionService.
255+
// +optional
256+
ExtensionService ServiceSpec `json:"extensionService,omitempty"`
257+
242258
// AdditionalContainers allows injecting additional containers into the Collector's pod definition.
243259
// These sidecar containers can be used for authentication proxies, log shipping sidecars, agents for shipping
244260
// metrics to their cloud, or in general sidecars that do not support automatic injection. This option only
@@ -600,3 +616,20 @@ type ConfigMapsSpec struct {
600616
func init() {
601617
SchemeBuilder.Register(&OpenTelemetryCollector{}, &OpenTelemetryCollectorList{})
602618
}
619+
620+
type ServiceSpec struct {
621+
// Enabled indicates whether the Service should be created.
622+
// nil means not set (defaults to enabled for backward compatibility)
623+
// +optional
624+
Enabled *bool `json:"enabled,omitempty"`
625+
626+
// Name to override the default Service name
627+
// +optional
628+
Name string `json:"name,omitempty"`
629+
}
630+
631+
// IsEnabled returns true if the service should be created.
632+
// nil (not set) defaults to true for backward compatibility.
633+
func (s *ServiceSpec) IsEnabled() bool {
634+
return s.Enabled == nil || *s.Enabled
635+
}

apis/v1alpha1/zz_generated.deepcopy.go

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apis/v1beta1/opentelemetrycollector_types.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,22 @@ type OpenTelemetryCollectorSpec struct {
140140
// If not specified, it will default to "<name>-headless".
141141
// +optional
142142
ServiceName string `json:"serviceName,omitempty"`
143+
144+
// Service to override configuration of the generated Collector Service.
145+
// +optional
146+
Service ServiceSpec `json:"service,omitempty"`
147+
148+
// HeadlessService to override configuration of the generated Collector HeadlessService.
149+
// +optional
150+
HeadlessService ServiceSpec `json:"headlessService,omitempty"`
151+
152+
// MonitoringService to override configuration of the generated Collector MonitoringService.
153+
// +optional
154+
MonitoringService ServiceSpec `json:"monitoringService,omitempty"`
155+
156+
// ExtensionService to override configuration of the generated Collector ExtensionService.
157+
// +optional
158+
ExtensionService ServiceSpec `json:"extensionService,omitempty"`
143159
}
144160

145161
// TargetAllocatorEmbedded defines the configuration for the Prometheus target allocator, embedded in the
@@ -324,3 +340,20 @@ type ConfigMapsSpec struct {
324340
Name string `json:"name"`
325341
MountPath string `json:"mountpath"`
326342
}
343+
344+
type ServiceSpec struct {
345+
// Enabled indicates whether the Service should be created.
346+
// nil means not set (defaults to enabled for backward compatibility)
347+
// +optional
348+
Enabled *bool `json:"enabled,omitempty"`
349+
350+
// Name to override the default Service name
351+
// +optional
352+
Name string `json:"name,omitempty"`
353+
}
354+
355+
// IsEnabled returns true if the service should be created.
356+
// nil (not set) defaults to true for backward compatibility.
357+
func (s *ServiceSpec) IsEnabled() bool {
358+
return s.Enabled == nil || *s.Enabled
359+
}

apis/v1beta1/zz_generated.deepcopy.go

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundle/community/manifests/opentelemetry-operator.clusterserviceversion.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ metadata:
9999
categories: Logging & Tracing,Monitoring
100100
certified: "false"
101101
containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator
102-
createdAt: "2025-07-30T19:32:31Z"
102+
createdAt: "2025-08-06T20:58:08Z"
103103
description: Provides the OpenTelemetry components, including the Collector
104104
operators.operatorframework.io/builder: operator-sdk-v1.29.0
105105
operators.operatorframework.io/project_layout: go.kubebuilder.io/v3

bundle/community/manifests/opentelemetry.io_opentelemetrycollectors.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,6 +1454,20 @@ spec:
14541454
x-kubernetes-map-type: atomic
14551455
type: object
14561456
type: array
1457+
extensionService:
1458+
properties:
1459+
enabled:
1460+
type: boolean
1461+
name:
1462+
type: string
1463+
type: object
1464+
headlessService:
1465+
properties:
1466+
enabled:
1467+
type: boolean
1468+
name:
1469+
type: string
1470+
type: object
14571471
hostNetwork:
14581472
type: boolean
14591473
image:
@@ -2346,6 +2360,13 @@ spec:
23462360
- sidecar
23472361
- statefulset
23482362
type: string
2363+
monitoringService:
2364+
properties:
2365+
enabled:
2366+
type: boolean
2367+
name:
2368+
type: string
2369+
type: object
23492370
nodeSelector:
23502371
additionalProperties:
23512372
type: string
@@ -2596,6 +2617,13 @@ spec:
25962617
type: string
25972618
type: object
25982619
type: object
2620+
service:
2621+
properties:
2622+
enabled:
2623+
type: boolean
2624+
name:
2625+
type: string
2626+
type: object
25992627
serviceAccount:
26002628
type: string
26012629
serviceName:
@@ -6063,6 +6091,20 @@ spec:
60636091
x-kubernetes-map-type: atomic
60646092
type: object
60656093
type: array
6094+
extensionService:
6095+
properties:
6096+
enabled:
6097+
type: boolean
6098+
name:
6099+
type: string
6100+
type: object
6101+
headlessService:
6102+
properties:
6103+
enabled:
6104+
type: boolean
6105+
name:
6106+
type: string
6107+
type: object
60666108
hostNetwork:
60676109
type: boolean
60686110
image:
@@ -6956,6 +6998,13 @@ spec:
69566998
- sidecar
69576999
- statefulset
69587000
type: string
7001+
monitoringService:
7002+
properties:
7003+
enabled:
7004+
type: boolean
7005+
name:
7006+
type: string
7007+
type: object
69597008
nodeSelector:
69607009
additionalProperties:
69617010
type: string
@@ -7261,6 +7310,13 @@ spec:
72617310
type: string
72627311
type: object
72637312
type: object
7313+
service:
7314+
properties:
7315+
enabled:
7316+
type: boolean
7317+
name:
7318+
type: string
7319+
type: object
72647320
serviceAccount:
72657321
type: string
72667322
serviceName:

bundle/openshift/manifests/opentelemetry-operator.clusterserviceversion.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ metadata:
9999
categories: Logging & Tracing,Monitoring
100100
certified: "false"
101101
containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator
102-
createdAt: "2025-07-30T19:32:32Z"
102+
createdAt: "2025-08-06T20:58:09Z"
103103
description: Provides the OpenTelemetry components, including the Collector
104104
operators.operatorframework.io/builder: operator-sdk-v1.29.0
105105
operators.operatorframework.io/project_layout: go.kubebuilder.io/v3

0 commit comments

Comments
 (0)