Skip to content

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-data is Bound
  • the storage class is longhorn-moodle
  • the deployment education-moodle is 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-moodle publishes learn-lms.hybridops.tech
  • the service is present in the moodle namespace
  • 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-moodle and platform-longhorn are Synced and Healthy
  • storage class longhorn-moodle publishes backupTargetName: default
  • the Longhorn volume is attached and healthy
  • 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_smoke is status=ok
  • backup_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_backups is status=ok
  • the bucket name hyops-dev-longhorn-backups-gcp03-a1 is published

References