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
fix(infrastructure): operator recovers kro helm release stuck in pending-* (#342)
* fix(infrastructure): operator recovers kro helm release stuck in pending-*
An interrupted helm operation (typically the operator pod killed mid-upgrade
during an image rollout) leaves the kro release in a pending-upgrade /
pending-install / pending-rollback state. Helm then refuses every subsequent
operation with "another operation (install/upgrade/rollback) is in progress",
and since nothing clears pending state, the operator's 2-minute retries wedge
permanently (KroReleased=False, HelmFailed) until a human runs helm rollback.
EnsureKroRelease now clears a wedged release before upgrading:
- pending-upgrade / pending-rollback → roll back to the newest deployed/
superseded revision (a known-good state exists);
- pending-install → uninstall the half-applied release (nothing to roll back
to) so the upgrade reinstalls cleanly.
The decision logic is a pure, unit-tested function (planRecovery). Also routed
all helm invocations through a shared runHelm helper that honors the in-cluster
runtime (empty kubeconfig → no KUBECONFIG override), fixing DeleteKroRelease
which previously always set KUBECONFIG even for the in-cluster case.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* remove old api references
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/infrastructure-architecture.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -418,7 +418,7 @@ Note what tenants and the portal know about: `Template`, `Redis`. Nothing in thi
418
418
|**B**| CachedResource publishing Templates | A tenant workspace with the APIBinding sees Templates as a read-only resource. `kubectl get templates -A` from a tenant returns the catalog. |
419
419
|**C**| kro backend + APIExport VW wiring | Backend interface implemented for kro. The platform binary starts the kro multicluster-runtime pointed at the provider's APIExport VW. A tenant applies a Redis CR; kro reconciles it in the management cluster within 10s; status syncs back; delete propagates. Orphan sweeper for deleted tenant workspaces in scope. |
420
420
|**D**| UI + MCP migration | Portal main app and dashboard tile read Templates + per-template CRs via GraphQL. MCP tools (`infrastructure__list_templates`, `__provision`, …) become kcp API calls. Old REST endpoints get a deprecation banner. |
421
-
|**E**| Cleanup | REST handlers gone. `tenantHash`, `kedge-tenants-*` convention, per-request header identity all gone. `make e2e-infrastructure` exercises only the kcp path. |
421
+
|**E**| Cleanup | REST handlers gone. `tenantHash`, `kedge-tenants-*` convention, per-request header identity all gone. The REST-surface e2e suite (`make e2e-infrastructure`) is removed; isolation is exercised via the kcp path. |
422
422
423
423
A through C land the new platform + the first backend (~2.5 weeks). D adds another week (mostly portal rewrites). E is a day of deletions.
0 commit comments