Verify Moodle Longhorn Migration State¶
- Purpose: Confirm that Moodle is now running on the Longhorn-backed storage posture and that the backup path remains healthy.
- Trigger: Pre-demo validation, post-change validation, or routine operator confirmation before relying on the migrated Moodle storage lane.
- Impact: Proves the current PVC, workload, ingress, Longhorn volume, and GCS backup target without exposing application data.
- Severity: P2
- Rollback strategy: This is a verification runbook only. If the lane is unhealthy, stop downstream rollout and reconcile the Moodle workload, Longhorn resources, or backup target first.
Preconditions¶
- the on-prem RKE2 cluster is reachable
- Longhorn is already installed on that cluster
- do not print database or secret payload material during verification
Verify current workload state¶
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl -n moodle get pvc,deploy,pods
Expected:
education-moodle-dataisBound- the storage class is
longhorn-moodle - the deployment
education-moodleis available - the running Moodle pod is
Running
Verify ingress and login behaviour¶
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl -n moodle get ingress,svc
curl -fsSI https://learn-lms.hybridops.tech/login/index.php
Expected:
- ingress
education-moodlepublisheslearn-lms.hybridops.tech - the service is present in the
moodlenamespace - the login endpoint responds with
HTTP/2 303 - the redirect points into the Moodle authentication flow
Verify GitOps and Longhorn storage posture¶
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl -n argocd get applications | rg 'moodle|longhorn|education|learn'
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl get storageclass longhorn-moodle -o yaml | sed -n '1,120p'
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl -n longhorn-system get volume.longhorn.io pvc-cbee0cba-37d7-43a0-b4da-1de099111624 -o wide
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/rke2.yaml" \
kubectl -n longhorn-system get backupvolumes,backuptargets
Expected:
education-moodleandplatform-longhornareSyncedandHealthy- storage class
longhorn-moodlepublishesbackupTargetName: default - the Longhorn volume is
attachedandhealthy - the backup target is
available - the active backup volume for the Moodle PVC is present
Verify recorded backup observation and backup bucket¶
hyops show module platform/k8s/longhorn-dr-volume#longhorn_dr_observe_smoke --env dev
hyops show module org/gcp/object-repo#longhorn_backups --env dev
Expected:
platform/k8s/longhorn-dr-volume#longhorn_dr_observe_smokeisstatus=okbackup_state: Completed- the observed source PVC is
education-moodle-data - the backup URL points at
hyops-dev-longhorn-backups-gcp03-a1 org/gcp/object-repo#longhorn_backupsisstatus=ok- the bucket name
hyops-dev-longhorn-backups-gcp03-a1is published