chore(migrate): refine Radarr migration procedure

This commit is contained in:
2026-10-18 14:57:07 +02:00
parent 802f87c110
commit 65086ea6a6
+29 -65
View File
@@ -53,88 +53,52 @@ kubectl get node vmserver | grep -q "Ready" || {
} }
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# STAP 2: K8S RESOURCES AANMAKEN (NAMESPACE & PVC) # STAP 2: OPHALEN VAN HET PV PAD
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
log_step "2. Namespace en PVC aanmaken in Kubernetes..." log_step "2. Detecteren van het actieve PV-pad voor radarr-config..."
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" RADARR_PV=$(kubectl get pv -o jsonpath='{range .items[?(@.spec.claimRef.name=="radarr-config")]}{.spec.hostPath.path}{end}')
kubectl apply -k "${SCRIPT_DIR}/k8s/"
log_info "Wachten tot PVC radarr-config gebonden is..." if [ -z "$RADARR_PV" ]; then
# local-path gebruikt WaitForFirstConsumer, dus de PV wordt provisioned zodra de pod start, log_err "Geen PersistentVolume gevonden voor claim 'radarr-config' in namespace '$HTPC_NS'!"
# of we triggeren de volume creatie. exit 1
fi
log_info "Gevonden PV pad: $RADARR_PV"
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# STAP 3: STANDALONE RADARR SERVICE STOPPEN & DATA SYNCHRONISEREN # STAP 3: STANDALONE RADARR SERVICE STOPPEN & POD SCHALEN NAAR 0
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
log_step "3. Standalone radarr.service stoppen om database te bevriezen..." log_step "3. Standalone radarr.service stoppen om database te bevriezen..."
ssh -t "${SSH_USER}@${CLUSTER_HOST}" "sudo systemctl stop radarr" ssh -t "${SSH_USER}@${CLUSTER_HOST}" "sudo systemctl stop radarr && sudo systemctl disable radarr"
log_info "Standalone radarr.service uitschakelen (disable)..." log_info "Kubernetes radarr pod tijdelijk naar 0 schalen voor data-overdracht..."
ssh -t "${SSH_USER}@${CLUSTER_HOST}" "sudo systemctl disable radarr" kubectl scale deployment/radarr -n "${HTPC_NS}" --replicas=0
kubectl wait --for=delete pod -l app=radarr -n "${HTPC_NS}" --timeout=60s 2>/dev/null || true
# We starten tijdelijk een data-sync helper pod of wachten op pod creatie
log_step "4. Wachten tot Radarr Pod scheduled wordt en PV beschikbaar is..."
# Schaal deployment tijdelijk naar 0 als het draait zodat we veilig kunnen syncen
kubectl scale deployment/radarr -n "${HTPC_NS}" --replicas=0 2>/dev/null || true
# Start een lightweight helper pod om het volume te mounten en binden
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: radarr-data-migrator
namespace: ${HTPC_NS}
spec:
nodeSelector:
kubernetes.io/hostname: vmserver
containers:
- name: helper
image: busybox
command: ["sh", "-c", "sleep 3600"]
volumeMounts:
- name: config
mountPath: /config
volumes:
- name: config
persistentVolumeClaim:
claimName: radarr-config
EOF
log_info "Wachten tot helper pod draait..."
kubectl wait --for=condition=Ready pod/radarr-data-migrator -n "${HTPC_NS}" --timeout=60s
log_step "5. Data overzetten van /storage/var/lib/radarr naar K8s volume..."
ssh -t "${SSH_USER}@${CLUSTER_HOST}" '
RADARR_PV=$(kubectl get pv -o jsonpath="{range .items[?(@.spec.claimRef.name==\"radarr-config\")]}{.spec.hostPath.path}{end}")
if [ -z "$RADARR_PV" ] || [ ! -d "$RADARR_PV" ]; then
echo "FOUT: Kon PV pad niet vinden!"
exit 1
fi
echo "Gevonden PV pad: $RADARR_PV"
echo "Kopiëren van bestaande Radarr configuratie en database..."
sudo cp -a /storage/var/lib/radarr/* "$RADARR_PV/"
sudo chown -R 33:33 "$RADARR_PV"
echo "Data overdracht voltooid."
'
log_info "Helper pod opruimen..."
kubectl delete pod radarr-data-migrator -n "${HTPC_NS}" --grace-period=0 --force 2>/dev/null || true
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# STAP 6: RADARR K8S DEPLOYMENT STARTEN # STAP 4: DATA KOPIËREN NAAR K8S VOLUME
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
log_step "6. Radarr deployment starten en schalen naar 1 replica..." log_step "4. Data overzetten van /storage/var/lib/radarr naar $RADARR_PV..."
ssh -t "${SSH_USER}@${CLUSTER_HOST}" "
echo 'Kopiëren van bestaande configuratie, database en covers...'
sudo cp -a /storage/var/lib/radarr/* '$RADARR_PV/'
sudo chown -R 33:33 '$RADARR_PV'
echo 'Data overdracht voltooid.'
"
# ------------------------------------------------------------------------------
# STAP 5: RADARR K8S DEPLOYMENT HERSTARTEN
# ------------------------------------------------------------------------------
log_step "5. Radarr deployment starten en schalen naar 1 replica..."
kubectl scale deployment/radarr -n "${HTPC_NS}" --replicas=1 kubectl scale deployment/radarr -n "${HTPC_NS}" --replicas=1
log_info "Wachten op succesvolle uitrol van Radarr pod..." log_info "Wachten op succesvolle uitrol van Radarr pod..."
kubectl rollout status deployment/radarr -n "${HTPC_NS}" --timeout=120s kubectl rollout status deployment/radarr -n "${HTPC_NS}" --timeout=120s
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# STAP 7: VERIFICATIE # STAP 6: VERIFICATIE
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
log_step "7. Verificatie van Radarr endpoints..." log_step "6. Verificatie van Radarr endpoints..."
sleep 5 sleep 3
log_info "Lokale ping testen via host..." log_info "Lokale ping testen via host..."
ssh -o BatchMode=yes "${SSH_USER}@${CLUSTER_HOST}" "curl -I -s http://127.0.0.1:7878/radarr/ping" | head -n 1 ssh -o BatchMode=yes "${SSH_USER}@${CLUSTER_HOST}" "curl -I -s http://127.0.0.1:7878/radarr/ping" | head -n 1