diff --git a/deploy/crds/datadoghq.com_datadogagents_crd.yaml b/deploy/crds/datadoghq.com_datadogagents_crd.yaml index c9b5ef3f5..ea6dc3aa8 100644 --- a/deploy/crds/datadoghq.com_datadogagents_crd.yaml +++ b/deploy/crds/datadoghq.com_datadogagents_crd.yaml @@ -259,9 +259,9 @@ spec: description: Path to the container runtime socket (if different from Docker) This is supported starting from agent 6.6.0 type: string - useCriSocketVolume: - description: Enable container runtime socket volume mounting - type: boolean + dockerSocketPath: + description: Path to the docker runtime socket + type: string type: object ddUrl: description: The host of the Datadog intake server to send Agent diff --git a/pkg/apis/datadoghq/v1alpha1/datadogagent_default.go b/pkg/apis/datadoghq/v1alpha1/datadogagent_default.go index 8fb139e79..44d587a94 100644 --- a/pkg/apis/datadoghq/v1alpha1/datadogagent_default.go +++ b/pkg/apis/datadoghq/v1alpha1/datadogagent_default.go @@ -22,8 +22,7 @@ const ( defaultAgentImage string = "datadog/agent:latest" defaultCollectEvents bool = false defaultLeaderElection bool = false - defaultUseCriSocketVolume bool = true - defaultCriSocketPath string = "/var/run/docker.sock" + defaultDockerSocketPath string = "/var/run/docker.sock" defaultDogstatsdOriginDetection bool = false defaultUseDogStatsDSocketVolume bool = false defaultApmEnabled bool = false @@ -173,7 +172,7 @@ func IsDefaultedDatadogAgentSpecAgentConfig(config *NodeAgentConfig) bool { return false } - if config.CriSocket.UseCriSocketVolume == nil { + if config.CriSocket.DockerSocketPath == nil { return false } @@ -418,8 +417,7 @@ func DefaultDatadogAgentSpecAgentConfig(config *NodeAgentConfig) *NodeAgentConfi if config.CriSocket == nil { config.CriSocket = &CRISocketConfig{ - UseCriSocketVolume: NewBoolPointer(defaultUseCriSocketVolume), - CriSocketPath: NewStringPointer(defaultCriSocketPath), + DockerSocketPath: NewStringPointer(defaultDockerSocketPath), } } diff --git a/pkg/apis/datadoghq/v1alpha1/datadogagent_types.go b/pkg/apis/datadoghq/v1alpha1/datadogagent_types.go index 2914787c7..5c7f33a72 100644 --- a/pkg/apis/datadoghq/v1alpha1/datadogagent_types.go +++ b/pkg/apis/datadoghq/v1alpha1/datadogagent_types.go @@ -524,8 +524,9 @@ type NodeAgentConfig struct { // CRISocketConfig contains the CRI socket configuration parameters // +k8s:openapi-gen=true type CRISocketConfig struct { - // Enable container runtime socket volume mounting - UseCriSocketVolume *bool `json:"useCriSocketVolume,omitempty"` + // Path to the docker runtime socket + // +optional + DockerSocketPath *string `json:"dockerSocketPath,omitempty"` // Path to the container runtime socket (if different from Docker) // This is supported starting from agent 6.6.0 diff --git a/pkg/apis/datadoghq/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/datadoghq/v1alpha1/zz_generated.deepcopy.go index ccb6cd4a1..239b6c1d0 100644 --- a/pkg/apis/datadoghq/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/datadoghq/v1alpha1/zz_generated.deepcopy.go @@ -90,9 +90,9 @@ func (in *AgentCredentials) DeepCopy() *AgentCredentials { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CRISocketConfig) DeepCopyInto(out *CRISocketConfig) { *out = *in - if in.UseCriSocketVolume != nil { - in, out := &in.UseCriSocketVolume, &out.UseCriSocketVolume - *out = new(bool) + if in.DockerSocketPath != nil { + in, out := &in.DockerSocketPath, &out.DockerSocketPath + *out = new(string) **out = **in } if in.CriSocketPath != nil { diff --git a/pkg/apis/datadoghq/v1alpha1/zz_generated.openapi.go b/pkg/apis/datadoghq/v1alpha1/zz_generated.openapi.go index ad1383069..86d8a1121 100644 --- a/pkg/apis/datadoghq/v1alpha1/zz_generated.openapi.go +++ b/pkg/apis/datadoghq/v1alpha1/zz_generated.openapi.go @@ -184,10 +184,10 @@ func schema_pkg_apis_datadoghq_v1alpha1_CRISocketConfig(ref common.ReferenceCall Description: "CRISocketConfig contains the CRI socket configuration parameters", Type: []string{"object"}, Properties: map[string]spec.Schema{ - "useCriSocketVolume": { + "dockerSocketPath": { SchemaProps: spec.SchemaProps{ - Description: "Enable container runtime socket volume mounting", - Type: []string{"boolean"}, + Description: "Path to the docker runtime socket", + Type: []string{"string"}, Format: "", }, }, diff --git a/pkg/controller/datadogagent/agent_test.go b/pkg/controller/datadogagent/agent_test.go index 0698f66d4..585a3c724 100644 --- a/pkg/controller/datadogagent/agent_test.go +++ b/pkg/controller/datadogagent/agent_test.go @@ -232,10 +232,6 @@ func defaultEnvVars() []corev1.EnvVar { Name: "DD_API_KEY", ValueFrom: apiKeyValue(), }, - { - Name: "DD_CRI_SOCKET_PATH", - Value: "/host/var/run/docker.sock", - }, { Name: "DOCKER_HOST", Value: "unix:///host/var/run/docker.sock", diff --git a/pkg/controller/datadogagent/utils.go b/pkg/controller/datadogagent/utils.go index 3fe05a8dd..027c1ae08 100644 --- a/pkg/controller/datadogagent/utils.go +++ b/pkg/controller/datadogagent/utils.go @@ -11,7 +11,6 @@ import ( "math/rand" "path/filepath" "strconv" - "strings" "time" datadoghqv1alpha1 "github.com/DataDog/datadog-operator/pkg/apis/datadoghq/v1alpha1" @@ -473,16 +472,16 @@ func getEnvVarsCommon(dda *datadoghqv1alpha1.DatadogAgent, needAPIKey bool) ([]c }) } - if dda.Spec.Agent.Config.CriSocket != nil && dda.Spec.Agent.Config.CriSocket.CriSocketPath != nil { - envVars = append(envVars, corev1.EnvVar{ - Name: datadoghqv1alpha1.DDCriSocketPath, - Value: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, *dda.Spec.Agent.Config.CriSocket.CriSocketPath), - }) - - if strings.HasSuffix(*dda.Spec.Agent.Config.CriSocket.CriSocketPath, "docker.sock") { + if dda.Spec.Agent.Config.CriSocket != nil { + if dda.Spec.Agent.Config.CriSocket.CriSocketPath != nil { + envVars = append(envVars, corev1.EnvVar{ + Name: datadoghqv1alpha1.DDCriSocketPath, + Value: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, *dda.Spec.Agent.Config.CriSocket.CriSocketPath), + }) + } else if dda.Spec.Agent.Config.CriSocket.DockerSocketPath != nil { envVars = append(envVars, corev1.EnvVar{ Name: datadoghqv1alpha1.DockerHost, - Value: "unix://" + filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, *dda.Spec.Agent.Config.CriSocket.CriSocketPath), + Value: "unix://" + filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, *dda.Spec.Agent.Config.CriSocket.DockerSocketPath), }) } } @@ -652,20 +651,24 @@ func getVolumesForAgent(dda *datadoghqv1alpha1.DatadogAgent) []corev1.Volume { volumes = append(volumes, volume) } - if dda.Spec.Agent.Config.CriSocket != nil && dda.Spec.Agent.Config.CriSocket.UseCriSocketVolume != nil && *dda.Spec.Agent.Config.CriSocket.UseCriSocketVolume { - path := "/var/run/docker.sock" - if dda.Spec.Agent.Config.CriSocket.CriSocketPath != nil { + if dda.Spec.Agent.Config.CriSocket != nil { + path := "" + if dda.Spec.Agent.Config.CriSocket.DockerSocketPath != nil { + path = *dda.Spec.Agent.Config.CriSocket.DockerSocketPath + } else if dda.Spec.Agent.Config.CriSocket.CriSocketPath != nil { path = *dda.Spec.Agent.Config.CriSocket.CriSocketPath } - criVolume := corev1.Volume{ - Name: datadoghqv1alpha1.CriSocketVolumeName, - VolumeSource: corev1.VolumeSource{ - HostPath: &corev1.HostPathVolumeSource{ - Path: filepath.Dir(path), + if path != "" { + criVolume := corev1.Volume{ + Name: datadoghqv1alpha1.CriSocketVolumeName, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: filepath.Dir(path), + }, }, - }, + } + volumes = append(volumes, criVolume) } - volumes = append(volumes, criVolume) } if datadoghqv1alpha1.BoolValue(dda.Spec.Agent.Process.Enabled) { passwdVolume := corev1.Volume{ @@ -854,12 +857,20 @@ func getVolumeMountsForAgent(spec *datadoghqv1alpha1.DatadogAgentSpec) []corev1. } // Cri socket volume - if *spec.Agent.Config.CriSocket.UseCriSocketVolume { - volumeMounts = append(volumeMounts, corev1.VolumeMount{ - Name: datadoghqv1alpha1.CriSocketVolumeName, - MountPath: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, filepath.Dir(*spec.Agent.Config.CriSocket.CriSocketPath)), - ReadOnly: true, - }) + if spec.Agent.Config.CriSocket != nil { + path := "" + if spec.Agent.Config.CriSocket.DockerSocketPath != nil { + path = *spec.Agent.Config.CriSocket.DockerSocketPath + } else if spec.Agent.Config.CriSocket.CriSocketPath != nil { + path = *spec.Agent.Config.CriSocket.CriSocketPath + } + if path != "" { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: datadoghqv1alpha1.CriSocketVolumeName, + MountPath: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, filepath.Dir(path)), + ReadOnly: true, + }) + } } // Dogstatsd volume @@ -918,12 +929,20 @@ func getVolumeMountsForProcessAgent(spec *datadoghqv1alpha1.DatadogAgentSpec) [] } // Cri socket volume - if *spec.Agent.Config.CriSocket.UseCriSocketVolume { - volumeMounts = append(volumeMounts, corev1.VolumeMount{ - Name: datadoghqv1alpha1.CriSocketVolumeName, - MountPath: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, filepath.Dir(*spec.Agent.Config.CriSocket.CriSocketPath)), - ReadOnly: true, - }) + if spec.Agent.Config.CriSocket != nil { + path := "" + if spec.Agent.Config.CriSocket.DockerSocketPath != nil { + path = *spec.Agent.Config.CriSocket.DockerSocketPath + } else if spec.Agent.Config.CriSocket.CriSocketPath != nil { + path = *spec.Agent.Config.CriSocket.CriSocketPath + } + if path != "" { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: datadoghqv1alpha1.CriSocketVolumeName, + MountPath: filepath.Join(datadoghqv1alpha1.HostCriSocketPathPrefix, filepath.Dir(path)), + ReadOnly: true, + }) + } } if datadoghqv1alpha1.BoolValue(spec.Agent.SystemProbe.Enabled) { diff --git a/test/e2e/utils/new.go b/test/e2e/utils/new.go index 655eb0fba..53e0f15f8 100644 --- a/test/e2e/utils/new.go +++ b/test/e2e/utils/new.go @@ -49,8 +49,7 @@ func NewDatadogAgent(ns, name, image string, options *NewDatadogAgentOptions) *d }, }, CriSocket: &datadoghqv1alpha1.CRISocketConfig{ - CriSocketPath: datadoghqv1alpha1.NewStringPointer("/var/run/containerd/containerd.sock"), - UseCriSocketVolume: datadoghqv1alpha1.NewBoolPointer(true), + CriSocketPath: datadoghqv1alpha1.NewStringPointer("/var/run/containerd/containerd.sock"), }, Env: []v1.EnvVar{ {