Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ docker-build: generate docker-build-ci docker-build-check-ci
# For local use
.PHONY: docker-build-ci
docker-build-ci:
docker build . -t ${IMG} --build-arg FIPS_ENABLED="${FIPS_ENABLED}" --build-arg LDFLAGS="${LDFLAGS}" --build-arg GOARCH="${GOARCH}"
docker build . -t ${IMG} --build-arg FIPS_ENABLED="${FIPS_ENABLED}" --build-arg LDFLAGS="${LDFLAGS}" --build-arg GOARCH="${GOARCH}" --platform=linux/${GOARCH}

# For local use
.PHONY: docker-build-check-ci
Expand Down
33 changes: 19 additions & 14 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ type options struct {
remoteConfigEnabled bool
datadogDashboardEnabled bool
datadogGenericResourceEnabled bool
untaintControllerEnabled bool

// Secret Backend options
secretBackendCommand string
Expand Down Expand Up @@ -177,6 +178,7 @@ func (opts *options) Parse() {
flag.BoolVar(&opts.remoteConfigEnabled, "remoteConfigEnabled", false, "Enable RemoteConfig capabilities in the Operator (beta)")
flag.BoolVar(&opts.datadogDashboardEnabled, "datadogDashboardEnabled", false, "Enable the DatadogDashboard controller")
flag.BoolVar(&opts.datadogGenericResourceEnabled, "datadogGenericResourceEnabled", false, "Enable the DatadogGenericResource controller")
flag.BoolVar(&opts.untaintControllerEnabled, "untaintControllerEnabled", false, "Enable the Untaint controller")

// DatadogAgentInternal
flag.BoolVar(&opts.datadogAgentInternalEnabled, "datadogAgentInternalEnabled", true, "Enable the DatadogAgentInternal controller")
Expand Down Expand Up @@ -288,6 +290,7 @@ func run(opts *options) error {
IntrospectionEnabled: opts.introspectionEnabled,
DatadogDashboardEnabled: opts.datadogDashboardEnabled,
DatadogGenericResourceEnabled: opts.datadogGenericResourceEnabled,
UntaintControllerEnabled: opts.untaintControllerEnabled,
}),
})
if err != nil {
Expand Down Expand Up @@ -352,20 +355,22 @@ func run(opts *options) error {
CanaryAutoPauseMaxSlowStartDuration: opts.edsCanaryAutoPauseMaxSlowStartDuration,
MaxPodSchedulerFailure: opts.edsMaxPodSchedulerFailure,
},
SupportCilium: opts.supportCilium,
CredsManager: credsManager,
Creds: creds,
SecretRefreshInterval: opts.secretRefreshInterval,
DatadogAgentEnabled: opts.datadogAgentEnabled,
DatadogAgentInternalEnabled: opts.datadogAgentInternalEnabled,
DatadogMonitorEnabled: opts.datadogMonitorEnabled,
DatadogSLOEnabled: opts.datadogSLOEnabled,
OperatorMetricsEnabled: opts.operatorMetricsEnabled,
V2APIEnabled: true,
IntrospectionEnabled: opts.introspectionEnabled,
DatadogAgentProfileEnabled: opts.datadogAgentProfileEnabled,
DatadogDashboardEnabled: opts.datadogDashboardEnabled,
DatadogGenericResourceEnabled: opts.datadogGenericResourceEnabled,
SupportCilium: opts.supportCilium,
CredsManager: credsManager,
Creds: creds,
SecretRefreshInterval: opts.secretRefreshInterval,
DatadogAgentEnabled: opts.datadogAgentEnabled,
DatadogAgentInternalEnabled: opts.datadogAgentInternalEnabled,
DatadogMonitorEnabled: opts.datadogMonitorEnabled,
DatadogSLOEnabled: opts.datadogSLOEnabled,
OperatorMetricsEnabled: opts.operatorMetricsEnabled,
V2APIEnabled: true,
IntrospectionEnabled: opts.introspectionEnabled,
DatadogAgentProfileEnabled: opts.datadogAgentProfileEnabled,
DatadogDashboardEnabled: opts.datadogDashboardEnabled,
DatadogGenericResourceEnabled: opts.datadogGenericResourceEnabled,
UntaintControllerEnabled: opts.untaintControllerEnabled,
UntaintControllerEventsEnabled: os.Getenv("DD_UNTAINT_CONTROLLER_EVENTS_ENABLED") == "true",
}

versionInfo, platformInfo, err := getVersionAndPlatformInfo(rest.CopyConfig(mgr.GetConfig()))
Expand Down
1 change: 1 addition & 0 deletions internal/controller/metrics/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package metrics
const (
datadogAgentSubsystem = "datadogagent"
datadogAgentProfileSubsystem = "datadogagentprofile"
untaintSubsystem = "untaint"

TrueValue = 1.0
FalseValue = 0.0
Expand Down
37 changes: 37 additions & 0 deletions internal/controller/metrics/untaint.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Unless explicitly stated otherwise all files in this repository are licensed
// under the Apache License Version 2.0.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2016-present Datadog, Inc.

package metrics

import (
"github.com/prometheus/client_golang/prometheus"
"sigs.k8s.io/controller-runtime/pkg/metrics"
)

var (
// TaintRemovalsTotal is the total number of taints removed from nodes.
TaintRemovalsTotal = prometheus.NewCounter(
prometheus.CounterOpts{
Subsystem: untaintSubsystem,
Name: "taint_removals_total",
Help: "Total number of taints removed from nodes",
},
)

// TaintRemovalLatency is the time between agent pod becoming Ready and taint removal.
TaintRemovalLatency = prometheus.NewHistogram(
prometheus.HistogramOpts{
Subsystem: untaintSubsystem,
Name: "taint_removal_latency_seconds",
Help: "Time between agent pod becoming Ready and taint removal from the node",
Buckets: prometheus.DefBuckets,
},
)
)

func init() {
metrics.Registry.MustRegister(TaintRemovalsTotal)
metrics.Registry.MustRegister(TaintRemovalLatency)
}
51 changes: 35 additions & 16 deletions internal/controller/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,24 @@ const (

// SetupOptions defines options for setting up controllers to ease testing
type SetupOptions struct {
SupportExtendedDaemonset ExtendedDaemonsetOptions
SupportCilium bool
CredsManager *config.CredentialManager
Creds config.Creds
SecretRefreshInterval time.Duration
DatadogAgentEnabled bool
DatadogAgentInternalEnabled bool
DatadogMonitorEnabled bool
DatadogSLOEnabled bool
OperatorMetricsEnabled bool
V2APIEnabled bool
IntrospectionEnabled bool
DatadogAgentProfileEnabled bool
OtelAgentEnabled bool
DatadogDashboardEnabled bool
DatadogGenericResourceEnabled bool
SupportExtendedDaemonset ExtendedDaemonsetOptions
SupportCilium bool
CredsManager *config.CredentialManager
Creds config.Creds
SecretRefreshInterval time.Duration
DatadogAgentEnabled bool
DatadogAgentInternalEnabled bool
DatadogMonitorEnabled bool
DatadogSLOEnabled bool
OperatorMetricsEnabled bool
V2APIEnabled bool
IntrospectionEnabled bool
DatadogAgentProfileEnabled bool
OtelAgentEnabled bool
DatadogDashboardEnabled bool
DatadogGenericResourceEnabled bool
UntaintControllerEnabled bool
UntaintControllerEventsEnabled bool
}

// ExtendedDaemonsetOptions defines ExtendedDaemonset options
Expand Down Expand Up @@ -85,6 +87,7 @@ var controllerStarters = map[string]starterFunc{
profileControllerName: startDatadogAgentProfiles,
dashboardControllerName: startDatadogDashboard,
genericResourceControllerName: startDatadogGenericResource,
untaintControllerName: startUntaint,
}

// SetupControllers starts all controllers (also used by e2e tests)
Expand Down Expand Up @@ -257,6 +260,22 @@ func startDatadogSLO(logger logr.Logger, mgr manager.Manager, pInfo kubernetes.P
return sloReconciler.SetupWithManager(mgr)
}

func startUntaint(logger logr.Logger, mgr manager.Manager, _ kubernetes.PlatformInfo, options SetupOptions, _ datadog.MetricsForwardersManager) error {
if !options.UntaintControllerEnabled {
logger.Info("Feature disabled, not starting the controller", "controller", untaintControllerName)
return nil
}

logger.Info("untaint controller enabled", "controller", untaintControllerName, "eventsEnabled", options.UntaintControllerEventsEnabled)

return (&UntaintReconciler{
client: mgr.GetClient(),
log: ctrl.Log.WithName("controllers").WithName(untaintControllerName),
recorder: mgr.GetEventRecorderFor(untaintControllerName),
eventsEnabled: options.UntaintControllerEventsEnabled,
}).SetupWithManager(mgr)
}

func startDatadogAgentProfiles(logger logr.Logger, mgr manager.Manager, pInfo kubernetes.PlatformInfo, options SetupOptions, metricForwardersMgr datadog.MetricsForwardersManager) error {
if !options.DatadogAgentProfileEnabled {
logger.Info("Feature disabled, not starting the controller", "controller", profileControllerName)
Expand Down
Loading
Loading