Skip to main content
Version: 0.1 · v0.1.0

Operator

The operator is the engine. It's a Kubernetes controller (built with controller-runtime, Apache-2.0) that watches for UpgradeAnalysis resources, builds the logical mirror, computes the verdict, and publishes a report.

What it does​

  • Collects a cluster snapshot: workloads, nodes, storage, PDBs, add-ons, deprecated APIs.
  • Evaluates add-on compatibility against the target version using the embedded matrix.
  • Builds the dependency graph and propagates risk.
  • Scores readiness (Health · Capacity · Stability · Compatibility) and computes the deterministic verdict.
  • Publishes the verdict to the CR status and the full report to the configured destination.
  • Serves reports back over an in-cluster HTTP endpoint (reading remote destinations on demand).
  • Remediates — executes approved RemediationPlans.

Custom resources​

The operator defines two cluster-scoped CRDs and installs them itself at startup (embedded via go:embed) — no separate CRD apply step:

CRDPurpose
UpgradeAnalysisThe input: what to analyze and how. Its status holds the verdict.
RemediationPlanAI-proposed fixes, gated on approval.

See the full field reference in the CRD reference.

A minimal analysis​

apiVersion: mirops.mirops.io/v1
kind: UpgradeAnalysis
metadata:
name: to-1-34
spec:
targetVersion: "1.34" # the only required field

Configuration surface​

AreaFields
TargettargetVersion, scoringProfile
Scopescope.mode, scope.excludeNamespaces
Sourcesource.type (file / s3 / blob / pvc) + destination fields
AIai.enabled, ai.provider, ai.model, ai.maxTokens, ai.credentialsSecret, ai.remediation.*
Resyncresync.interval

Deterministic and reproducible​

The operator recomputes the same verdict for the same mirror. It reconciles on spec changes and on-demand refresh — not on its own status writes — so it doesn't loop, and (with AI on) it memoizes the result per unchanged snapshot to avoid redundant model calls.

Built with​

The operator is scaffolded with Kubebuilder and built on standard Kubernetes and cloud SDKs:

Tool / libraryVersion
Go1.24
Kubebuilder (project layout)4.10 · go.kubebuilder.io/v4
controller-runtimev0.22.4
controller-tools (controller-gen)v0.19.0
Kubernetes libraries (client-go / api)v0.34
AWS SDK for Go v2 (S3 reports)aws-sdk-go-v2 v1.41 · service/s3 v1.101
Azure SDK for Go (Blob reports)azidentity v1.13 · storage/azblob v1.6

Install​

Install with the Helm chart, or jump to your first analysis.