Skip to content

Commit 7543b9b

Browse files
committed
switch to featuregate
1 parent e32b348 commit 7543b9b

File tree

9 files changed

+82
-54
lines changed

9 files changed

+82
-54
lines changed

.chloggen/add_all_receiver_defaults.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ issues: [3126]
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.
16-
subtext:
16+
subtext: |
17+
This feature is enabled by default. It can be disabled by specifying
18+
`--feature-gates=-operator.collector.default.config`.

apis/v1beta1/collector_webhook.go

+19-29
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/open-telemetry/opentelemetry-operator/internal/fips"
3131
ta "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters"
3232
"github.com/open-telemetry/opentelemetry-operator/internal/rbac"
33+
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
3334
)
3435

3536
var (
@@ -43,14 +44,13 @@ var (
4344
// +kubebuilder:object:generate=false
4445

4546
type CollectorWebhook struct {
46-
logger logr.Logger
47-
cfg config.Config
48-
scheme *runtime.Scheme
49-
reviewer *rbac.Reviewer
50-
metrics *Metrics
51-
bv BuildValidator
52-
fips fips.FIPSCheck
53-
disableDefaulting bool
47+
logger logr.Logger
48+
cfg config.Config
49+
scheme *runtime.Scheme
50+
reviewer *rbac.Reviewer
51+
metrics *Metrics
52+
bv BuildValidator
53+
fips fips.FIPSCheck
5454
}
5555

5656
func (c CollectorWebhook) Default(_ context.Context, obj runtime.Object) error {
@@ -101,7 +101,7 @@ func (c CollectorWebhook) Default(_ context.Context, obj runtime.Object) error {
101101
if len(otelcol.Spec.ManagementState) == 0 {
102102
otelcol.Spec.ManagementState = ManagementStateManaged
103103
}
104-
if c.disableDefaulting {
104+
if !featuregate.EnableConfigDefaulting.IsEnabled() {
105105
return nil
106106
}
107107
return otelcol.Spec.Config.ApplyDefaults(c.logger)
@@ -435,30 +435,20 @@ func NewCollectorWebhook(
435435
metrics *Metrics,
436436
bv BuildValidator,
437437
fips fips.FIPSCheck,
438-
disableDefaulting bool) *CollectorWebhook {
438+
) *CollectorWebhook {
439439
return &CollectorWebhook{
440-
logger: logger,
441-
scheme: scheme,
442-
cfg: cfg,
443-
reviewer: reviewer,
444-
metrics: metrics,
445-
bv: bv,
446-
fips: fips,
447-
disableDefaulting: disableDefaulting,
440+
logger: logger,
441+
scheme: scheme,
442+
cfg: cfg,
443+
reviewer: reviewer,
444+
metrics: metrics,
445+
bv: bv,
446+
fips: fips,
448447
}
449448
}
450449

451-
func SetupCollectorWebhook(mgr ctrl.Manager, cfg config.Config, reviewer *rbac.Reviewer, metrics *Metrics, bv BuildValidator, fipsCheck fips.FIPSCheck, disableDefaulting bool) error {
452-
cvw := NewCollectorWebhook(
453-
mgr.GetLogger().WithValues("handler", "CollectorWebhook", "version", "v1beta1"),
454-
mgr.GetScheme(),
455-
cfg,
456-
reviewer,
457-
metrics,
458-
bv,
459-
fipsCheck,
460-
disableDefaulting,
461-
)
450+
func SetupCollectorWebhook(mgr ctrl.Manager, cfg config.Config, reviewer *rbac.Reviewer, metrics *Metrics, bv BuildValidator, fipsCheck fips.FIPSCheck) error {
451+
cvw := NewCollectorWebhook(mgr.GetLogger().WithValues("handler", "CollectorWebhook", "version", "v1beta1"), mgr.GetScheme(), cfg, reviewer, metrics, bv, fipsCheck)
462452
return ctrl.NewWebhookManagedBy(mgr).
463453
For(&OpenTelemetryCollector{}).
464454
WithValidator(cvw).

apis/v1beta1/collector_webhook_test.go

+48-16
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,18 @@ func TestValidate(t *testing.T) {
103103

104104
for _, tt := range tests {
105105
test := tt
106-
webhook := v1beta1.NewCollectorWebhook(logr.Discard(), testScheme, config.New(
107-
config.WithCollectorImage("collector:v0.0.0"),
108-
config.WithTargetAllocatorImage("ta:v0.0.0"),
109-
), getReviewer(test.shouldFailSar), nil, bv, nil, false)
106+
webhook := v1beta1.NewCollectorWebhook(
107+
logr.Discard(),
108+
testScheme,
109+
config.New(
110+
config.WithCollectorImage("collector:v0.0.0"),
111+
config.WithTargetAllocatorImage("ta:v0.0.0"),
112+
),
113+
getReviewer(test.shouldFailSar),
114+
nil,
115+
bv,
116+
nil,
117+
)
110118
t.Run(tt.name, func(t *testing.T) {
111119
tt := tt
112120
warnings, err := webhook.Validate(context.Background(), &tt.collector)
@@ -531,10 +539,18 @@ func TestCollectorDefaultingWebhook(t *testing.T) {
531539
for _, test := range tests {
532540
test := test
533541
t.Run(test.name, func(t *testing.T) {
534-
cvw := v1beta1.NewCollectorWebhook(logr.Discard(), testScheme, config.New(
535-
config.WithCollectorImage("collector:v0.0.0"),
536-
config.WithTargetAllocatorImage("ta:v0.0.0"),
537-
), getReviewer(test.shouldFailSar), nil, bv, nil, false)
542+
cvw := v1beta1.NewCollectorWebhook(
543+
logr.Discard(),
544+
testScheme,
545+
config.New(
546+
config.WithCollectorImage("collector:v0.0.0"),
547+
config.WithTargetAllocatorImage("ta:v0.0.0"),
548+
),
549+
getReviewer(test.shouldFailSar),
550+
nil,
551+
bv,
552+
nil,
553+
)
538554
ctx := context.Background()
539555
err := cvw.Default(ctx, &test.otelcol)
540556
assert.NoError(t, err)
@@ -1315,10 +1331,18 @@ func TestOTELColValidatingWebhook(t *testing.T) {
13151331
for _, test := range tests {
13161332
test := test
13171333
t.Run(test.name, func(t *testing.T) {
1318-
cvw := v1beta1.NewCollectorWebhook(logr.Discard(), testScheme, config.New(
1319-
config.WithCollectorImage("collector:v0.0.0"),
1320-
config.WithTargetAllocatorImage("ta:v0.0.0"),
1321-
), getReviewer(test.shouldFailSar), nil, bv, nil, false)
1334+
cvw := v1beta1.NewCollectorWebhook(
1335+
logr.Discard(),
1336+
testScheme,
1337+
config.New(
1338+
config.WithCollectorImage("collector:v0.0.0"),
1339+
config.WithTargetAllocatorImage("ta:v0.0.0"),
1340+
),
1341+
getReviewer(test.shouldFailSar),
1342+
nil,
1343+
bv,
1344+
nil,
1345+
)
13221346
ctx := context.Background()
13231347
warnings, err := cvw.ValidateCreate(ctx, &test.otelcol)
13241348
if test.expectedErr == "" {
@@ -1375,10 +1399,18 @@ func TestOTELColValidateUpdateWebhook(t *testing.T) {
13751399
for _, test := range tests {
13761400
test := test
13771401
t.Run(test.name, func(t *testing.T) {
1378-
cvw := v1beta1.NewCollectorWebhook(logr.Discard(), testScheme, config.New(
1379-
config.WithCollectorImage("collector:v0.0.0"),
1380-
config.WithTargetAllocatorImage("ta:v0.0.0"),
1381-
), getReviewer(test.shouldFailSar), nil, bv, nil, false)
1402+
cvw := v1beta1.NewCollectorWebhook(
1403+
logr.Discard(),
1404+
testScheme,
1405+
config.New(
1406+
config.WithCollectorImage("collector:v0.0.0"),
1407+
config.WithTargetAllocatorImage("ta:v0.0.0"),
1408+
),
1409+
getReviewer(test.shouldFailSar),
1410+
nil,
1411+
bv,
1412+
nil,
1413+
)
13821414
ctx := context.Background()
13831415
warnings, err := cvw.ValidateUpdate(ctx, &test.otelcolOld, &test.otelcolNew)
13841416
if test.expectedErr == "" {

config/manager/kustomization.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ kind: Kustomization
55
images:
66
- name: controller
77
newName: jaronoff/opentelemetry-operator
8-
newTag: op-v177
8+
newTag: op-v178

controllers/suite_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func TestMain(m *testing.M) {
182182
}
183183
reviewer := rbac.NewReviewer(clientset)
184184

185-
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil, false); err != nil {
185+
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil); err != nil {
186186
fmt.Printf("failed to SetupWebhookWithManager: %v", err)
187187
os.Exit(1)
188188
}

internal/webhook/podmutation/webhookhandler_suite_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func TestMain(m *testing.M) {
105105
}
106106
reviewer := rbac.NewReviewer(clientset)
107107

108-
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil, false); err != nil {
108+
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil); err != nil {
109109
fmt.Printf("failed to SetupWebhookWithManager: %v", err)
110110
os.Exit(1)
111111
}

main.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ func main() {
123123
enableNodeJSInstrumentation bool
124124
enableJavaInstrumentation bool
125125
enableCRMetrics bool
126-
disableEndpointDefaulting bool
127126
collectorImage string
128127
targetAllocatorImage string
129128
operatorOpAMPBridgeImage string
@@ -163,7 +162,6 @@ func main() {
163162
pflag.BoolVar(&enableNodeJSInstrumentation, constants.FlagNodeJS, true, "Controls whether the operator supports nodejs auto-instrumentation")
164163
pflag.BoolVar(&enableJavaInstrumentation, constants.FlagJava, true, "Controls whether the operator supports java auto-instrumentation")
165164
pflag.BoolVar(&enableCRMetrics, constants.FlagCRMetrics, false, "Controls whether exposing the CR metrics is enabled")
166-
pflag.BoolVar(&disableEndpointDefaulting, "disable-event-defaulting", false, "Controls whether the operator should attempt to default the configuration for components")
167165

168166
stringFlagOrEnv(&collectorImage, "collector-image", "RELATED_IMAGE_COLLECTOR", fmt.Sprintf("ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector:%s", v.OpenTelemetryCollector), "The default OpenTelemetry collector image. This image is used when no image is specified in the CustomResource.")
169167
stringFlagOrEnv(&targetAllocatorImage, "target-allocator-image", "RELATED_IMAGE_TARGET_ALLOCATOR", fmt.Sprintf("ghcr.io/open-telemetry/opentelemetry-operator/target-allocator:%s", v.TargetAllocator), "The default OpenTelemetry target allocator image. This image is used when no image is specified in the CustomResource.")
@@ -218,7 +216,6 @@ func main() {
218216
"go-version", v.Go,
219217
"go-arch", runtime.GOARCH,
220218
"go-os", runtime.GOOS,
221-
"disable-event-defaulting", disableEndpointDefaulting,
222219
"labels-filter", labelsFilter,
223220
"annotations-filter", annotationsFilter,
224221
"enable-multi-instrumentation", enableMultiInstrumentation,
@@ -450,7 +447,7 @@ func main() {
450447
logger.Info("Fips disabled components", "receivers", receivers, "exporters", exporters, "processors", processors, "extensions", extensions)
451448
fipsCheck = fips.NewFipsCheck(receivers, exporters, processors, extensions)
452449
}
453-
if err = otelv1beta1.SetupCollectorWebhook(mgr, cfg, reviewer, crdMetrics, bv, fipsCheck, disableEndpointDefaulting); err != nil {
450+
if err = otelv1beta1.SetupCollectorWebhook(mgr, cfg, reviewer, crdMetrics, bv, fipsCheck); err != nil {
454451
setupLog.Error(err, "unable to create webhook", "webhook", "OpenTelemetryCollector")
455452
os.Exit(1)
456453
}

pkg/collector/upgrade/suite_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func TestMain(m *testing.M) {
105105
}
106106
reviewer := rbac.NewReviewer(clientset)
107107

108-
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil, false); err != nil {
108+
if err = v1beta1.SetupCollectorWebhook(mgr, config.New(), reviewer, nil, nil, nil); err != nil {
109109
fmt.Printf("failed to SetupWebhookWithManager: %v", err)
110110
os.Exit(1)
111111
}

pkg/featuregate/featuregate.go

+7
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ var (
4040
featuregate.WithRegisterDescription("enables feature to set GOMEMLIMIT and GOMAXPROCS automatically"),
4141
featuregate.WithRegisterFromVersion("v0.100.0"),
4242
)
43+
// EnableConfigDefaulting is the feature gate that enables the operator to default the endpoint for known components.
44+
EnableConfigDefaulting = featuregate.GlobalRegistry().MustRegister(
45+
"operator.collector.default.config",
46+
featuregate.StageBeta,
47+
featuregate.WithRegisterDescription("enables the operator to default the endpoint for known components"),
48+
featuregate.WithRegisterFromVersion("v0.110.0"),
49+
)
4350
)
4451

4552
// Flags creates a new FlagSet that represents the available featuregate flags using the supplied featuregate registry.

0 commit comments

Comments
 (0)