Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,13 @@ updates:
directory: /components/datadog/apps/cws/images/cws-centos7
schedule:
interval: daily

- package-ecosystem: docker
directory: /components/datadog/apps/churn/images/churn
schedule:
interval: daily

- package-ecosystem: gomod
directory: /components/datadog/apps/churn/images/churn
schedule:
interval: daily
2 changes: 2 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ jobs:
image: cuda-basic
- app: s3-proxy-nginx
image: s3-proxy-nginx
- app: churn
image: churn
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
Expand Down
111 changes: 81 additions & 30 deletions common/config/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,36 +36,44 @@ const (
DDInfraInitOnly = "initOnly"

// Agent Namespace
DDAgentDeployParamName = "deploy"
DDAgentDeployWithOperatorParamName = "deployWithOperator"
DDAgentVersionParamName = "version"
DDAgentFlavorParamName = "flavor"
DDAgentPipelineID = "pipeline_id"
DDAgentLocalPackage = "localPackage"
DDAgentLocalChartPath = "localChartPath"
DDAgentCommitSHA = "commit_sha"
DDAgentFullImagePathParamName = "fullImagePath"
DDClusterAgentVersionParamName = "clusterAgentVersion"
DDClusterAgentFullImagePathParamName = "clusterAgentFullImagePath"
DDOperatorVersionParamName = "operatorVersion"
DDOperatorFullImagePathParamName = "operatorFullImagePath"
DDOperatorLocalChartPath = "localChartPath"
DDImagePullRegistryParamName = "imagePullRegistry"
DDImagePullUsernameParamName = "imagePullUsername"
DDImagePullPasswordParamName = "imagePullPassword"
DDAgentAPIKeyParamName = "apiKey"
DDAgentAPPKeyParamName = "appKey"
DDAgentFakeintake = "fakeintake"
DDAgentDualShipping = "dualshipping"
DDAgentFakeintakeStoreType = "fakeintakeStoreType"
DDAGentFakeintakeRetentionPeriod = "fakeintakeRetentionPeriod"
DDAgentSite = "site"
DDAgentMajorVersion = "majorVersion"
DDAgentExtraEnvVars = "extraEnvVars" // extraEnvVars is expected in the format: <key1>=<value1>,<key2>=<value2>,...
DDAgentJMX = "jmx"
DDAgentFIPS = "fips"
DDAgentConfigPathParamName = "configPath"
DDAgentHelmConfig = "helmConfig"
DDAgentDeployParamName = "deploy"
DDAgentDeployWithOperatorParamName = "deployWithOperator"
DDAgentVersionParamName = "version"
DDAgentFlavorParamName = "flavor"
DDAgentPipelineID = "pipeline_id"
DDAgentLocalPackage = "localPackage"
DDAgentLocalChartPath = "localChartPath"
DDAgentCommitSHA = "commit_sha"
DDAgentFullImagePathParamName = "fullImagePath"
DDClusterAgentVersionParamName = "clusterAgentVersion"
DDClusterAgentFullImagePathParamName = "clusterAgentFullImagePath"
DDAgentBaselineVersionParamName = "baselineVersion"
DDAgentBaselineFullImagePathParamName = "baselineFullImagePath"
DDClusterAgentBaselineVersionParamName = "baselineClusterAgentVersion"
DDClusterAgentBaselineFullImagePathParamName = "baselineClusterAgentFullImagePath"
DDAgentComparisonVersionParamName = "comparisonVersion"
DDAgentComparisonFullImagePathParamName = "comparisonFullImagePath"
DDClusterAgentComparisonVersionParamName = "comparisonClusterAgentVersion"
DDClusterAgentComparisonFullImagePathParamName = "comparisonClusterAgentFullImagePath"
DDOperatorVersionParamName = "operatorVersion"
DDOperatorFullImagePathParamName = "operatorFullImagePath"
DDOperatorLocalChartPath = "localChartPath"
DDImagePullRegistryParamName = "imagePullRegistry"
DDImagePullUsernameParamName = "imagePullUsername"
DDImagePullPasswordParamName = "imagePullPassword"
DDAgentAPIKeyParamName = "apiKey"
DDAgentAPPKeyParamName = "appKey"
DDAgentFakeintake = "fakeintake"
DDAgentDualShipping = "dualshipping"
DDAgentFakeintakeStoreType = "fakeintakeStoreType"
DDAGentFakeintakeRetentionPeriod = "fakeintakeRetentionPeriod"
DDAgentSite = "site"
DDAgentMajorVersion = "majorVersion"
DDAgentExtraEnvVars = "extraEnvVars" // extraEnvVars is expected in the format: <key1>=<value1>,<key2>=<value2>,...
DDAgentJMX = "jmx"
DDAgentFIPS = "fips"
DDAgentConfigPathParamName = "configPath"
DDAgentHelmConfig = "helmConfig"

// Updater Namespace
DDUpdaterParamName = "deploy"
Expand Down Expand Up @@ -123,6 +131,15 @@ type Env interface {
ClusterAgentVersion() string
AgentFullImagePath() string
ClusterAgentFullImagePath() string
// Benchmarkeks specific methods
AgentBaselineVersion() string
AgentBaselineFullImagePath() string
ClusterAgentBaselineVersion() string
ClusterAgentBaselineFullImagePath() string
AgentComparisonVersion() string
AgentComparisonFullImagePath() string
ClusterAgentComparisonVersion() string
ClusterAgentComparisonFullImagePath() string
OperatorFullImagePath() string
OperatorVersion() string
OperatorLocalChartPath() string
Expand Down Expand Up @@ -315,6 +332,40 @@ func (e *CommonEnvironment) ClusterAgentFullImagePath() string {
return e.AgentConfig.Get(DDClusterAgentFullImagePathParamName)
}

// Benchmarkeks specific methods for baseline variant
func (e *CommonEnvironment) AgentBaselineVersion() string {
return e.AgentConfig.Get(DDAgentBaselineVersionParamName)
}

func (e *CommonEnvironment) AgentBaselineFullImagePath() string {
return e.AgentConfig.Get(DDAgentBaselineFullImagePathParamName)
}

func (e *CommonEnvironment) ClusterAgentBaselineVersion() string {
return e.AgentConfig.Get(DDClusterAgentBaselineVersionParamName)
}

func (e *CommonEnvironment) ClusterAgentBaselineFullImagePath() string {
return e.AgentConfig.Get(DDClusterAgentBaselineFullImagePathParamName)
}

// Benchmarkeks specific methods for comparison variant
func (e *CommonEnvironment) AgentComparisonVersion() string {
return e.AgentConfig.Get(DDAgentComparisonVersionParamName)
}

func (e *CommonEnvironment) AgentComparisonFullImagePath() string {
return e.AgentConfig.Get(DDAgentComparisonFullImagePathParamName)
}

func (e *CommonEnvironment) ClusterAgentComparisonVersion() string {
return e.AgentConfig.Get(DDClusterAgentComparisonVersionParamName)
}

func (e *CommonEnvironment) ClusterAgentComparisonFullImagePath() string {
return e.AgentConfig.Get(DDClusterAgentComparisonFullImagePathParamName)
}

func (e *CommonEnvironment) OperatorVersion() string {
return e.OperatorConfig.Get(DDOperatorVersionParamName)
}
Expand Down
42 changes: 22 additions & 20 deletions components/datadog/agent/helm/kubernetes_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/DataDog/test-infra-definitions/components/datadog/kubernetesagentparams"
)

func NewKubernetesAgent(e config.Env, resourceName string, kubeProvider *kubernetes.Provider, options ...kubernetesagentparams.Option) (*agent.KubernetesAgent, error) {
func NewKubernetesAgent(e config.Env, baseName string, resourceName string, kubeProvider *kubernetes.Provider, options ...kubernetesagentparams.Option) (*agent.KubernetesAgent, error) {
return components.NewComponent(e, resourceName, func(comp *agent.KubernetesAgent) error {
params, err := kubernetesagentparams.NewParams(e, options...)
if err != nil {
Expand All @@ -22,24 +22,26 @@ func NewKubernetesAgent(e config.Env, resourceName string, kubeProvider *kuberne

pulumiResourceOptions := append(params.PulumiResourceOptions, pulumi.Parent(comp))

helmComponent, err := agent.NewHelmInstallation(e, agent.HelmInstallationArgs{
KubeProvider: kubeProvider,
DeployWindows: params.DeployWindows,
Namespace: params.Namespace,
ChartPath: params.HelmChartPath,
RepoURL: params.HelmRepoURL,
ValuesYAML: params.HelmValues,
Fakeintake: params.FakeIntake,
AgentFullImagePath: params.AgentFullImagePath,
ClusterAgentFullImagePath: params.ClusterAgentFullImagePath,
DualShipping: params.DualShipping,
DisableLogsContainerCollectAll: params.DisableLogsContainerCollectAll,
OTelAgent: params.OTelAgent,
OTelConfig: params.OTelConfig,
GKEAutopilot: params.GKEAutopilot,
FIPS: params.FIPS,
JMX: params.JMX,
}, pulumiResourceOptions...)
helmComponent, err := agent.NewHelmInstallation(e,
baseName,
agent.HelmInstallationArgs{
KubeProvider: kubeProvider,
DeployWindows: params.DeployWindows,
Namespace: params.Namespace,
ChartPath: params.HelmChartPath,
RepoURL: params.HelmRepoURL,
ValuesYAML: params.HelmValues,
Fakeintake: params.FakeIntake,
AgentFullImagePath: params.AgentFullImagePath,
ClusterAgentFullImagePath: params.ClusterAgentFullImagePath,
DualShipping: params.DualShipping,
DisableLogsContainerCollectAll: params.DisableLogsContainerCollectAll,
OTelAgent: params.OTelAgent,
OTelConfig: params.OTelConfig,
GKEAutopilot: params.GKEAutopilot,
FIPS: params.FIPS,
JMX: params.JMX,
}, pulumiResourceOptions...)
if err != nil {
return err
}
Expand All @@ -50,7 +52,7 @@ func NewKubernetesAgent(e config.Env, resourceName string, kubeProvider *kuberne
appVersion := helmComponent.LinuxHelmReleaseStatus.AppVersion().Elem()
version := helmComponent.LinuxHelmReleaseStatus.Version().Elem()

baseName := "dda-" + platform
baseName = baseName + "-" + platform

comp.LinuxNodeAgent, err = componentskube.NewKubernetesObjRef(e, baseName+"-nodeAgent", params.Namespace, "Pod", appVersion, version, map[string]string{
"app": baseName + "-datadog",
Expand Down
9 changes: 4 additions & 5 deletions components/datadog/agent/kubernetes_helm.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,19 @@ type HelmComponent struct {
ClusterAgentToken pulumi.StringOutput
}

func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi.ResourceOption) (*HelmComponent, error) {
func NewHelmInstallation(e config.Env, baseName string, args HelmInstallationArgs, opts ...pulumi.ResourceOption) (*HelmComponent, error) {
apiKey := e.AgentAPIKey()
appKey := e.AgentAPPKey()
baseName := "dda"
opts = append(opts, pulumi.Providers(args.KubeProvider), e.WithProviders(config.ProviderRandom), pulumi.DeletedWith(args.KubeProvider))

helmComponent := &HelmComponent{}
if err := e.Ctx().RegisterComponentResource("dd:agent", "dda", helmComponent, opts...); err != nil {
if err := e.Ctx().RegisterComponentResource("dd:agent", e.CommonNamer().ResourceName(baseName), helmComponent, opts...); err != nil {
return nil, err
}
opts = append(opts, pulumi.Parent(helmComponent))

// Create fixed cluster agent token
randomClusterAgentToken, err := random.NewRandomString(e.Ctx(), "datadog-cluster-agent-token", &random.RandomStringArgs{
randomClusterAgentToken, err := random.NewRandomString(e.Ctx(), e.CommonNamer().ResourceName(baseName, "cluster", "agent", "token"), &random.RandomStringArgs{
Lower: pulumi.Bool(true),
Upper: pulumi.Bool(true),
Length: pulumi.Int(32),
Expand All @@ -112,7 +111,7 @@ func NewHelmInstallation(e config.Env, args HelmInstallationArgs, opts ...pulumi
opts = append(opts, utils.PulumiDependsOn(ns))

// Create secret if necessary
secret, err := corev1.NewSecret(e.Ctx(), "datadog-credentials", &corev1.SecretArgs{
secret, err := corev1.NewSecret(e.Ctx(), e.CommonNamer().ResourceName(baseName, "credentials"), &corev1.SecretArgs{
Metadata: metav1.ObjectMetaArgs{
Namespace: ns.Metadata.Name(),
Name: pulumi.Sprintf("%s-datadog-credentials", baseName),
Expand Down
17 changes: 17 additions & 0 deletions components/datadog/apps/churn/images/churn/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM golang:1.24 AS builder

WORKDIR /usr/src/app

# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change
COPY go.mod go.sum ./
RUN go mod download && go mod verify

COPY . .
ENV CGO_ENABLED=0
RUN go build -v -o /usr/local/bin/app ./...

FROM scratch

COPY --from=builder /usr/local/bin/app /app

ENTRYPOINT ["/app"]
36 changes: 36 additions & 0 deletions components/datadog/apps/churn/images/churn/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
module churn

go 1.24

require (
github.com/gobuffalo/flect v1.0.3
k8s.io/apimachinery v0.32.0
k8s.io/client-go v0.32.0
)

require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/term v0.25.0 // indirect
golang.org/x/text v0.19.0 // indirect
golang.org/x/time v0.7.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
Loading