From 2e8546d02e06737cf163346123ae37fea9f9e117 Mon Sep 17 00:00:00 2001 From: Badre Tejado-Imam Date: Mon, 9 Nov 2026 12:06:47 -0500 Subject: [PATCH 1/2] docs: add v1.1.0 changelog entries Add the v1.1.0 release notes section to CHANGELOG.md, covering the configurable pod scheduling feature (#1723) and bug fixes for the stuck Terminating shared PVC (#1725), default NetworkPolicy console ingress for WebTerminal (#1724), deny-all NetworkPolicy preservation (#1721), and init container imagePullPolicy defaulting (#1692). Assisted-by: Claude Opus 4.8 Co-Authored-By: Claude Opus 4.8 Signed-off-by: Badre Tejado-Imam --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bb7591ca..02cdac197 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # DevWorkspace Operator Changelog +# v1.1.0 + +## Features + +### Configurable pod scheduling for workspaces and operator-managed jobs [#1723](https://github.com/devfile/devworkspace-operator/pull/1723) + +Adds `podAffinity`, `podAntiAffinity`, and `topologySpreadConstraints` fields to `config.workspace` in `DevWorkspaceOperatorConfig`. These scheduling constraints are applied to all pods the operator creates for a DevWorkspace: workspace pods, PVC cleanup Jobs, and backup Jobs (workspace restore is covered implicitly, as it runs as an init container in the workspace pod). Settings can be defined globally or overridden per workspace. + +```yaml +apiVersion: controller.devfile.io/v1alpha1 +kind: DevWorkspaceOperatorConfig +metadata: + name: devworkspace-operator-config + namespace: $OPERATOR_INSTALL_NAMESPACE +config: + workspace: + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: ScheduleAnyway + podAntiAffinity: {} + podAffinity: {} +``` + +## Bug Fixes & Improvements + +- Prevent the shared `claim-devworkspace` PVC from getting stuck in `Terminating` when multiple workspaces are deleted at roughly the same time on Kubernetes >= 1.33 [#1725](https://github.com/devfile/devworkspace-operator/pull/1725). Note: this does not automatically unblock PVCs that are already stuck in `Terminating`; see the PR for recovery steps. +- Allow the OpenShift console namespace through the default workspace `NetworkPolicy`, so WebTerminal connections work when NetworkPolicy provisioning is enabled [#1724](https://github.com/devfile/devworkspace-operator/pull/1724) +- Preserve explicitly empty `ingress`/`egress` lists (deny-all) in `NetworkPolicyConfig` instead of falling back to default allow rules, and stop `GetDefaultNetworkPolicy` from mutating or sharing the operator's default rule objects [#1721](https://github.com/devfile/devworkspace-operator/pull/1721) +- Default the `imagePullPolicy` for operator-managed init containers (project-clone and DWOC-defined init containers) to `IfNotPresent` instead of `Always`; the global `workspace.imagePullPolicy` for user/devfile containers is unchanged [#1692](https://github.com/devfile/devworkspace-operator/pull/1692) + # v1.0.0 ## Features From c1464a7947188bfe0a0c02d74e5d476786c6f090 Mon Sep 17 00:00:00 2001 From: Badre Tejado-Imam Date: Mon, 9 Nov 2026 14:30:16 -0500 Subject: [PATCH 2/2] docs: add labelSelector to topology spread example Address review feedback: a topologySpreadConstraints entry with no labelSelector matches no pods, so the example would not actually spread workspace pods. Use the real workspace label (controller.devfile.io/devworkspace_id) so the example is valid and useful. Assisted-by: Claude Opus 4.8 Co-Authored-By: Claude Opus 4.8 Signed-off-by: Badre Tejado-Imam --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02cdac197..e2402f14e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ config: - maxSkew: 1 topologyKey: kubernetes.io/hostname whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchExpressions: + - key: controller.devfile.io/devworkspace_id + operator: Exists podAntiAffinity: {} podAffinity: {} ```