@@ -13,6 +13,7 @@ import (
1313 "github.com/DataDog/test-infra-definitions/components/datadog/apps/etcd"
1414 "github.com/DataDog/test-infra-definitions/components/datadog/fakeintake"
1515 "github.com/DataDog/test-infra-definitions/resources/helm"
16+ "github.com/Masterminds/semver"
1617
1718 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes"
1819 corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1"
@@ -79,6 +80,10 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
7980 appKey := e .AgentAPPKey ()
8081 baseName := "dda"
8182 opts = append (opts , pulumi .Providers (args .KubeProvider ), e .WithProviders (config .ProviderRandom ), pulumi .DeletedWith (args .KubeProvider ))
83+ kubeVersion , err := semver .NewVersion (e .KubernetesVersion ())
84+ if err != nil {
85+ kubeVersion , _ = semver .NewVersion ("1.21.0" )
86+ }
8287
8388 helmComponent := & HelmComponent {}
8489 if err := e .Ctx ().RegisterComponentResource ("dd:agent" , "dda" , helmComponent , opts ... ); err != nil {
@@ -156,7 +161,7 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
156161 if args .GKEAutopilot {
157162 values = buildLinuxHelmValuesAutopilot (baseName , agentImagePath , agentImageTag , clusterAgentImagePath , clusterAgentImageTag , randomClusterAgentToken .Result )
158163 } else {
159- values = buildLinuxHelmValues (baseName , agentImagePath , agentImageTag , clusterAgentImagePath , clusterAgentImageTag , randomClusterAgentToken .Result , ! args .DisableLogsContainerCollectAll , e .TestingWorkloadDeploy ())
164+ values = buildLinuxHelmValues (baseName , agentImagePath , agentImageTag , clusterAgentImagePath , clusterAgentImageTag , randomClusterAgentToken .Result , ! args .DisableLogsContainerCollectAll , e .TestingWorkloadDeploy (), kubeVersion )
160165 }
161166 values .configureImagePullSecret (imgPullSecret )
162167 values .configureFakeintake (e , args .Fakeintake , args .DualShipping )
@@ -240,7 +245,13 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
240245
241246type HelmValues pulumi.Map
242247
243- func buildLinuxHelmValues (baseName , agentImagePath , agentImageTag , clusterAgentImagePath , clusterAgentImageTag string , clusterAgentToken pulumi.StringInput , logsContainerCollectAll bool , testingWorkloadsEnabled bool ) HelmValues {
248+ func buildLinuxHelmValues (
249+ baseName , agentImagePath , agentImageTag , clusterAgentImagePath , clusterAgentImageTag string ,
250+ clusterAgentToken pulumi.StringInput ,
251+ logsContainerCollectAll bool ,
252+ testingWorkloadsEnabled bool ,
253+ kubeVersion * semver.Version ,
254+ ) HelmValues {
244255 var containerRegistry , imageName string
245256 if strings .Contains (agentImagePath , "/" ) {
246257 agentImageElem := strings .Split (agentImagePath , "/" )
@@ -250,11 +261,19 @@ func buildLinuxHelmValues(baseName, agentImagePath, agentImageTag, clusterAgentI
250261 containerRegistry = ""
251262 imageName = agentImagePath
252263 }
264+ // Determine leader election mechanism based on kubeVersion
265+ kubeThresholdVersion , _ := semver .NewVersion ("1.21.0" )
266+ leaderElectionType := "" // Default empty string will be mapped to "lease" for versions >= 1.14.0
267+ if kubeVersion .LessThan (kubeThresholdVersion ) {
268+ leaderElectionType = "configmap"
269+ }
270+
253271 helmValues := HelmValues {
254272 "datadog" : pulumi.Map {
255- "apiKeyExistingSecret" : pulumi .String (baseName + "-datadog-credentials" ),
256- "appKeyExistingSecret" : pulumi .String (baseName + "-datadog-credentials" ),
257- "checksCardinality" : pulumi .String ("high" ),
273+ "apiKeyExistingSecret" : pulumi .String (baseName + "-datadog-credentials" ),
274+ "appKeyExistingSecret" : pulumi .String (baseName + "-datadog-credentials" ),
275+ "leaderElectionResource" : pulumi .String (leaderElectionType ),
276+ "checksCardinality" : pulumi .String ("high" ),
258277 "namespaceLabelsAsTags" : pulumi.Map {
259278 "related_team" : pulumi .String ("team" ),
260279 },
0 commit comments