temporalio / temporalio/temporal-worker-controller
Expose Deployment rollingUpdate strategy (maxUnavailable/maxSurge) on TemporalWorkerDeployment
@jaypipes is already working on this.
Since Sep 17, 2026.
- Dominant language
- Go
- Stars
- 187
- Forks
- 70
- Avg merge
- 4d 1h
- Merged PRs (30d)
- 31
Description
Summary
The controller creates and manages the child Deployment for each worker version, but there's no way to configure that Deployment's rolling-update strategy. Since the controller never sets spec.strategy, owned Deployments fall back to the Kubernetes default (RollingUpdate, maxUnavailable/maxSurge 25%/25%). On large fleets this makes in-place rolling restarts of a Current version disruptive: up to ~25% of pods can go unavailable at once, which spikes schedule_to_start.
Users would like a field on the WorkerDeployment spec to set maxUnavailable/maxSurge, which the controller then applies to the Deployments it owns and reconciles.
Current behavior
TemporalWorkerDeploymentSpec exposes replicas, template, minReadySeconds, progressDeadlineSeconds, rollout, sunset, and workerOptions — there is no Deployment-level strategy field. rollout.strategy (Manual/AllAtOnce/Progressive) controls Temporal traffic routing across versions, not how pods roll within a single version's Deployment. The builder in internal/k8s/deployments.go doesn't set spec.strategy on the owned Deployment, so it inherits the cluster default of 25%/25%.
Why this matters
Users may periodically do in-place rolling restarts of Current workers with the same build ID (e.g. non-workflow config/bug-fix changes — the UnsafeCustomBuildID path, plus ordinary pod-template drift on the current version). In those cases the restart happens on the same Deployment, so its own strategy.rollingUpdate is the only thing governing availability. With 25% of a large fleet cycling at once, they lose enough pollers to build a backlog. They'd like to declare something conservative like maxUnavailable: 5% and have it stick.
Filing on behalf of a Temporal Cloud customer running large worker fleets in production.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.