Skip to content

[datadog] Add RBAC for network topology CRD collection#2541

Draft
eliottness wants to merge 3 commits intomainfrom
eliottness/ootb-crd-gateway-mesh-ingress
Draft

[datadog] Add RBAC for network topology CRD collection#2541
eliottness wants to merge 3 commits intomainfrom
eliottness/ootb-crd-gateway-mesh-ingress

Conversation

@eliottness
Copy link
Copy Markdown
Collaborator

@eliottness eliottness commented Apr 7, 2026

What does this PR do?

Adds list/watch RBAC permissions for 14 new API groups to the cluster agent ClusterRole, enabling OOTB collection of network topology CRDs for Cloud Security internet-reachability analysis.

Gated behind datadog.orchestratorExplorer.networkCRDs.enabled (default: false, opt-in).

New API groups:

  • Gateway API: gateway.networking.k8s.io (resource-specific)
  • Service mesh: networking.istio.io (resource-specific), gateway.envoyproxy.io, traefik.containo.us, policy.linkerd.io, consul.hashicorp.com, mesh.consul.hashicorp.com, kuma.io
  • Ingress controllers: k8s.nginx.org, traefik.io (resource-specific), configuration.konghq.com, core.haproxy.org, ingress.v1.haproxy.org, ingress.v3.haproxy.org

Motivation

The Datadog Agent is adding OOTB collection of these CRDs for Cloud Security internet-reachability analysis. The cluster agent needs RBAC permissions to list/watch these resources.

RFC: https://datadoghq.atlassian.net/wiki/x/4IOyfAE

Describe how you validated your changes

  • RBAC rules follow the same pattern as existing karpenter/argoproj/fluxcd entries
  • Resource-specific entries for high-volume vendors (Istio, NGINX, Traefik, Gateway API)
  • Group-level ("*" resources) for less common vendors
  • Baseline test manifests regenerated

Additional Notes

This PR should be merged before the corresponding agent PR. Collection is opt-in — both the Helm value and the agent-side flags must be enabled.

Related PRs

Repo PR Purpose
DataDog/datadog-agent DataDog/datadog-agent#48966 Agent collection (merge AFTER)
DataDog/dd-go DataDog/dd-go#230589 Backend allowlist (deploy FIRST)
DataDog/datadog-operator DataDog/datadog-operator#2874 Operator RBAC

…ler CRDs

Add list/watch RBAC rules for 15 new API groups needed by the orchestrator
explorer to collect network topology CRDs for internet-reachability analysis.
Gated behind datadog.orchestratorExplorer.networkCRDs.enabled (default: true).

API groups: gateway.networking.k8s.io, networking.istio.io, gateway.envoyproxy.io,
traefik.containo.us, traefik.io, policy.linkerd.io, consul.hashicorp.com,
mesh.consul.hashicorp.com, kuma.io, k8s.nginx.org, configuration.konghq.com,
core.haproxy.org, ingress.v1.haproxy.org, ingress.v3.haproxy.org
@eliottness eliottness force-pushed the eliottness/ootb-crd-gateway-mesh-ingress branch from e0273ea to 8ea94a3 Compare April 7, 2026 16:49
@eliottness eliottness marked this pull request as ready for review April 7, 2026 19:35
@eliottness eliottness requested a review from a team as a code owner April 7, 2026 19:35
gh-worker-dd-mergequeue-cf854d bot pushed a commit to DataDog/datadog-agent that referenced this pull request Apr 9, 2026
…mesh, and ingress controllers (#48966)

### What does this PR do?

Adds 22 new builtin CRD entries to the orchestrator explorer so Cloud Security can determine internet-reachability paths for k8s workloads. Uses a hybrid collection strategy: resource-specific entries for high-volume vendors (Istio, NGINX, Traefik) and group-level entries for less common vendors.

Three new per-family config flags (all **opt-in, default: false**):
- `orchestrator_explorer.custom_resources.ootb.gateway_api`
- `orchestrator_explorer.custom_resources.ootb.service_mesh`
- `orchestrator_explorer.custom_resources.ootb.ingress_controllers`

**New families:**
- **Gateway API** (5 resource-specific): gateways, httproutes, grpcroutes, tlsroutes, listenersets
- **Service mesh — Istio** (5 resource-specific): virtualservices, gateways, destinationrules, serviceentries, sidecars (with v1beta1 fallback)
- **Service mesh — others** (6 group-level): Envoy Gateway, Traefik (legacy), Linkerd, Consul, Consul Mesh, Kuma
- **Ingress controllers — NGINX** (2 resource-specific): virtualservers, virtualserverroutes
- **Ingress controllers — Traefik** (1 resource-specific): ingressroutes
- **Ingress controllers — others** (3 group-level): Kong, HAProxy Core, HAProxy v1

### Motivation

Cloud Security needs to tell customers which container workloads are internet-reachable. Today, the agent collects standard Ingress and Service objects, covering ~16% of EKS customers. Over 36% use service meshes or non-standard ingress controllers whose exposure paths go through CRDs we don't collect.

RFC: https://datadoghq.atlassian.net/wiki/x/4IOyfAE
Technical implementation: https://datadoghq.atlassian.net/wiki/x/EgO6fAE

### Describe how you validated your changes

- All existing tests pass: `TestNewBuiltinCRDConfigs`, `TestImportBuiltinCollectors`, `TestGetDatadogCustomResourceCollectors`, `TestFilterCRCollectorsByPermission`
- New test `TestNewBuiltinCRDConfigsPerFamilyFlags` verifies each per-family flag independently disables its family, and the global OOTB flag disables everything
- Package compiles cleanly with `go build -tags "kubeapiserver orchestrator"`

### Additional Notes

**All three flags default to `false` (opt-in).** Collection is only activated when RBAC is granted (via helm/operator) and the corresponding flag is set to `true`.

**Merge order:** The backend allowlist PR (dd-go) must be deployed before this PR merges, otherwise collected CRs will be silently dropped.

- [ ] Backend allowlist deployed: DataDog/dd-go#230589
- [ ] Helm chart RBAC merged: DataDog/helm-charts#2541
- [ ] Operator RBAC merged: DataDog/datadog-operator#2874

## Related PRs

| Repo | PR | Purpose |
|------|----|---------|
| DataDog/dd-go | DataDog/dd-go#230589 | Backend allowlist (deploy FIRST) |
| DataDog/helm-charts | DataDog/helm-charts#2541 | Helm chart RBAC |
| DataDog/datadog-operator | DataDog/datadog-operator#2874 | Operator RBAC |

Co-authored-by: eliott.bouhana <eliott.bouhana@datadoghq.com>
- Add missing get verb to group-level RBAC rules (Envoy Gateway, Linkerd,
  Consul, Kuma, Kong, HAProxy)
- Add DD_ORCHESTRATOR_EXPLORER_CUSTOM_RESOURCES_OOTB_* env vars to the
  cluster agent deployment, gated by networkCRDs.enabled
@eliottness eliottness marked this pull request as draft April 10, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chart/datadog This issue or pull request is related to the datadog chart

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant