Skip to main content

Your first mirror and analysis

This walks you from an empty cluster to a live mirror, then to an upgrade verdict. The operator installs its own CRDs at startup, so a plain Helm install is all you need.

1. Install the operator​

helm install mirops oci://ghcr.io/miropshq/charts/mirops \
--namespace mirops --create-namespace --version 0.2.0

Wait for it to be ready:

kubectl -n mirops rollout status deploy/mirops-controller-manager

See Deploy with Helm for cloud credentials, PVC reports, and image options.

2. Create your ClusterMirror​

The chart creates no mirror — nothing is mirrored until you create one. ClusterMirror is cluster-scoped, so it has no namespace, and every field has a default:

kubectl apply -f - <<'YAML'
apiVersion: mirops.mirops.io/v1
kind: ClusterMirror
metadata:
name: default
spec:
refresh:
interval: 5m
YAML

You can also create it from the Web UI: Mirops → Cluster Mirror → New mirror.

3. See the cluster's current risk​

kubectl get clustermirror
# NAME COMPONENTS EDGES AT RISK LAST SYNC AGE
# default 184 297 3 30s 1h

kubectl get clustermirror default -o jsonpath='{.status.byNamespace}'

AT RISK counts components with risk 50 or higher — something down, pending or lost, or something that depends on it. The full picture is in the report (default.mirops) and the Web UI's Cluster Mirror page. See Create a ClusterMirror for scope, refresh, and where the report is written.

4. Analyse an upgrade (optional)​

Upgrade analysis is off by default. Turn it on:

helm upgrade mirops oci://ghcr.io/miropshq/charts/mirops --namespace mirops \
--reuse-values --set upgrade.enabled=true

Then create an UpgradeAnalysis — also cluster-scoped. The only required field is targetVersion, which must be higher than the cluster's version:

kubectl apply -f - <<'YAML'
apiVersion: mirops.mirops.io/v1
kind: UpgradeAnalysis
metadata:
name: to-1-35
spec:
targetVersion: "1.35" # the only required field
YAML

Everything else defaults: scoring production, scope all, report file, AI off.

5. Read the verdict​

kubectl get upgradeanalysis to-1-35
kubectl describe upgradeanalysis to-1-35

The status carries the verdict:

status:
decision: WARNING # SAFE | WARNING | CRITICAL | ERROR
totalScore: 82
reason: "2 pod(s) not ready: ..."
  • SAFE — ready to upgrade.
  • WARNING — attention needed, but no hard blocker.
  • CRITICAL — a blocker prevents the upgrade; describe lists every one.

What next​

  • See it visually — install the Web UI to explore the mirror, the graph, and the verdict.
  • Use it in a pipeline — the CLI shows a namespace's state and fails CI when the upgrade isn't safe.
  • Understand the verdict — read readiness vs. decision.