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;describelists 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.