Skip to content

Commit ac3ac58

Browse files
committed
Make OpenShift Helm values a Pulumi Asset
1 parent 85d1df7 commit ac3ac58

File tree

2 files changed

+109
-67
lines changed

2 files changed

+109
-67
lines changed

test/e2e-framework/components/datadog/agent/kubernetes_helm.go

Lines changed: 103 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
186186
values.configureImagePullSecret(imgPullSecret)
187187
values.configureFakeintake(e, args.Fakeintake, args.DualShipping)
188188

189-
defaultYAMLValues := values.toYAMLPulumiAssetOutput()
189+
defaultYAMLValues := values.ToYAMLPulumiAssetOutput()
190190

191191
var valuesYAML pulumi.AssetOrArchiveArray
192192
valuesYAML = append(valuesYAML, defaultYAMLValues)
@@ -233,7 +233,7 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
233233
values := buildWindowsHelmValues(baseName, agentImagePath, agentImageTag, clusterAgentImagePath, clusterAgentImageTag)
234234
values.configureImagePullSecret(imgPullSecret)
235235
values.configureFakeintake(e, args.Fakeintake, args.DualShipping)
236-
defaultYAMLValues := values.toYAMLPulumiAssetOutput()
236+
defaultYAMLValues := values.ToYAMLPulumiAssetOutput()
237237

238238
var windowsValuesYAML pulumi.AssetOrArchiveArray
239239
windowsValuesYAML = append(windowsValuesYAML, defaultYAMLValues)
@@ -680,6 +680,106 @@ func buildLinuxHelmValuesAutopilot(baseName, agentImagePath, agentImageTag, clus
680680
}
681681
}
682682

683+
// BuildOpenShiftHelmValues returns Helm values for deploying the agent on OpenShift clusters.
684+
func BuildOpenShiftHelmValues() HelmValues {
685+
return HelmValues{
686+
"datadog": pulumi.Map{
687+
"kubelet": pulumi.Map{
688+
"tlsVerify": pulumi.Bool(false),
689+
},
690+
// https://docs.datadoghq.com/containers/troubleshooting/admission-controller/?tab=helm#openshift
691+
"apm": pulumi.Map{
692+
"portEnabled": pulumi.Bool(true),
693+
},
694+
"sbom": pulumi.Map{
695+
"containerImage": pulumi.Map{
696+
"enabled": pulumi.Bool(true),
697+
"overlayFSDirectScan": pulumi.Bool(true),
698+
},
699+
},
700+
"criSocketPath": pulumi.String("/var/run/crio/crio.sock"),
701+
"useHostPID": pulumi.Bool(true),
702+
"originDetectionUnified": pulumi.Map{
703+
"enabled": pulumi.Bool(true),
704+
},
705+
"dogstatsd": pulumi.Map{
706+
"originDetection": pulumi.Bool(true),
707+
"tagCardinality": pulumi.String("high"),
708+
},
709+
},
710+
"agents": pulumi.Map{
711+
"enabled": pulumi.Bool(true),
712+
"tolerations": pulumi.MapArray{
713+
// Deploy Agents on master nodes
714+
pulumi.Map{
715+
"effect": pulumi.String("NoSchedule"),
716+
"key": pulumi.String("node-role.kubernetes.io/master"),
717+
"operator": pulumi.String("Exists"),
718+
},
719+
// Deploy Agents on infra nodes
720+
pulumi.Map{
721+
"effect": pulumi.String("NoSchedule"),
722+
"key": pulumi.String("node-role.kubernetes.io/infra"),
723+
"operator": pulumi.String("Exists"),
724+
},
725+
// Tolerate disk pressure
726+
pulumi.Map{
727+
"effect": pulumi.String("NoSchedule"),
728+
"key": pulumi.String("node.kubernetes.io/disk-pressure"),
729+
"operator": pulumi.String("Exists"),
730+
},
731+
},
732+
"useHostNetwork": pulumi.Bool(true),
733+
"replicas": pulumi.Int(1),
734+
"podSecurity": pulumi.Map{
735+
"securityContextConstraints": pulumi.Map{
736+
"create": pulumi.Bool(true),
737+
},
738+
},
739+
"volumeMounts": pulumi.MapArray{
740+
pulumi.Map{
741+
"name": pulumi.String("trivycache"),
742+
"mountPath": pulumi.String("/root/.cache/trivy"),
743+
},
744+
pulumi.Map{
745+
"name": pulumi.String("imageoverlay"),
746+
"mountPath": pulumi.String("/var/lib/containers/storage"),
747+
},
748+
},
749+
"volumes": pulumi.MapArray{
750+
pulumi.Map{
751+
"name": pulumi.String("trivycache"),
752+
"emptyDir": pulumi.Map{},
753+
},
754+
pulumi.Map{
755+
"name": pulumi.String("imageoverlay"),
756+
"hostPath": pulumi.Map{
757+
"path": pulumi.String("/var/lib/containers/storage"),
758+
},
759+
},
760+
},
761+
},
762+
"clusterAgent": pulumi.Map{
763+
"resources": pulumi.StringMapMap{
764+
"limits": pulumi.StringMap{
765+
"cpu": pulumi.String("300m"),
766+
"memory": pulumi.String("400Mi"),
767+
},
768+
"requests": pulumi.StringMap{
769+
"cpu": pulumi.String("150m"),
770+
"memory": pulumi.String("300Mi"),
771+
},
772+
},
773+
"enabled": pulumi.Bool(true),
774+
"podSecurity": pulumi.Map{
775+
"securityContextConstraints": pulumi.Map{
776+
"create": pulumi.Bool(true),
777+
},
778+
},
779+
},
780+
}
781+
}
782+
683783
func buildWindowsHelmValues(baseName string, agentImagePath, agentImageTag, _, _ string) HelmValues {
684784
return HelmValues{
685785
"targetSystem": pulumi.String("windows"),
@@ -879,7 +979,7 @@ func (values HelmValues) configureFakeintake(e config.Env, fakeintake *fakeintak
879979
}
880980
}
881981

882-
func (values HelmValues) toYAMLPulumiAssetOutput() pulumi.AssetOutput {
982+
func (values HelmValues) ToYAMLPulumiAssetOutput() pulumi.AssetOutput {
883983
return pulumi.Map(values).ToMapOutput().ApplyT(func(v map[string]any) (pulumi.Asset, error) {
884984
yamlValues, err := yaml.Marshal(v)
885985
if err != nil {

test/e2e-framework/testing/provisioners/gcp/kubernetes/openshiftvm/openshiftvm.go

Lines changed: 6 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
kubernetesNewProvider "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes"
1313

1414
"github.com/DataDog/datadog-agent/test/e2e-framework/common/utils"
15-
"github.com/DataDog/datadog-agent/test/e2e-framework/components/datadog/agent"
15+
agentComp "github.com/DataDog/datadog-agent/test/e2e-framework/components/datadog/agent"
1616
"github.com/DataDog/datadog-agent/test/e2e-framework/components/datadog/agent/helm"
1717
"github.com/DataDog/datadog-agent/test/e2e-framework/components/datadog/apps/cpustress"
1818
"github.com/DataDog/datadog-agent/test/e2e-framework/components/datadog/apps/dogstatsd"
@@ -39,67 +39,6 @@ import (
3939

4040
const (
4141
provisionerBaseID = "gcp-openshiftvm"
42-
customAgentValues = `
43-
datadog:
44-
kubelet:
45-
tlsVerify: false
46-
# https://docs.datadoghq.com/containers/troubleshooting/admission-controller/?tab=helm#openshift
47-
apm:
48-
portEnabled: true
49-
sbom:
50-
containerImage:
51-
enabled: true
52-
overlayFSDirectScan: true
53-
criSocketPath: /var/run/crio/crio.sock
54-
useHostPID: true
55-
originDetectionUnified:
56-
enabled: true
57-
dogstatsd:
58-
originDetection: true
59-
tagCardinality: high
60-
agents:
61-
enabled: true
62-
tolerations:
63-
# Deploy Agents on master nodes
64-
- effect: NoSchedule
65-
key: node-role.kubernetes.io/master
66-
operator: Exists
67-
# Deploy Agents on infra nodes
68-
- effect: NoSchedule
69-
key: node-role.kubernetes.io/infra
70-
operator: Exists
71-
# Tolerate disk pressure
72-
- effect: NoSchedule
73-
key: node.kubernetes.io/disk-pressure
74-
operator: Exists
75-
useHostNetwork: true
76-
replicas: 1
77-
podSecurity:
78-
securityContextConstraints:
79-
create: true
80-
volumeMounts:
81-
- name: trivycache
82-
mountPath: /root/.cache/trivy
83-
- name: imageoverlay
84-
mountPath: /var/lib/containers/storage
85-
volumes:
86-
- name: trivycache
87-
emptyDir: {}
88-
- name: imageoverlay
89-
hostPath:
90-
path: /var/lib/containers/storage
91-
clusterAgent:
92-
resources:
93-
limits:
94-
cpu: 300m
95-
memory: 400Mi
96-
requests:
97-
cpu: 150m
98-
memory: 300Mi
99-
enabled: true
100-
podSecurity:
101-
securityContextConstraints:
102-
create: true`
10342
)
10443

10544
// OpenshiftVMProvisioner creates a new provisioner for OpenShift VM on GCP
@@ -183,10 +122,13 @@ func OpenShiftVMRunFunc(ctx *pulumi.Context, env *environments.Kubernetes, param
183122
}
184123

185124
// Deploy the agent
186-
var agent *agent.KubernetesAgent
125+
var agent *agentComp.KubernetesAgent
187126
if params.agentOptions != nil {
188127
params.agentOptions = append(params.agentOptions,
189-
kubernetesagentparams.WithHelmValues(customAgentValues),
128+
func(p *kubernetesagentparams.Params) error {
129+
p.HelmValues = append(p.HelmValues, agentComp.BuildOpenShiftHelmValues().ToYAMLPulumiAssetOutput())
130+
return nil
131+
},
190132
kubernetesagentparams.WithClusterName(openshiftCluster.ClusterName),
191133
kubernetesagentparams.WithNamespace("datadog"),
192134
// OpenShift deployments need more time due to security context constraints and slower startup

0 commit comments

Comments
 (0)