87 lines
2.7 KiB
Bash
87 lines
2.7 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
log() {
|
||
|
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
error() {
|
||
|
|
log "ERROR: $*"
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
|
||
|
|
IMAGE_NAME="docker.io/library/crossplane-provider-proxmox"
|
||
|
|
IMAGE_TAR="/tmp/crossplane-cookie-fix.tar"
|
||
|
|
|
||
|
|
log "=========================================="
|
||
|
|
log "NUCLEAR IMAGE CLEANUP AND RE-IMPORT"
|
||
|
|
log "=========================================="
|
||
|
|
log ""
|
||
|
|
|
||
|
|
# 1. Remove ALL crossplane images by all possible references
|
||
|
|
log "Step 1: Removing ALL crossplane-provider-proxmox images..."
|
||
|
|
sudo ctr -n k8s.io images rm "${IMAGE_NAME}:latest" 2>/dev/null || log " (latest not found, continuing...)"
|
||
|
|
sudo ctr -n k8s.io images rm "${IMAGE_NAME}:v1.0.0-fixed" 2>/dev/null || log " (v1.0.0-fixed not found, continuing...)"
|
||
|
|
sudo ctr -n k8s.io images rm "sha256:5d83df9f8d127aa8988ace01254f4adbb6336f0ad59be8193349b3eacd972cfc" 2>/dev/null || log " (old image ID not found, continuing...)"
|
||
|
|
|
||
|
|
# 2. List and remove any remaining by name pattern
|
||
|
|
log ""
|
||
|
|
log "Step 2: Finding and removing any remaining images..."
|
||
|
|
REMAINING=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}" || true)
|
||
|
|
if [ -n "$REMAINING" ]; then
|
||
|
|
log " Found remaining images:"
|
||
|
|
echo "$REMAINING" | while read -r img; do
|
||
|
|
log " Removing: $img"
|
||
|
|
sudo ctr -n k8s.io images rm "$img" 2>/dev/null || true
|
||
|
|
done
|
||
|
|
else
|
||
|
|
log " No remaining images found (good!)"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 3. Verify cleanup
|
||
|
|
log ""
|
||
|
|
log "Step 3: Verifying cleanup..."
|
||
|
|
REMAINING_AFTER=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}" || true)
|
||
|
|
if [ -n "$REMAINING_AFTER" ]; then
|
||
|
|
error "Cleanup incomplete! Remaining images: $REMAINING_AFTER"
|
||
|
|
fi
|
||
|
|
log " ✅ All old images removed"
|
||
|
|
|
||
|
|
# 4. Import the fresh image
|
||
|
|
log ""
|
||
|
|
log "Step 4: Importing fresh image..."
|
||
|
|
if [ ! -f "${IMAGE_TAR}" ]; then
|
||
|
|
error "Image tar file not found at ${IMAGE_TAR}"
|
||
|
|
fi
|
||
|
|
sudo ctr -n k8s.io images import "${IMAGE_TAR}"
|
||
|
|
log " ✅ Image imported"
|
||
|
|
|
||
|
|
# 5. Verify import
|
||
|
|
log ""
|
||
|
|
log "Step 5: Verifying import..."
|
||
|
|
IMPORTED=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}:latest" || true)
|
||
|
|
if [ -z "$IMPORTED" ]; then
|
||
|
|
error "Image ${IMAGE_NAME}:latest not found after import!"
|
||
|
|
fi
|
||
|
|
log " ✅ Image verified: $IMPORTED"
|
||
|
|
|
||
|
|
# 6. Show final state
|
||
|
|
log ""
|
||
|
|
log "Step 6: Final image state:"
|
||
|
|
sudo ctr -n k8s.io images ls | grep "${IMAGE_NAME}" || error "No crossplane images found!"
|
||
|
|
|
||
|
|
log ""
|
||
|
|
log "=========================================="
|
||
|
|
log "CLEANUP COMPLETE"
|
||
|
|
log "=========================================="
|
||
|
|
log ""
|
||
|
|
log "Next steps:"
|
||
|
|
log " 1. Delete the deployment to force recreation:"
|
||
|
|
log " kubectl delete deployment crossplane-provider-proxmox -n crossplane-system"
|
||
|
|
log ""
|
||
|
|
log " 2. Reapply the provider:"
|
||
|
|
log " kubectl apply -f crossplane-provider-proxmox/config/provider.yaml"
|
||
|
|
log ""
|
||
|
|
log " 3. Wait for pod to be ready and verify fixes are active"
|
||
|
|
|