# ================================ # DATABASUS - ONE-TIME MIGRATION JOB # Copies data from old local PVC → new ceph PVC # # Steps: # 1. Scale down databasus deployment: # kubectl scale deployment databasus --replicas=0 # 2. Apply databasus-storage.yaml (creates new ceph PVC): # kubectl apply -f databasus-storage.yaml # 3. Apply this file: # kubectl apply -f databasus-migration-job.yaml # 4. Wait for job to complete: # kubectl wait --for=condition=complete job/databasus-migration --timeout=120s # 5. Verify data in new PVC: # kubectl logs job/databasus-migration # 6. Apply updated databasus.yaml (uses ceph PVC, drops local PV/PVC): # kubectl apply -f databasus.yaml # 7. Delete the old local PV and its PVC: # kubectl delete pvc databasus-pvc-local # kubectl delete pv databasus-pv # 8. Delete this job: # kubectl delete job databasus-migration # ================================ --- # Rename the old local PVC binding so both can coexist during migration. # Since the old PVC is named databasus-pvc, the new ceph one uses the same # name — so you must delete or rename the old one first, OR use this job # which mounts the old PV directly via a temporary PVC alias below. apiVersion: v1 kind: PersistentVolumeClaim metadata: name: databasus-pvc-local spec: accessModes: - ReadWriteOnce storageClassName: databasus-local-storage resources: requests: storage: 500Mi # Bind to the existing local PV explicitly volumeName: databasus-pv --- apiVersion: batch/v1 kind: Job metadata: name: databasus-migration spec: template: spec: nodeSelector: kubernetes.io/hostname: mist restartPolicy: Never containers: - name: migrate image: busybox command: - sh - -c - | echo "=== Starting migration ===" echo "Source contents:" ls -lah /old-data/ echo "" echo "Copying data..." cp -av /old-data/. /new-data/ echo "" echo "=== Migration complete ===" echo "New data contents:" ls -lah /new-data/ volumeMounts: - name: old-data mountPath: /old-data readOnly: true - name: new-data mountPath: /new-data volumes: - name: old-data persistentVolumeClaim: claimName: databasus-pvc-local - name: new-data persistentVolumeClaim: claimName: databasus-pvc