#!/bin/bash # Phase 0 — Read-only reconciliation of three ownership ambiguities # Safe to run; only queries, no mutations set -e cd "$(dirname "$0")/.." echo "=== Phase 0: Cluster Reconciliation ===" echo "" # Ambiguity 1: minio (storage) — standalone chart vs. Operator Tenant echo "--- Ambiguity 1: minio (storage) ownership ---" echo "Helm releases in 'storage' namespace:" helm list -n storage || echo " (helm list failed)" echo "" echo "MinIO Operator Tenants in 'storage' namespace:" kubectl get tenant -n storage -o wide 2>/dev/null || echo " (no Tenant CRD or none found)" echo "" echo "PVCs in 'storage' namespace:" kubectl get pvc -n storage -o wide || echo " (kubectl failed)" echo "" # Ambiguity 2: kmsvc-redis — helmfile release vs. ArgoCD Application echo "--- Ambiguity 2: kmsvc-redis ownership ---" echo "ArgoCD Applications containing 'redis':" argocd app list | grep redis || echo " (no match or argocd unavailable)" echo "" echo "Helm releases in 'sqs' namespace:" helm list -n sqs | grep redis || echo " (no redis release)" echo "" echo "Redis-related PVCs in 'sqs' namespace:" kubectl get pvc -n sqs -o wide | grep -i redis || echo " (no redis PVC)" echo "" # Ambiguity 3: forgejo-runner — helm chart vs. raw manifest echo "--- Ambiguity 3: forgejo-runner ownership ---" echo "Helm releases in 'cicd' namespace containing 'runner':" helm list -n cicd | grep runner || echo " (no runner release)" echo "" echo "Deployments in 'cicd' namespace with label app=forgejo-runner:" kubectl get deploy -n cicd -l app=forgejo-runner -o wide || echo " (no matching deployment)" echo "" echo "Checking managedFields on any forgejo-runner Deployment (to identify controller):" kubectl get deploy -n cicd -l app=forgejo-runner -o json 2>/dev/null | jq '.items[0].metadata.managedFields' 2>/dev/null || echo " (no deployment found)" echo "" echo "PVCs in 'cicd' namespace named runner-*:" kubectl get pvc -n cicd -o wide | grep runner || echo " (no runner PVC)" echo "" echo "=== Phase 0 Complete ===" echo "Review the output above. Determine which of the three ambiguities are resolved:" echo " 1. minio(storage): Is Helm release or Tenant CR authoritative? (helm list vs kubectl get tenant)" echo " 2. kmsvc-redis: Is helmfile or ArgoCD Application active? (argocd app list vs helm list)" echo " 3. forgejo-runner: Is Helm chart or raw manifest applied? (helm list vs kubectl get deploy managedFields)" echo "" echo "Document your findings. Proceed to Phase 1 (StorageClass import) only after clarity."