Skip to content

Commit de6a047

Browse files
authored
Document migration from ExtendedDaemonSet
Remove EDS from user-facing feature documentation and describe the supported upgrade sequence: migrate to a native DaemonSet on the last EDS-capable Operator release before upgrading.\n\nCONTP-1895
1 parent 14683fd commit de6a047

9 files changed

Lines changed: 48 additions & 13 deletions

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
> [!WARNING]
1313
> ⚠️ If you are upgrading to **Operator v1.22.0+** from **<v1.18.0** or you haven't migrated Daemonset `matchLabels`, see the [migration guide][19].
1414
15-
15+
> [!WARNING]
16+
> ExtendedDaemonSet support has been removed. Before upgrading from an EDS-capable Operator release, follow the [ExtendedDaemonSet migration guide][21].
1617
1718
The **Datadog Operator** aims to provide a new way of deploying the [Datadog Agent][1] on Kubernetes. Once deployed, the Datadog Operator provides:
1819

1920
- Agent configuration validation that limits configuration mistakes.
2021
- Orchestration of creating/updating Datadog Agent resources.
2122
- Reporting of Agent configuration status in its Kubernetes CRD resource.
22-
- Optionally, use of an advanced `DaemonSet` deployment by leveraging the [ExtendedDaemonSet][2].
2323
- Many other features to come :).
2424

2525
The **Datadog Operator** is [RedHat certified][10] and available on [operatorhub.io][11].
@@ -75,7 +75,6 @@ See the [deprecated configurations and migration guidelines][17] page.
7575
See the [How to Contribute page][9].
7676

7777
[1]: https://github.com/DataDog/datadog-agent/
78-
[2]: https://github.com/DataDog/extendeddaemonset
7978
[3]: https://github.com/DataDog/helm-charts/tree/main/charts/datadog
8079
[4]: https://github.com/DataDog/datadog-agent/tree/6.15.0/Dockerfiles/manifests
8180
[5]: https://github.com/DataDog/datadog-operator/blob/main/docs/getting_started.md
@@ -94,6 +93,7 @@ See the [How to Contribute page][9].
9493
[18]: https://github.com/DataDog/datadog-operator/blob/main/docs/datadog_agent_profiles.md
9594
[19]: https://github.com/DataDog/datadog-operator/blob/main/docs/agent_metadata_changes.md
9695
[20]: https://github.com/DataDog/datadog-operator/blob/main/docs/datadog_agent_internal.md
96+
[21]: https://github.com/DataDog/datadog-operator/blob/main/docs/extendeddaemonset_migration.md
9797

9898
## Release
9999

docs/data_collected.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ The OpenMetrics check is enabled by default through Autodiscovery annotations an
2727
- Create/Update/Delete Service <Namespace/Name>
2828
- Create/Update/Delete ConfigMap <Namespace/Name>
2929
- Create/Update/Delete DaemonSet <Namespace/Name>
30-
- Create/Update/Delete ExtendedDaemonSet <Namespace/Name>
3130
- Create/Update/Delete Deployment <Namespace/Name>
3231
- Create/Update/Delete ClusterRole </Name>
3332
- Create/Update/Delete Role <Namespace/Name>
@@ -40,4 +39,4 @@ The OpenMetrics check is enabled by default through Autodiscovery annotations an
4039
[1]: https://docs.datadoghq.com/containers/kubernetes/data_collected/
4140
[2]: https://docs.datadoghq.com/account_management/api-app-keys/
4241
[3]: https://docs.datadoghq.com/integrations/openmetrics/
43-
[4]: https://docs.datadoghq.com/containers/kubernetes/integrations/?tab=annotations
42+
[4]: https://docs.datadoghq.com/containers/kubernetes/integrations/?tab=annotations

docs/datadog_agent_profiles.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ The DAP spec has two main sections:
3434
* `profileAffinity` is used to target a subset of nodes. It accepts a list of [NodeSelectorRequirements](https://pkg.go.dev/k8s.io/api/core/v1#NodeSelectorRequirement).
3535
* `config` defines the configuration to override in the DDA. It follows the configuration formatting of the Operator's [DatadogAgentSpec](https://github.com/DataDog/datadog-operator/blob/98276c56ad824f81be6f75128d230d2c4eda4c0b/apis/datadoghq/v2alpha1/datadogagent_types.go#L28).
3636

37-
When a DAP is applied, the Operator creates a new DaemonSet for that profile using the same name as the DAP. Even if the Operator is configured to use ExtendedDaemonSets, it will still create DaemonSets for any DAPs. It will also create a DaemonSet (or an ExtendedDaemonSet, if enabled) for a default profile. The default profile uses the same name as the DDA and applies to all nodes that are not targeted by a DAP.
37+
When a DAP is applied, the Operator creates a new DaemonSet for that profile using the same name as the DAP. It also creates a DaemonSet for the default profile. The default profile uses the same name as the DDA and applies to all nodes that are not targeted by a DAP.
3838

3939
```console
4040
$ kubectl get ds
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Migrating from ExtendedDaemonSet
2+
3+
ExtendedDaemonSet support has been removed from the Datadog Operator. The
4+
Operator now deploys every node Agent with a native Kubernetes DaemonSet and no
5+
longer installs EDS API types, watches EDS resources, or accepts
6+
`--supportExtendedDaemonset` and `--eds*` flags.
7+
8+
Do not upgrade directly while the current Operator is managing an
9+
ExtendedDaemonSet. The new Operator does not read, migrate, or delete existing
10+
EDS resources.
11+
12+
## Upgrade procedure
13+
14+
1. While running the last EDS-capable Operator release, disable EDS by removing
15+
`--supportExtendedDaemonset=true` or setting it to `false`. Remove any
16+
`--eds*` options as well.
17+
2. Wait for that Operator release to migrate the node Agent to a native
18+
DaemonSet. Confirm the DaemonSet is fully ready:
19+
20+
```shell
21+
kubectl -n <agent-namespace> get daemonset
22+
kubectl -n <agent-namespace> rollout status daemonset/<agent-name>
23+
```
24+
25+
3. Confirm that no ExtendedDaemonSet or ExtendedDaemonSetReplicaSet remains in
26+
the Agent namespace. Do not remove the EDS controller or CRDs until the
27+
native DaemonSet is healthy.
28+
4. Upgrade the Datadog Operator and remove the obsolete EDS controller and CRDs
29+
if no other workload uses them.
30+
31+
Custom Operator Deployment manifests must not pass the removed EDS flags. Helm
32+
or OLM configuration that previously enabled EDS must be updated to render a
33+
DaemonSet-only Operator deployment before the upgrade.

docs/gke_autopilot/internal.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ DatadogAgentInternal
4848
-> build configured/enabled features and required components
4949
-> manage global and feature dependencies
5050
-> reconcile Deployment-backed components
51-
-> reconcile Node Agent DaemonSet or ExtendedDaemonSet
51+
-> reconcile Node Agent DaemonSet
5252
-> cleanup stale resources
5353
```
5454

docs/installation.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,15 @@ Other operator startup options can also be configured via environment variable:
192192
| DDGR requeue period | `--datadogGenericResourceRequeuePeriod` | `DD_GENERIC_RESOURCE_REQUEUE_PERIOD` | `60s` |
193193
| Controller revisions | `--createControllerRevisions` | `DD_CREATE_CONTROLLER_REVISIONS` | `false` |
194194

195-
ExtendedDaemonset options (`--supportExtendedDaemonset` and `--eds*`),
196-
the leader election toggle (`--enable-leader-election`), pprof (`--pprof`),
195+
The leader election toggle (`--enable-leader-election`), pprof (`--pprof`),
197196
log options (`--loglevel`, `--logEncoder`), secret backend options
198197
(`--secretBackend*`, `--secretRefreshInterval`), and `--version` are only
199198
configurable using CLI flags in the shipped manifests.
200199

200+
ExtendedDaemonSet flags were removed. If they are present in a custom
201+
Deployment manifest, remove them before upgrading. See the
202+
[ExtendedDaemonSet migration guide](extendeddaemonset_migration.md).
203+
201204
Boolean values follow Go's [`strconv.ParseBool`](https://pkg.go.dev/strconv#ParseBool):
202205
`true`, `True`, `TRUE`, `1` or `false`, `False`, `FALSE`, `0`. The strings
203206
`yes` and `no` are **not** accepted and are logged as errors, leaving the

docs/introspection.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ override:
101101

102102
### Operator v1.4.0 <= x < v1.6.0
103103

104-
1. Upgrade to Operator v1.4.0+ **without** enabling introspection. The Operator should label the existing node Agent DaemonSet or ExtendedDaemonSet with the label `agent.datadoghq.com/provider=""`.
105-
2. Enable introspection in the Operator following the instructions above. The Operator should delete the unused node Agent DaemonSet or ExtendedDaemonSet.
104+
1. Upgrade to Operator v1.4.0+ **without** enabling introspection. The Operator should label the existing node Agent workload with the label `agent.datadoghq.com/provider=""`.
105+
2. Enable introspection in the Operator following the instructions above. The Operator should delete the unused node Agent workload.
106106

107107
### Operator v1.6.0+
108108

docs/untaint_controller.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ env:
101101

102102
When `--untaintControllerEnabled` is enabled, the operator injects a toleration for
103103
`agent.datadoghq.com/not-ready=presence:NoSchedule` into the node Agent
104-
DaemonSet (or ExtendedDaemonSet) pod template, unless an equivalent toleration
104+
DaemonSet pod template, unless an equivalent toleration
105105
is already present. When **`--untaintControllerWaitForCSIDriver`** is also true **and**
106106
the DatadogCSIDriver controller is running (`--datadogCSIDriverEnabled=true`), the same
107107
toleration is injected into the **Datadog CSI node-server** DaemonSet pod

hack/update-golang.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ for file in $go_mod_files; do
121121
done
122122

123123
# api/go.mod stays at initial patch release for the minor Go version: it is a types-only CRD module imported by
124-
# external projects (Agent, EDS, dd-source autoscaling, ...). A stricter `go`
124+
# external projects (Agent, dd-source autoscaling, ...). A stricter `go`
125125
# directive would force consumers off Go n-1 for no real benefit since the
126126
# module ships no runtime code that could trigger stdlib CVEs.
127127
api_go_mod="$ROOT/api/go.mod"

0 commit comments

Comments
 (0)