Skip to content

v0.4.4

Choose a tag to compare

@kylan11 kylan11 released this 14 Oct 09:21
· 13 commits to main since this release
7bae5f8

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: 1

During 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.4

Configure 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, version 0.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.