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
Controllers execute reconcile as a sequence of step functions (`func(ctx, log) (*Result, error)`). Steps are defined in `sync()` and executed sequentially.
124
+
`sync()` builds an ordered `[]ReconcileStep` (see `step.go`), executed by `RunSteps`. Each step's `Fn` is `func(ctx, log) (StepResult, error)`. `StepResult{RequeueAfter, Blocked}` controls flow: `Blocked=true` is a *valid wait* (e.g. version-probe Job not finished) — return it, not an error; it skips subsequent non-`Always` steps. Steps with `Always: true` run even while the pipeline is blocked. `RunSteps` returns the minimum `RequeueAfter`; the first error aborts.
123
125
124
126
### Resource Change Detection
125
127
Resources are tracked via annotation hashes (`checksum/spec`, `checksum/configuration`). Before updating a K8s resource, compare `util.DeepHashResource()` output against the stored annotation. Skip updates when hashes match. Always call `util.AddSpecHashToObject()` on reconciled resources.
| `Observe` (default) | Reconciliation is **blocked** until every required key is present. The operator reports each missing key — and the format hint for it — via the `ExternalSecretValid` status condition and a `Warning` event. |
390
+
| `Observe` (default) | Reconciliation is **blocked** until every required key is present. The operator reports each missing key — and the format hint for it — via the `ExternalSecretValid` condition (with reason `ExternalSecretInvalid`) and a `Warning` event. |
393
391
| `Manage` | The operator **generates** any missing required keys and writes them back to the same Secret. Useful for bootstrapping: create an empty Secret, let the operator fill it, then optionally tighten access. The operator still never deletes the Secret. |
394
392
395
393
<Note>
@@ -562,7 +560,7 @@ Two conditions surface the result of the probe and the upgrade check:
562
560
| Condition | Reason | Meaning |
563
561
|---|---|---|
564
562
| `VersionInSync` | `VersionMatch` | All replicas report the same version as the image |
565
-
| `VersionInSync` | `VersionMismatch` | Replicas are running different versions. This reason is suppressed during a planned rolling upgrade. It typically surfaces when a mutable image tag has been pinned (for example `latest` or a bare major like `26.3`) and the underlying registry has shifted between pulls, so different replicas ended up on different patches of the same tag. |
563
+
| `VersionInSync` | `VersionMismatch` | Replicas are running different versions. The warning event is suppressed during a planned rolling upgrade. It typically surfaces when a mutable image tag has been pinned (for example `latest` or a bare major like `26.3`) and the underlying registry has shifted between pulls, so different replicas ended up on different patches of the same tag. |
566
564
| `VersionInSync` | `VersionPending` | Version probe Job has not finished yet |
567
565
| `VersionInSync` | `VersionProbeFailed` | Probe Job failed; the operator cannot determine the running version |
568
566
| `VersionUpgraded` | `UpToDate` | The cluster is on the latest version available in the selected channel |
0 commit comments