Skip to content

Commit d1b5af0

Browse files
committed
Use lease for DCA leader election if k8s.version >= 1.21
1 parent 9f81f09 commit d1b5af0

1 file changed

Lines changed: 24 additions & 5 deletions

File tree

components/datadog/agent/kubernetes_helm.go

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

241246
type 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

Comments
 (0)