Skip to content

v0.1.0 — continuous Kubernetes upgrade readiness

Choose a tag to compare

@abd-ulbasit abd-ulbasit released this 11 Jun 01:57
c174c2b

upgradescope v0.1.0 — first release

Continuous Kubernetes upgrade-readiness scanning, self-hosted and Apache-2.0.

Highlights

  • upgradescope scan — point-in-time readiness scan of a live cluster or rendered manifests (--files). Table, JSON, and SARIF output; exit-code gate for CI (--fail-on). ~0.25s against a small cluster.
  • Continuous mode — read-only in-cluster agent maintains a ClusterReadiness CRD (kubectl get ucr) and pushes deduped snapshots to a self-hosted server (SQLite or Postgres): history, what-if (?target=), Slack/webhook alerts fired only on new blockers.
  • Fleet — cluster × target score matrix, per-team scores with server-side team mapping, per-cluster ingest tokens, auditor CSV/HTML exports.
  • CI gatePOST /api/v1/gate evaluates manifests inside a known cluster's context; composite GitHub Action included (action/).
  • Embedded web dashboard — fleet matrix, cluster drill-down, registry browser; single binary via go:embed.
  • Knowledge base — 160 API-lifecycle entries generated from upstream k8s.io/api source (covers removals beyond the human-written migration guide), 18-add-on EOL registry with required upstream citations, synced against endoflife.date weekly via CI.

Detection coverage

deprecated/removed API objects (probed at the deprecated endpoints), clients still calling deprecated APIs (apiserver_requested_deprecated_apis metric), add-on EOL (e.g. ingress-nginx, EOL since 2026-03-24), Helm chart ↔ K8s compatibility, kubelet/control-plane/kube-proxy version skew.

Score

score = max(0, 100 − min(75, 25×blockers) − min(20, 5×warnings)); ready = no blockers. Deterministic and documented.

Install

go install github.com/abd-ulbasit/upgradescope/cmd/upgradescope@v0.1.0
# or grab a binary below; Helm chart in deploy/chart

Known limitations

  • kubectl client skew is not detectable without apiserver audit logs (by design; documented).
  • Managed control planes (EKS/GKE/AKS) may block /metrics — the deprecated-callers signal degrades gracefully and is reported as "not assessed"; everything else works unchanged.
  • kind: List items are not expanded in --files mode.