Repository navigation
v0.4.4
GitOps baseline capacity
Git can now supply desired capacity through Understudy.spec.baselineReplicas,
while Understudy manages the workload's effective replica count:
spec:
targetRef:
kind: Deployment # or Rollout
name: worker
baselineReplicas: 1During a disruption handover, Understudy preserves the captured baseline and
temporary surge. Capacity changes from Git remain pending; the latest request
converges when the handover completes, including scale-to-zero. The frozen
baseline remains the replacement readiness threshold throughout the handover.
status.baselineReplicas and the BaselineApplied condition expose applied and
pending capacity. An application release taking over a handover ends disruption
surging and holding while applying the latest desired baseline. Ordinary baseline
reconciliation continues during paused Rollout releases.
Argo CD must delegate the target's effective replica field and handover markers
using scoped ignoreDifferences plus RespectIgnoreDifferences=true, while
continuing to manage the Understudy baseline input. See the
complete configuration and lifecycle.
This is opt-in. Resources without baselineReplicas retain reactive-only
protection. Use one capacity writer per target; HPA/KEDA must not also manage
the same effective replica count under this contract.
Upgrade
Update the CRD explicitly before enabling the new field. Helm does not
upgrade CRDs in a chart's crds/ directory.
kubectl apply --server-side -f \
https://raw.githubusercontent.com/mitis-cloud/understudy/v0.4.4/charts/understudy/crds/apps.understudy.sh_understudies.yaml
helm upgrade understudy oci://ghcr.io/kylan11/charts/understudy \
--namespace understudy-system --version 0.4.4Configure the baseline input and Argo delegation together. The full
upgrade notes
describe the required order.
- Image:
ghcr.io/kylan11/understudy:0.4.4(linux/amd64,linux/arm64) - Helm chart:
oci://ghcr.io/kylan11/charts/understudy, version0.4.4 - API:
apps.understudy.sh/v1alpha1, with the v0.4.4 CRD schema
Verification
Build, lint, unit/envtest, Helm, and E2E CI pass. Live tests used Argo CD 3.5.5,
Argo Rollouts 1.10.1, and Kubernetes 1.36.4 in isolated Kind clusters.
Deployment, canary, and blue/green targets passed first install, unrelated
automatic sync during surge, repeated pending baseline updates, cold operator
restart and leadership recovery, eviction hold/release, final convergence,
steady scaling, HTTP serving, and release takeover. Blue/green also passed a
pending scale-to-zero followed by scale-up from Git. Automatic sync and self-heal
stayed enabled throughout.
The Argo test used its ordinary apply path. SSA and force/replace sync were not
exercised. Operator downtime retains the existing fail-open eviction behavior.
Delivered in PR #6.