77 lines
2.6 KiB
Bash
77 lines
2.6 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "=========================================="
|
||
|
|
echo "FIX CONTAINERD TAG - Force Latest to New Image"
|
||
|
|
echo "=========================================="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# The new image manifest digest
|
||
|
|
NEW_DIGEST="sha256:219e9651ca232b6320614f2f2289ba4c9bf8d29809a90319038a6390871a4c26"
|
||
|
|
IMAGE_NAME="docker.io/library/crossplane-provider-proxmox"
|
||
|
|
|
||
|
|
echo "Step 1: Listing all crossplane images..."
|
||
|
|
sudo ctr -n k8s.io images ls | grep crossplane-provider-proxmox || echo " (No images found)"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Step 2: Removing ALL crossplane-provider-proxmox images..."
|
||
|
|
ALL_IMAGES=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}" || true)
|
||
|
|
if [ -n "$ALL_IMAGES" ]; then
|
||
|
|
echo "$ALL_IMAGES" | while read -r img; do
|
||
|
|
echo " Removing: $img"
|
||
|
|
sudo ctr -n k8s.io images rm "$img" 2>/dev/null || true
|
||
|
|
done
|
||
|
|
echo " ✅ All images removed"
|
||
|
|
else
|
||
|
|
echo " (No images to remove)"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Step 3: Re-importing fresh image..."
|
||
|
|
if [ ! -f /tmp/crossplane-fresh-nuclear.tar ]; then
|
||
|
|
echo " ❌ ERROR: Image tar not found at /tmp/crossplane-fresh-nuclear.tar"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
sudo ctr -n k8s.io images import /tmp/crossplane-fresh-nuclear.tar
|
||
|
|
echo " ✅ Image imported"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Step 4: Verifying import and checking digest..."
|
||
|
|
IMPORTED=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}:latest" || true)
|
||
|
|
if [ -z "$IMPORTED" ]; then
|
||
|
|
echo " ❌ ERROR: Image ${IMAGE_NAME}:latest not found after import!"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
echo " ✅ Image found: $IMPORTED"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Step 5: Checking image digest..."
|
||
|
|
IMAGE_DIGEST=$(sudo ctr -n k8s.io images ls --format '{{.Target.Digest}}' | grep "${IMAGE_NAME}:latest" | head -1 || true)
|
||
|
|
if [ -n "$IMAGE_DIGEST" ]; then
|
||
|
|
echo " Image digest: $IMAGE_DIGEST"
|
||
|
|
if echo "$IMAGE_DIGEST" | grep -q "219e9651"; then
|
||
|
|
echo " ✅ Correct digest (new image)"
|
||
|
|
else
|
||
|
|
echo " ⚠️ Wrong digest - may still be old image"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo " ⚠️ Could not determine digest"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Step 6: Final image list:"
|
||
|
|
sudo ctr -n k8s.io images ls | grep crossplane-provider-proxmox
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "=========================================="
|
||
|
|
echo "CONTAINERD TAG FIX COMPLETE"
|
||
|
|
echo "=========================================="
|
||
|
|
echo ""
|
||
|
|
echo "Now delete and recreate the pod:"
|
||
|
|
echo " kubectl delete pod -n crossplane-system -l app=crossplane-provider-proxmox"
|
||
|
|
echo " kubectl wait --for=condition=ready pod -n crossplane-system -l app=crossplane-provider-proxmox --timeout=120s"
|
||
|
|
echo ""
|
||
|
|
echo "Then verify:"
|
||
|
|
echo " kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox | grep '\[FIXED CODE\]'"
|
||
|
|
|