Skip to content

[ACTP] Add Private Action Runner feature configuration - #3653

Open
martin-prevost1 wants to merge 3 commits into
mainfrom
martin.prevost/ACTP/private-action-runner-config
Open

martin-prevost1 wants to merge 3 commits into
mainfrom
martin.prevost/ACTP/private-action-runner-config

Conversation

@martin-prevost1

@martin-prevost1 martin-prevost1 commented Oct 23, 2026 •

Copy link
Copy Markdown

What does this PR do?

Adds spec.features.privateActionRunner with shared enabled and configData settings for the Node Agent and Cluster Agent, plus per-agent overrides. Component configData replaces the shared YAML, including its allowlist.

spec:
  features:
    privateActionRunner:
      enabled: true
      configData: |
        private_action_runner:
          self_enroll: true
          actions_allowlist:
            - com.datadoghq.script.runPredefinedScript

Existing annotation configuration remains supported. Split mode stays controlled by annotation; Kubernetes actions use the existing features.kubernetesActions feature.

Test

  • Targeted unit tests, make lint, API/CRD generation, and server-side validation of all six examples passed.
  • Colima with Agent/Cluster Agent 7.84.1: ten configuration scenarios, split annotation, and Kubernetes Actions/RBAC coexistence validated.

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Code Coverage

🎯 Code Coverage (details)
• Patch Coverage: 85.92%
• Overall Coverage: 55.45% (+0.06%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 9e4a31b | Docs | View more details | Give us feedback!

@martin-prevost1
martin-prevost1 marked this pull request as ready for review October 23, 2026 11:50
@martin-prevost1
martin-prevost1 requested a review from a team October 23, 2026 11:50
@martin-prevost1
martin-prevost1 requested review from a team as code owners October 23, 2026 11:50
@martin-prevost1
martin-prevost1 requested review from dd-gplassard and removed request for a team October 23, 2026 11:50
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-23T11:53:38.209491Z e6732ec Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

// Defaults to true for Agent images supporting split mode (7.84.0+).
// Older Agent images always use the legacy mode.
// +optional
SplitEnabled *bool `json:"splitEnabled,omitempty"`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this probably shouldn't be exposed as a top level config and can be kept as an annotation

// Takes precedence over actions_allowlist in ConfigData.
// +optional
// +listType=atomic
ActionsAllowlist *[]string `json:"actionsAllowlist,omitempty"`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we can keep it in configdata ? especially since we are heavily discussing what we are doing about it, we might not want to introduce it in this PR

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have an idea of the timeline for removing the allowlist? If it is planned for several quarters from now, it may be worth keeping it. But if it is happening very soon, I agree with you. 🙂

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The discussions are happening ~now but there are many open questions on it. I think showing an example with the allowlist in the configdata is a good solution for now

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI this might conflict with #3618, you might want to sync on it

// K8sRemediationEnabled grants cluster-wide permissions for Kubernetes remediation actions.
// Default: false
// +optional
K8sRemediationEnabled *bool `json:"k8sRemediationEnabled,omitempty"`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this might conflict / double usage with

spec:
  features:
    kubernetesActions:
      enabled: true

which already exists

Keep allowlists in configData and retain advanced split and remediation controls through existing annotations and Kubernetes Actions. Update configuration resolution, examples, tests, and generated schemas.
: Overrides the shared enabled setting for the Cluster Agent.

`features.privateActionRunner.configData`
: ConfigData contains YAML configuration, including the private_action_runner key, shared by both agents. The enabled field is controlled by Enabled instead. Configure allowed action patterns with private_action_runner.actions_allowlist. Default: "private_action_runner:\n enabled: true\n"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of what?

Suggested change
: ConfigData contains YAML configuration, including the private_action_runner key, shared by both agents. The enabled field is controlled by Enabled instead. Configure allowed action patterns with private_action_runner.actions_allowlist. Default: "private_action_runner:\n enabled: true\n"
: ConfigData contains YAML configuration, including the private_action_runner key, shared by both agents. The enabled field is controlled by Enabled. Configure allowed action patterns with private_action_runner.actions_allowlist. Default: "private_action_runner:\n enabled: true\n"

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants