Skip to content

Commit 2d6c83a

Browse files
haoqing0110claude
andauthored
docs: update ManifestWorkReplicaSet to document Applied condition requirement (#534)
🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Qing Hao <qhao@redhat.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 1b90c03 commit 2d6c83a

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

content/en/docs/concepts/work-distribution/manifestworkreplicaset.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -181,30 +181,38 @@ In the example above, the `placementRefs` references `placement-rollout-all` wit
181181

182182
## Rollout Mechanism
183183

184-
The `ManifestWorkReplicaSet` rollout process is based on the `Progressing` and `Degraded` conditions of each `ManifestWork`. These conditions are not built-in but must be defined using [Custom CEL Expressions](https://open-cluster-management.io/docs/concepts/work-distribution/manifestwork/#custom-cel-expressions) in the `manifestConfigs` section.
184+
The `ManifestWorkReplicaSet` rollout process is based on the `Applied`, `Progressing` and `Degraded` conditions of each `ManifestWork`. `Progressing` and `Degraded` conditions are not built-in but must be defined using [Custom CEL Expressions](https://open-cluster-management.io/docs/concepts/work-distribution/manifestwork/#custom-cel-expressions) in the `manifestConfigs` section.
185185

186186
### Condition Requirements
187187

188+
- **Applied condition (required)**: Indicates whether the ManifestWork has been successfully applied to the managed cluster by the work agent.
189+
- This is a **built-in condition** that is automatically set by the work agent.
190+
- The rollout controller checks this condition **first** to ensure the work has been properly applied before evaluating other conditions.
191+
- If the `Applied` condition is missing, has Status=False/Unknown, or has a stale ObservedGeneration, it will never proceed to the next cluster.
192+
- This ensures that rollout decisions are based on current status information, not stale data from previous generations.
193+
188194
- **Progressing condition (required)**: Tracks whether the ManifestWork is currently being applied to the cluster. The rollout controller uses this condition to determine if a cluster deployment is in progress or completed.
189195
- For rollout strategies `Progressive` and `ProgressivePerGroup`, this is a **required** condition to determine if the rollout can proceed to the next cluster.
190-
- When the `Progressing` condition is `False`, the deployment is considered complete and succeeded, and the rollout will continue to the next cluster based on `minSuccessTime`.
191-
- If this condition is not defined, the rollout will never proceed to the next cluster (it will remain stuck waiting for the condition).
196+
- When the `Progressing` condition is `False` (and `Applied` is ready), the deployment is considered complete and succeeded, and the rollout will continue to the next cluster based on `minSuccessTime`.
197+
- If this condition is not defined or has a stale ObservedGeneration, the rollout will never proceed to the next cluster.
192198

193-
- **Degraded condition (optional)**: Indicates if the ManifestWork has failed or encountered issues.
199+
- **Degraded condition (optional)**: Indicates if the ManifestWork has failed or encountered issues.
194200
- This is an **optional** condition used only to determine failure states.
195201
- If the `Degraded` condition status is `True`, the rollout may stop or count towards `maxFailures`.
196202
- If this condition is not defined, the workload is assumed to never be degraded.
203+
- If this condition exists but has a stale ObservedGeneration, the rollout will wait for it to catch up to avoid using stale status information.
197204

198205
**Rollout Status Determination:**
199206

200-
The rollout controller determines the status of each ManifestWork based on the combination of `Progressing` and `Degraded` condition values:
207+
The rollout controller determines the status of each ManifestWork based on the combination of `Applied`, `Progressing` and `Degraded` condition values:
201208

202-
| Progressing | Degraded | Rollout Status | Description |
203-
|-------------|----------|----------------|-------------|
204-
| `True` | `True` | **Failed** | Work is progressing but degraded |
205-
| `True` | `False` or not set | **Progressing** | Work is being applied and is healthy |
206-
| `False` | `False` or not set | **Succeeded** | Work has been successfully applied |
207-
| Unknown/Not set | Any | **Progressing** | Conservative fallback: treat as still progressing |
209+
| Applied | Progressing | Degraded | Rollout Status | Description |
210+
|---------|-------------|----------|----------------|-------------|
211+
| `False` | Any | Any | **ToApply** | Work has not been applied or condition is stale |
212+
| `True` | `True` | `True` | **Failed** | Work is progressing but degraded |
213+
| `True` | `True` | `False` or not set | **Progressing** | Work is being applied and is healthy |
214+
| `True` | `False` | `False` or not set | **Succeeded** | Work has been successfully applied |
215+
| `True` | Unknown/Not set | Any | **Progressing** | Conservative fallback: treat as still progressing |
208216

209217
### Example: Progressive Rollout with Custom Conditions
210218

0 commit comments

Comments
 (0)