Skip to content

Commit

Permalink
introduce the component package (#488)
Browse files Browse the repository at this point in the history
Co-authored-by: Celene <celene@datadoghq.com>
  • Loading branch information
clamoriniere and celenechang committed May 11, 2022
1 parent 4842be7 commit 7a62cc6
Show file tree
Hide file tree
Showing 31 changed files with 654 additions and 669 deletions.
33 changes: 31 additions & 2 deletions apis/datadoghq/common/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,25 @@ const (
DefaultMetricsProviderPort int32 = 8443
// DefaultKubeStateMetricsCoreConf default ksm core ConfigMap name
DefaultKubeStateMetricsCoreConf string = "kube-state-metrics-core-config"
// DefaultSysprobeSocketPath default system probe socket path
// DefaultSysprobeSocketPath default system probe socket path
DefaultSysprobeSocketPath = "/var/run/sysprobe/sysprobe.sock"

// Liveness probe default config
DefaultLivenessProbeInitialDelaySeconds int32 = 15
DefaultLivenessProbePeriodSeconds int32 = 15
DefaultLivenessProbeTimeoutSeconds int32 = 5
DefaultLivenessProbeSuccessThreshold int32 = 1
DefaultLivenessProbeFailureThreshold int32 = 6
DefaultAgentHealthPort int32 = 5555
DefaultLivenessProbeHTTPPath = "/live"

// Readiness probe default config
DefaultReadinessProbeInitialDelaySeconds int32 = 15
DefaultReadinessProbePeriodSeconds int32 = 15
DefaultReadinessProbeTimeoutSeconds int32 = 5
DefaultReadinessProbeSuccessThreshold int32 = 1
DefaultReadinessProbeFailureThreshold int32 = 6
DefaultReadinessProbeHTTPPath = "/ready"
)

// Datadog volume names and mount paths
Expand Down Expand Up @@ -79,5 +96,17 @@ const (
ModulesVolumePath = "/lib/modules"
SrcVolumeName = "src"
// same path on host and container
SrcVolumePath = "/usr/src"
SrcVolumePath = "/usr/src"
LogDatadogVolumeName = "logdatadog"
LogDatadogVolumePath = "/var/log/datadog"
TmpVolumeName = "tmp"
TmpVolumePath = "/tmp"
CertificatesVolumeName = "certificates"
CertificatesVolumePath = "/etc/datadog-agent/certificates"
AuthVolumeName = "datadog-agent-auth"
AuthVolumePath = "/etc/datadog-agent/auth"
InstallInfoVolumeName = "installinfo"
InstallInfoVolumeSubPath = "install_info"
InstallInfoVolumePath = "/etc/datadog-agent/install_info"
InstallInfoVolumeReadOnly = true
)
3 changes: 3 additions & 0 deletions apis/datadoghq/common/envvar.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ const (
DDSystemProbeSocketEnvVar = "DD_SYSPROBE_SOCKET"
DDEnableOOMKillEnvVar = "DD_SYSTEM_PROBE_CONFIG_ENABLE_OOM_KILL"
DDEnableTCPQueueLengthEnvVar = "DD_SYSTEM_PROBE_CONFIG_ENABLE_TCP_QUEUE_LENGTH"
DDLeaderElection = "DD_LEADER_ELECTION"
DDClusterAgentKubeServiceName = "DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME"
DDHealthPort = "DD_HEALTH_PORT"
)
29 changes: 10 additions & 19 deletions apis/datadoghq/v1alpha1/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,13 @@ const (
DDClusterName = "DD_CLUSTER_NAME"
DDSite = "DD_SITE"
DDddURL = "DD_DD_URL"
DDHealthPort = "DD_HEALTH_PORT"
DDLogLevel = "DD_LOG_LEVEL"
DDNamespaceLabelsAsTags = "DD_KUBERNETES_NAMESPACE_LABELS_AS_TAGS"
DDNodeLabelsAsTags = "DD_KUBERNETES_NODE_LABELS_AS_TAGS"
DDPodLabelsAsTags = "DD_KUBERNETES_POD_LABELS_AS_TAGS"
DDPodAnnotationsAsTags = "DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS"
DDTags = "DD_TAGS"
DDCollectKubeEvents = "DD_COLLECT_KUBERNETES_EVENTS"
DDLeaderElection = "DD_LEADER_ELECTION"
DDLogsEnabled = "DD_LOGS_ENABLED"
DDLogsConfigContainerCollectAll = "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL"
DDLogsContainerCollectUsingFiles = "DD_LOGS_CONFIG_K8S_CONTAINER_USE_FILE"
Expand All @@ -32,7 +30,6 @@ const (
DDDogstatsdSocket = "DD_DOGSTATSD_SOCKET"
DDDogstatsdMapperProfiles = "DD_DOGSTATSD_MAPPER_PROFILES"
DDClusterAgentEnabled = "DD_CLUSTER_AGENT_ENABLED"
DDClusterAgentKubeServiceName = "DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME"
DDClusterAgentAuthToken = "DD_CLUSTER_AGENT_AUTH_TOKEN"
DDMetricsProviderEnabled = "DD_EXTERNAL_METRICS_PROVIDER_ENABLED"
DDMetricsProviderPort = "DD_EXTERNAL_METRICS_PROVIDER_PORT"
Expand Down Expand Up @@ -94,23 +91,17 @@ const (

// Datadog volume names and mount paths

LogDatadogVolumeName = "logdatadog"
LogDatadogVolumePath = "/var/log/datadog"
TmpVolumeName = "tmp"
TmpVolumePath = "/tmp"
CertificatesVolumeName = "certificates"
CertificatesVolumePath = "/etc/datadog-agent/certificates"
APMSocketVolumeName = "apmsocket"
APMSocketVolumePath = "/var/run/datadog/apm"
InstallInfoVolumeName = "installinfo"
InstallInfoVolumeSubPath = "install_info"
InstallInfoVolumePath = "/etc/datadog-agent/install_info"
InstallInfoVolumeReadOnly = true
ChecksdVolumeName = "checksd"
ChecksdVolumePath = "/checks.d"
LogDatadogVolumeName = "logdatadog"
LogDatadogVolumePath = "/var/log/datadog"
TmpVolumeName = "tmp"
TmpVolumePath = "/tmp"
CertificatesVolumeName = "certificates"
CertificatesVolumePath = "/etc/datadog-agent/certificates"
APMSocketVolumeName = "apmsocket"
APMSocketVolumePath = "/var/run/datadog/apm"
ChecksdVolumeName = "checksd"
ChecksdVolumePath = "/checks.d"

AuthVolumeName = "datadog-agent-auth"
AuthVolumePath = "/etc/datadog-agent/auth"
ProcVolumeName = "procdir"
ProcVolumePath = "/host/proc"
ProcVolumeReadOnly = true
Expand Down
59 changes: 22 additions & 37 deletions apis/datadoghq/v1alpha1/datadogagent_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import (
"strings"
"time"

apicommon "github.com/DataDog/datadog-operator/apis/datadoghq/common"
commonv1 "github.com/DataDog/datadog-operator/apis/datadoghq/common/v1"
apiutils "github.com/DataDog/datadog-operator/apis/utils"
"github.com/DataDog/datadog-operator/pkg/defaulting"
"github.com/DataDog/datadog-operator/pkg/utils"

edsdatadoghqv1alpha1 "github.com/DataDog/extendeddaemonset/api/v1alpha1"

appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -83,23 +85,6 @@ const (
defaultMutateUnlabelled = false
DefaultAdmissionServiceName = "datadog-admission-controller"
defaultAdmissionControllerEnabled = false

// Liveness probe default config
defaultLivenessProbeInitialDelaySeconds int32 = 15
defaultLivenessProbePeriodSeconds int32 = 15
defaultLivenessProbeTimeoutSeconds int32 = 5
defaultLivenessProbeSuccessThreshold int32 = 1
defaultLivenessProbeFailureThreshold int32 = 6
defaultAgentHealthPort int32 = 5555
defaultLivenessProbeHTTPPath = "/live"

// Readiness probe default config
defaultReadinessProbeInitialDelaySeconds int32 = 15
defaultReadinessProbePeriodSeconds int32 = 15
defaultReadinessProbeTimeoutSeconds int32 = 5
defaultReadinessProbeSuccessThreshold int32 = 1
defaultReadinessProbeFailureThreshold int32 = 6
defaultReadinessProbeHTTPPath = "/ready"
)

var defaultImagePullPolicy = corev1.PullIfNotPresent
Expand Down Expand Up @@ -310,16 +295,16 @@ func DefaultDatadogAgentSpecAgentImage(agent *DatadogAgentSpecAgentSpec, name, t
// GetDefaultLivenessProbe creates a all defaulted LivenessProbe
func GetDefaultLivenessProbe() *corev1.Probe {
livenessProbe := &corev1.Probe{
InitialDelaySeconds: defaultLivenessProbeInitialDelaySeconds,
PeriodSeconds: defaultLivenessProbePeriodSeconds,
TimeoutSeconds: defaultLivenessProbeTimeoutSeconds,
SuccessThreshold: defaultLivenessProbeSuccessThreshold,
FailureThreshold: defaultLivenessProbeFailureThreshold,
InitialDelaySeconds: apicommon.DefaultLivenessProbeInitialDelaySeconds,
PeriodSeconds: apicommon.DefaultLivenessProbePeriodSeconds,
TimeoutSeconds: apicommon.DefaultLivenessProbeTimeoutSeconds,
SuccessThreshold: apicommon.DefaultLivenessProbeSuccessThreshold,
FailureThreshold: apicommon.DefaultLivenessProbeFailureThreshold,
}
livenessProbe.HTTPGet = &corev1.HTTPGetAction{
Path: defaultLivenessProbeHTTPPath,
Path: apicommon.DefaultLivenessProbeHTTPPath,
Port: intstr.IntOrString{
IntVal: defaultAgentHealthPort,
IntVal: apicommon.DefaultAgentHealthPort,
},
}
return livenessProbe
Expand All @@ -328,16 +313,16 @@ func GetDefaultLivenessProbe() *corev1.Probe {
// GetDefaultReadinessProbe creates a all defaulted ReadynessProbe
func GetDefaultReadinessProbe() *corev1.Probe {
readinessProbe := &corev1.Probe{
InitialDelaySeconds: defaultReadinessProbeInitialDelaySeconds,
PeriodSeconds: defaultReadinessProbePeriodSeconds,
TimeoutSeconds: defaultReadinessProbeTimeoutSeconds,
SuccessThreshold: defaultReadinessProbeSuccessThreshold,
FailureThreshold: defaultReadinessProbeFailureThreshold,
InitialDelaySeconds: apicommon.DefaultReadinessProbeInitialDelaySeconds,
PeriodSeconds: apicommon.DefaultReadinessProbePeriodSeconds,
TimeoutSeconds: apicommon.DefaultReadinessProbeTimeoutSeconds,
SuccessThreshold: apicommon.DefaultReadinessProbeSuccessThreshold,
FailureThreshold: apicommon.DefaultReadinessProbeFailureThreshold,
}
readinessProbe.HTTPGet = &corev1.HTTPGetAction{
Path: defaultReadinessProbeHTTPPath,
Path: apicommon.DefaultReadinessProbeHTTPPath,
Port: intstr.IntOrString{
IntVal: defaultAgentHealthPort,
IntVal: apicommon.DefaultAgentHealthPort,
},
}
return readinessProbe
Expand Down Expand Up @@ -404,7 +389,7 @@ func DefaultDatadogAgentSpecAgentConfig(agent *DatadogAgentSpecAgentSpec) *NodeA
}

if agent.Config.HealthPort == nil {
agent.Config.HealthPort = apiutils.NewInt32Pointer(defaultAgentHealthPort)
agent.Config.HealthPort = apiutils.NewInt32Pointer(apicommon.DefaultAgentHealthPort)
configOverride.HealthPort = agent.Config.HealthPort
}

Expand Down Expand Up @@ -613,9 +598,9 @@ func DefaultDatadogAgentSpecAgentApm(agent *DatadogAgentSpecAgentSpec) *APMSpec

func getDefaultAPMAgentLivenessProbe() *corev1.Probe {
livenessProbe := &corev1.Probe{
InitialDelaySeconds: defaultLivenessProbeInitialDelaySeconds,
PeriodSeconds: defaultLivenessProbePeriodSeconds,
TimeoutSeconds: defaultLivenessProbeTimeoutSeconds,
InitialDelaySeconds: apicommon.DefaultLivenessProbeInitialDelaySeconds,
PeriodSeconds: apicommon.DefaultLivenessProbePeriodSeconds,
TimeoutSeconds: apicommon.DefaultLivenessProbeTimeoutSeconds,
}
livenessProbe.TCPSocket = &corev1.TCPSocketAction{
Port: intstr.IntOrString{
Expand Down Expand Up @@ -1054,7 +1039,7 @@ func DefaultDatadogAgentSpecClusterAgentConfig(dca *DatadogAgentSpecClusterAgent
}

if dca.Config.HealthPort == nil {
dca.Config.HealthPort = apiutils.NewInt32Pointer(defaultAgentHealthPort)
dca.Config.HealthPort = apiutils.NewInt32Pointer(apicommon.DefaultAgentHealthPort)
configOverride.HealthPort = dca.Config.HealthPort
}

Expand Down Expand Up @@ -1240,7 +1225,7 @@ func DefaultDatadogAgentSpecClusterChecksRunnerConfig(clc *DatadogAgentSpecClust
configOverride.ReadinessProbe = clc.Config.ReadinessProbe
}
if clc.Config.HealthPort == nil {
clc.Config.HealthPort = apiutils.NewInt32Pointer(defaultAgentHealthPort)
clc.Config.HealthPort = apiutils.NewInt32Pointer(apicommon.DefaultAgentHealthPort)
configOverride.HealthPort = clc.Config.HealthPort
}

Expand Down
24 changes: 11 additions & 13 deletions controllers/datadogagent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ import (
"github.com/DataDog/datadog-operator/pkg/kubernetes"
"github.com/DataDog/datadog-operator/pkg/version"

"github.com/DataDog/datadog-operator/controllers/datadogagent/component"
"github.com/DataDog/datadog-operator/controllers/datadogagent/feature"
"github.com/DataDog/datadog-operator/controllers/datadogagent/object"

edsdatadoghqv1alpha1 "github.com/DataDog/extendeddaemonset/api/v1alpha1"
)
Expand Down Expand Up @@ -295,7 +297,7 @@ func (r *Reconciler) manageAgentDependencies(logger logr.Logger, dda *datadoghqv
return result, err
}

result, err = r.manageConfigMap(logger, dda, getInstallInfoConfigMapName(dda), buildInstallInfoConfigMap)
result, err = r.manageConfigMap(logger, dda, component.GetInstallInfoConfigMapName(dda), buildInstallInfoConfigMap)
if utils.ShouldReturn(result, err) {
return result, err
}
Expand Down Expand Up @@ -400,7 +402,7 @@ func (b agentNetworkPolicyBuilder) BuildKubernetesPolicy() *networkingv1.Network

policy := &networkingv1.NetworkPolicy{
ObjectMeta: metav1.ObjectMeta{
Labels: getDefaultLabels(dda, name, getAgentVersion(dda)),
Labels: object.GetDefaultLabels(dda, name, getAgentVersion(dda)),
Name: name,
Namespace: dda.Namespace,
},
Expand All @@ -422,7 +424,7 @@ func (b agentNetworkPolicyBuilder) PodSelector() metav1.LabelSelector {
return metav1.LabelSelector{
MatchLabels: map[string]string{
kubernetes.AppKubernetesInstanceLabelKey: common.DefaultAgentResourceSuffix,
kubernetes.AppKubernetesPartOfLabelKey: NewPartOfLabelValue(b.dda).String(),
kubernetes.AppKubernetesPartOfLabelKey: object.NewPartOfLabelValue(b.dda).String(),
},
}
}
Expand Down Expand Up @@ -621,7 +623,7 @@ func (b agentNetworkPolicyBuilder) BuildCiliumPolicy() *cilium.NetworkPolicy {

return &cilium.NetworkPolicy{
ObjectMeta: metav1.ObjectMeta{
Labels: getDefaultLabels(b.dda, b.Name(), getAgentVersion(b.dda)),
Labels: object.GetDefaultLabels(b.dda, b.Name(), getAgentVersion(b.dda)),
Name: b.Name(),
Namespace: b.dda.Namespace,
},
Expand Down Expand Up @@ -710,11 +712,11 @@ func daemonsetName(dda *datadoghqv1alpha1.DatadogAgent) string {
}

func newDaemonsetObjectMetaData(dda *datadoghqv1alpha1.DatadogAgent) metav1.ObjectMeta {
labels := getDefaultLabels(dda, common.DefaultAgentResourceSuffix, getAgentVersion(dda))
labels := object.GetDefaultLabels(dda, common.DefaultAgentResourceSuffix, getAgentVersion(dda))
labels[common.AgentDeploymentNameLabelKey] = dda.Name
labels[common.AgentDeploymentComponentLabelKey] = common.DefaultAgentResourceSuffix

annotations := getDefaultAnnotations(dda)
annotations := object.GetDefaultAnnotations(dda)

return metav1.ObjectMeta{
Name: daemonsetName(dda),
Expand All @@ -735,10 +737,6 @@ func buildAgentConfigurationConfigMap(dda *datadoghqv1alpha1.DatadogAgent) (*cor
return buildConfigurationConfigMap(dda, datadoghqv1alpha1.ConvertCustomConfig(dda.Spec.Agent.CustomConfig), getAgentCustomConfigConfigMapName(dda), datadoghqv1alpha1.AgentCustomConfigVolumeSubPath)
}

func getInstallInfoConfigMapName(dda *datadoghqv1alpha1.DatadogAgent) string {
return fmt.Sprintf("%s-install-info", dda.Name)
}

const installInfoDataTmpl = `---
install_method:
tool: datadog-operator
Expand All @@ -749,10 +747,10 @@ install_method:
func buildInstallInfoConfigMap(dda *datadoghqv1alpha1.DatadogAgent) (*corev1.ConfigMap, error) {
configMap := &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: getInstallInfoConfigMapName(dda),
Name: component.GetInstallInfoConfigMapName(dda),
Namespace: dda.Namespace,
Labels: getDefaultLabels(dda, dda.Name, getAgentVersion(dda)),
Annotations: getDefaultAnnotations(dda),
Labels: object.GetDefaultLabels(dda, dda.Name, getAgentVersion(dda)),
Annotations: object.GetDefaultAnnotations(dda),
},
Data: map[string]string{
"install_info": fmt.Sprintf(installInfoDataTmpl, version.Version),
Expand Down

0 comments on commit 7a62cc6

Please sign in to comment.