Skip to content

Commit

Permalink
Fixing the defaulting and support of the udsHostFilePath (#676)
Browse files Browse the repository at this point in the history
* Fixing the defaulting and support of the udsHostFilePath
  • Loading branch information
Charly Fontaine committed Jan 4, 2023
1 parent 8e16127 commit 1e4b81a
Show file tree
Hide file tree
Showing 10 changed files with 164 additions and 132 deletions.
7 changes: 3 additions & 4 deletions apis/datadoghq/common/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,10 +190,9 @@ const (
SymlinkContainerVolumePath = "/var/log/containers"
DogstatsdHostPortName = "dogstatsdport"
DogstatsdHostPortHostPort = 8125
DogstatsdAPMSocketVolumeName = "dsdapmsocket"
DogstatsdSocketVolumeName = "dsdsocket"
DogstatsdSocketVolumePath = "/var/run/datadog"
DogstatsdSocketOldVolumePath = "/var/run/datadog/statsd"
DogstatsdAPMSocketVolumePath = "/var/run/datadog"
DogstatsdSocketLocalPath = "/var/run/datadog/statsd"
DogstatsdSocketName = "dsd.socket"
SecurityAgentComplianceCustomConfigDirVolumeName = "customcompliancebenchmarks"
SecurityAgentComplianceConfigDirVolumeName = "compliancedir"
Expand All @@ -210,7 +209,7 @@ const (
APMHostPortName = "traceport"
APMHostPortHostPort = 8126
APMSocketVolumeName = "apmsocket"
APMSocketVolumePath = "/var/run/datadog/apm"
APMSocketVolumeLocalPath = "/var/run/datadog/apm"
APMSocketName = "apm.socket"
AdmissionControllerPortName = "admissioncontrollerport"
ExternalMetricsPortName = "metricsapi"
Expand Down
3 changes: 2 additions & 1 deletion apis/datadoghq/common/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ const (
SecurityAgentContainerName AgentContainerName = "security-agent"
// SystemProbeContainerName is the name of the System Probe container
SystemProbeContainerName AgentContainerName = "system-probe"

// AllContainers is used internally to reference all containers in the pod
AllContainers AgentContainerName = "all"
// ClusterAgentContainerName is the name of the Cluster Agent container
ClusterAgentContainerName AgentContainerName = "cluster-agent"

Expand Down
9 changes: 5 additions & 4 deletions apis/datadoghq/v2alpha1/datadogagent_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const (
defaultAPMHostPortEnabled bool = false
defaultAPMHostPort int32 = 8126
defaultAPMSocketEnabled bool = true
defaultAPMSocketPath string = "/var/run/datadog/apm.socket"
defaultAPMSocketHostPath string = apicommon.DogstatsdAPMSocketVolumePath + "/" + apicommon.APMSocketName

// defaultCSPMEnabled bool = false
// defaultCWSEnabled bool = false
Expand All @@ -50,7 +50,7 @@ const (
defaultDogstatsdHostPortEnabled bool = false
defaultDogstatsdPort int32 = 8125
defaultDogstatsdSocketEnabled bool = true
defaultDogstatsdSocketPath string = "/var/run/datadog/dsd.socket"
defaultDogstatsdHostSocketPath string = apicommon.DogstatsdAPMSocketVolumePath + "/" + apicommon.DogstatsdSocketName

defaultOTLPGRPCEnabled bool = false
defaultOTLPGRPCEndpoint string = "0.0.0.0:4317"
Expand Down Expand Up @@ -165,7 +165,7 @@ func defaultFeaturesConfig(ddaSpec *DatadogAgentSpec) {

apiutils.DefaultBooleanIfUnset(&ddaSpec.Features.APM.UnixDomainSocketConfig.Enabled, defaultAPMSocketEnabled)

apiutils.DefaultStringIfUnset(&ddaSpec.Features.APM.UnixDomainSocketConfig.Path, defaultAPMSocketPath)
apiutils.DefaultStringIfUnset(&ddaSpec.Features.APM.UnixDomainSocketConfig.Path, defaultAPMSocketHostPath)
}

// CWS (Cloud Workload Security) Feature
Expand Down Expand Up @@ -203,7 +203,8 @@ func defaultFeaturesConfig(ddaSpec *DatadogAgentSpec) {

apiutils.DefaultBooleanIfUnset(&ddaSpec.Features.Dogstatsd.UnixDomainSocketConfig.Enabled, defaultDogstatsdSocketEnabled)

apiutils.DefaultStringIfUnset(&ddaSpec.Features.Dogstatsd.UnixDomainSocketConfig.Path, defaultDogstatsdSocketPath)
// defaultDogstatsdHostSocketPath matches the default hostPath of the helm chart.
apiutils.DefaultStringIfUnset(&ddaSpec.Features.Dogstatsd.UnixDomainSocketConfig.Path, defaultDogstatsdHostSocketPath)

// OTLP ingest feature
if ddaSpec.Features.OTLP == nil {
Expand Down
20 changes: 10 additions & 10 deletions apis/datadoghq/v2alpha1/datadogagent_default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -211,7 +211,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -270,7 +270,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -332,7 +332,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -389,15 +389,15 @@ func Test_defaultFeatures(t *testing.T) {
},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultAPMSocketEnabled),
Path: apiutils.NewStringPointer(defaultAPMSocketPath),
Path: apiutils.NewStringPointer(defaultAPMSocketHostPath),
},
},
Dogstatsd: &DogstatsdFeatureConfig{
OriginDetectionEnabled: apiutils.NewBoolPointer(defaultDogstatsdOriginDetectionEnabled),
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -456,7 +456,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -517,7 +517,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -571,7 +571,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down Expand Up @@ -630,7 +630,7 @@ func Test_defaultFeatures(t *testing.T) {
HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)},
UnixDomainSocketConfig: &UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled),
Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath),
Path: apiutils.NewStringPointer(defaultDogstatsdHostSocketPath),
},
},
OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{
Expand Down
6 changes: 3 additions & 3 deletions controllers/datadogagent/component/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func GetVolumeForCgroups() corev1.Volume {
// GetVolumeForDogstatsd returns the volume with the Dogstatsd socket
func GetVolumeForDogstatsd() corev1.Volume {
return corev1.Volume{
Name: apicommon.DogstatsdAPMSocketVolumeName,
Name: apicommon.DogstatsdSocketVolumeName,
VolumeSource: corev1.VolumeSource{
EmptyDir: &corev1.EmptyDirVolumeSource{},
},
Expand Down Expand Up @@ -263,8 +263,8 @@ func GetVolumeMountForCgroups() corev1.VolumeMount {
// GetVolumeMountForDogstatsdSocket returns the VolumeMount with the Dogstatsd socket
func GetVolumeMountForDogstatsdSocket(readOnly bool) corev1.VolumeMount {
return corev1.VolumeMount{
Name: apicommon.DogstatsdAPMSocketVolumeName,
MountPath: apicommon.DogstatsdSocketVolumePath,
Name: apicommon.DogstatsdSocketVolumeName,
MountPath: apicommon.DogstatsdSocketLocalPath,
ReadOnly: readOnly,
}
}
Expand Down
7 changes: 5 additions & 2 deletions controllers/datadogagent/feature/apm/feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,11 +266,14 @@ func (f *apmFeature) ManageNodeAgent(managers feature.PodTemplateManagers) error
// uds
if f.udsEnabled {
udsHostFolder := filepath.Dir(f.udsHostFilepath)
sockName := filepath.Base(f.udsHostFilepath)
managers.EnvVar().AddEnvVarToContainer(apicommonv1.TraceAgentContainerName, &corev1.EnvVar{
Name: apicommon.DDAPMReceiverSocket,
Value: f.udsHostFilepath,
Value: filepath.Join(apicommon.APMSocketVolumeLocalPath, sockName),
})
socketVol, socketVolMount := volume.GetVolumes(apicommon.DogstatsdAPMSocketVolumeName, udsHostFolder, udsHostFolder, false)
socketVol, socketVolMount := volume.GetVolumes(apicommon.APMSocketVolumeName, udsHostFolder, apicommon.APMSocketVolumeLocalPath, false)
volType := corev1.HostPathDirectoryOrCreate // We need to create the directory on the host if it does not exist.
socketVol.VolumeSource.HostPath.Type = &volType
managers.VolumeMount().AddVolumeMountToContainer(&socketVolMount, apicommonv1.TraceAgentContainerName)
managers.Volume().AddVolume(&socketVol)
}
Expand Down
31 changes: 18 additions & 13 deletions controllers/datadogagent/feature/apm/feature_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ import (
)

const (
apmSocketPath = apicommon.DogstatsdSocketVolumePath + "/" + apicommon.APMSocketName
apmSocketHostPath = apicommon.DogstatsdAPMSocketVolumePath + "/" + apicommon.APMSocketName
apmSocketLocalPath = apicommon.APMSocketVolumeLocalPath + "/" + apicommon.APMSocketName
)

func TestAPMFeature(t *testing.T) {
Expand Down Expand Up @@ -83,7 +84,7 @@ func newV1Agent(enableAPM bool, uds bool) *v1alpha1.DatadogAgent {
HostPort: apiutils.NewInt32Pointer(8126),
UnixDomainSocket: &v1alpha1.APMUnixDomainSocketSpec{
Enabled: apiutils.NewBoolPointer(uds),
HostFilepath: apiutils.NewStringPointer(apmSocketPath),
HostFilepath: apiutils.NewStringPointer(apmSocketHostPath),
},
},
},
Expand All @@ -103,7 +104,7 @@ func newV2Agent(enableAPM bool, hostPort bool) *v2alpha1.DatadogAgent {
},
UnixDomainSocketConfig: &v2alpha1.UnixDomainSocketConfig{
Enabled: apiutils.NewBoolPointer(true),
Path: apiutils.NewStringPointer(apmSocketPath),
Path: apiutils.NewStringPointer(apmSocketHostPath),
},
},
},
Expand Down Expand Up @@ -169,7 +170,7 @@ func testAgentUDSOnly() *test.ComponentTest {
},
{
Name: apicommon.DDAPMReceiverSocket,
Value: apmSocketPath,
Value: apmSocketLocalPath,
},
}
assert.True(
Expand All @@ -181,8 +182,8 @@ func testAgentUDSOnly() *test.ComponentTest {
agentVolumeMounts := mgr.VolumeMountMgr.VolumeMountsByC[apicommonv1.TraceAgentContainerName]
expectedVolumeMounts := []*corev1.VolumeMount{
{
Name: apicommon.DogstatsdAPMSocketVolumeName,
MountPath: apicommon.DogstatsdSocketVolumePath,
Name: apicommon.APMSocketVolumeName,
MountPath: apicommon.APMSocketVolumeLocalPath,
ReadOnly: false,
},
}
Expand All @@ -193,12 +194,14 @@ func testAgentUDSOnly() *test.ComponentTest {
)

agentVolumes := mgr.VolumeMgr.Volumes
volType := corev1.HostPathDirectoryOrCreate
expectedVolumes := []*corev1.Volume{
{
Name: apicommon.DogstatsdAPMSocketVolumeName,
Name: apicommon.APMSocketVolumeName,
VolumeSource: corev1.VolumeSource{
HostPath: &corev1.HostPathVolumeSource{
Path: apicommon.DogstatsdSocketVolumePath,
Path: apicommon.DogstatsdAPMSocketVolumePath,
Type: &volType,
},
},
},
Expand Down Expand Up @@ -247,7 +250,7 @@ func testAgentHostPortUDS() *test.ComponentTest {
},
{
Name: apicommon.DDAPMReceiverSocket,
Value: apmSocketPath,
Value: apmSocketLocalPath,
},
}
assert.True(
Expand All @@ -259,8 +262,8 @@ func testAgentHostPortUDS() *test.ComponentTest {
agentVolumeMounts := mgr.VolumeMountMgr.VolumeMountsByC[apicommonv1.TraceAgentContainerName]
expectedVolumeMounts := []*corev1.VolumeMount{
{
Name: apicommon.DogstatsdAPMSocketVolumeName,
MountPath: apicommon.DogstatsdSocketVolumePath,
Name: apicommon.APMSocketVolumeName,
MountPath: apicommon.APMSocketVolumeLocalPath,
ReadOnly: false,
},
}
Expand All @@ -271,12 +274,14 @@ func testAgentHostPortUDS() *test.ComponentTest {
)

agentVolumes := mgr.VolumeMgr.Volumes
volType := corev1.HostPathDirectoryOrCreate
expectedVolumes := []*corev1.Volume{
{
Name: apicommon.DogstatsdAPMSocketVolumeName,
Name: apicommon.APMSocketVolumeName,
VolumeSource: corev1.VolumeSource{
HostPath: &corev1.HostPathVolumeSource{
Path: apicommon.DogstatsdSocketVolumePath,
Path: apicommon.DogstatsdAPMSocketVolumePath,
Type: &volType,
},
},
},
Expand Down
9 changes: 6 additions & 3 deletions controllers/datadogagent/feature/dogstatsd/feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,15 @@ func (f *dogstatsdFeature) ManageNodeAgent(managers feature.PodTemplateManagers)
// uds
if f.udsEnabled {
udsHostFolder := filepath.Dir(f.udsHostFilepath)
socketVol, socketVolMount := volume.GetVolumes(apicommon.DogstatsdAPMSocketVolumeName, udsHostFolder, udsHostFolder, false)
sockName := filepath.Base(f.udsHostFilepath)
socketVol, socketVolMount := volume.GetVolumes(apicommon.DogstatsdSocketVolumeName, udsHostFolder, apicommon.DogstatsdSocketLocalPath, false)
volType := corev1.HostPathDirectoryOrCreate // We need to create the directory on the host if it does not exist.
socketVol.VolumeSource.HostPath.Type = &volType
managers.VolumeMount().AddVolumeMountToContainer(&socketVolMount, apicommonv1.CoreAgentContainerName)
managers.Volume().AddVolume(&socketVol)
managers.EnvVar().AddEnvVarToContainer(apicommonv1.CoreAgentContainerName, &corev1.EnvVar{
managers.EnvVar().AddEnvVar(&corev1.EnvVar{
Name: apicommon.DDDogstatsdSocket,
Value: f.udsHostFilepath,
Value: filepath.Join(apicommon.DogstatsdSocketLocalPath, sockName),
})
}

Expand Down
Loading

0 comments on commit 1e4b81a

Please sign in to comment.