You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
How to migrate from the deprecated `TemporalWorkerDeployment` and `TemporalConnection` CRDs to the new `WorkerDeployment` and `Connection` CRDs introduced in Chart Version v0.27.0 / App Version v1.7.0. Includes zero-downtime step-by-step migration instructions.
33
+
How to migrate from the deprecated `TemporalWorkerDeployment` and `TemporalConnection` CRDs to the new `WorkerDeployment` and `Connection` CRDs introduced in Chart Version v0.27.0 / App Version v1.7.0.
34
34
35
35
### [Migration Guide](migration-to-versioned.md)
36
36
Comprehensive guide for migrating from existing unversioned worker deployment systems to the Temporal Worker Controller. Includes step-by-step instructions, configuration mapping, and common patterns.
Copy file name to clipboardExpand all lines: docs/migration-crd-rename.md
+43-40Lines changed: 43 additions & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,47 +15,10 @@ In App Version v1.7, the old CRD kinds are **not actively managed**: new objects
15
15
The `Temporal` prefix was redundant — all resources in the `temporal.io` API group are already scoped to Temporal. The shorter names are consistent with Kubernetes naming conventions and reduce verbosity in manifests and CLI commands.
16
16
After this release, the Worker Controller will be Generally Available (GA), which means no more breaking changes will be introduced. We wanted to make this transition before GA, and make it as clean as possible.
17
17
18
-
## What happens to deprecated resources in App Version v1.7?
19
-
Existing `TemporalWorkerDeployment` and `TemporalConnection` objects remain in your cluster but are no longer reconciled against Temporal server state. The controller will not manage worker versions, route traffic, or connect to Temporal on behalf of these resources. New resources of these kinds cannot be created.
20
-
21
-
The deprecated resources will have a `Ready=False` status condition set by a migration helper controller. The condition progresses through three states:
22
-
23
-
**Before migration** — if no `WorkerDeployment` with the same name exists:
24
-
```
25
-
Ready=False reason=Deprecated
26
-
message: "TemporalWorkerDeployment is deprecated. Create a WorkerDeployment with the same name and spec to migrate."
27
-
```
28
-
29
-
**Migration in progress** — a `WorkerDeployment` with the same name exists, and the controller is transferring ownership of child `Deployments` and `WorkerResourceTemplates` from the old owner to the new one:
30
-
```
31
-
Ready=False reason=WorkerDeploymentExists
32
-
message: "A WorkerDeployment with the same name exists. Migration is in progress."
33
-
```
34
-
35
-
**Migration complete** — ownership transfer is done (the controller labels the `TemporalWorkerDeployment` with `temporal.io/migrated-to-wd: "true"` once all child resources have been re-owned):
36
-
```
37
-
Ready=False reason=MigratedToWorkerDeployment
38
-
message: "Migration complete. Delete this TemporalWorkerDeployment."
39
-
```
40
-
41
-
For `TemporalConnection`, the same `Deprecated` → `MigratedToConnection` pattern applies (there is no ownership transfer step, so there is no intermediate state).
42
-
43
-
## Deletion protection
44
-
45
-
After upgrading to v1.7, the controller adds a `temporal.io/migration-guard` finalizer to every `TemporalWorkerDeployment` and `TemporalConnection`. This finalizer prevents the resource from being fully deleted until migration is confirmed:
46
-
47
-
- A `TemporalWorkerDeployment` can only be deleted once the controller has labeled it `temporal.io/migrated-to-wd: "true"` (set automatically after ownership transfer completes).
48
-
- A `TemporalConnection` can only be deleted once a `Connection` with the same name exists.
49
-
50
-
If you delete a deprecated resource before creating its replacement, the resource will enter `Terminating` state and remain there until you create the new resource. Once the matching `WorkerDeployment` or `Connection` is created and migration is confirmed, the finalizer is removed and deletion completes automatically. The condition during this wait will be:
51
-
52
-
```
53
-
Ready=False reason=DeletingPendingMigration
54
-
message: "This TemporalWorkerDeployment is marked for deletion. Create a WorkerDeployment with the same name and spec to complete migration; deletion will proceed automatically once migration is confirmed."
55
-
```
56
-
57
18
## Migration steps
58
19
20
+
> **Dev / non-production environments:** If you don't need to preserve any worker state, the simplest path is to delete all your `TemporalWorkerDeployment` and `TemporalConnection` resources while the v1.6 controller is still running. At that point no migration-guard finalizer has been added yet, so deletion completes after the v1.6 finalizer completes. Note that all related Worker Deployment state in the Temporal server will also be deleted. Then upgrade the controller and create fresh `WorkerDeployment` and `Connection` resources.
When the v1.7 controller starts, it adds the `temporal.io/migration-guard` finalizer to all existing `TemporalWorkerDeployment` and `TemporalConnection` resources.
42
+
When the v1.7 controller starts, it adds the `temporal.io/migration-guard` finalizer to all existing `TemporalWorkerDeployment` and `TemporalConnection` resources. See [Deletion protection](#deletion-protection) for what this means.
80
43
81
44
### Step 3: Migrate your resources
82
45
@@ -116,3 +79,43 @@ spec:
116
79
### Step 5: Update tooling and scripts
117
80
118
81
Update any scripts, CI/CD pipelines, runbooks, monitoring alerts, or other tooling that references the old CRD kind names (`TemporalWorkerDeployment`, `TemporalConnection`) or their short names (`twd`, `tconn`).
82
+
83
+
## What happens to deprecated resources in App Version v1.7?
84
+
85
+
Existing `TemporalWorkerDeployment` and `TemporalConnection` objects remain in your cluster but are no longer reconciled against Temporal server state. The controller will not manage worker versions, route traffic, or connect to Temporal on behalf of these resources. New resources of these kinds cannot be created.
86
+
87
+
The deprecated resources will have a `Ready=False` status condition set by a migration helper controller. The condition progresses through three states:
88
+
89
+
**Before migration** — if no `WorkerDeployment` with the same name exists:
90
+
```
91
+
Ready=False reason=Deprecated
92
+
message: "TemporalWorkerDeployment is deprecated. Create a WorkerDeployment with the same name and spec to migrate."
93
+
```
94
+
95
+
**Migration in progress** — a `WorkerDeployment` with the same name exists, and the controller is transferring ownership of child `Deployments` and `WorkerResourceTemplates` from the old owner to the new one:
96
+
```
97
+
Ready=False reason=WorkerDeploymentExists
98
+
message: "A WorkerDeployment with the same name exists. Migration is in progress."
99
+
```
100
+
101
+
**Migration complete** — ownership transfer is done (the controller labels the `TemporalWorkerDeployment` with `temporal.io/migrated-to-wd: "true"` once all child resources have been re-owned):
102
+
```
103
+
Ready=False reason=MigratedToWorkerDeployment
104
+
message: "Migration complete. Delete this TemporalWorkerDeployment."
105
+
```
106
+
107
+
For `TemporalConnection`, the same `Deprecated` → `MigratedToConnection` pattern applies (there is no ownership transfer step, so there is no intermediate state).
108
+
109
+
## Deletion protection
110
+
111
+
After upgrading to v1.7, the controller adds a `temporal.io/migration-guard` finalizer to every `TemporalWorkerDeployment` and `TemporalConnection`. This finalizer prevents the resource from being fully deleted until migration is confirmed:
112
+
113
+
- A `TemporalWorkerDeployment` can only be deleted once the controller has labeled it `temporal.io/migrated-to-wd: "true"` (set automatically after ownership transfer completes).
114
+
- A `TemporalConnection` can only be deleted once a `Connection` with the same name exists.
115
+
116
+
If you delete a deprecated resource before creating its replacement, the resource will enter `Terminating` state and remain there until you create the new resource. Once the matching `WorkerDeployment` or `Connection` is created and migration is confirmed, the finalizer is removed and deletion completes automatically. The condition during this wait will be:
117
+
118
+
```
119
+
Ready=False reason=DeletingPendingMigration
120
+
message: "This TemporalWorkerDeployment is marked for deletion. Create a WorkerDeployment with the same name and spec to complete migration; deletion will proceed automatically once migration is confirmed."
0 commit comments