Why ImageShift?
Zero Manifest Changes
Transparently redirect container images without modifying your existing Kubernetes manifests. Just label your namespace and ImageShift handles the rest.
Air-Gapped Ready
Perfect for disconnected environments. Mirror images to your internal registry and let ImageShift automatically redirect all pulls.
Flexible Mapping
Choose from registry-level swaps, exact image matches, or powerful regex patterns to handle any image redirection scenario.
Namespace Scoped
Control which namespaces are affected with simple labels. Enable or disable image swapping on a per-namespace basis.
Use Cases
Air-Gapped Environments
Redirect all image pulls to your internal registry in disconnected networks.
Multi-Region Deployments
Use region-specific registries to reduce latency and egress costs.
Image Mirroring
Implement transparent caching and mirroring strategies.
Development & Testing
Test with local registries without changing application manifests.
Quick Start
Get up and running in minutes with just a few commands.
# 1. Label your namespace
kubectl label namespace default imageshift.dev=enabled
# 2. Create an Imageshift resource
cat <<EOF | kubectl apply -f -
apiVersion: imageshift.dev/v1
kind: Imageshift
metadata:
name: imageshift
spec:
mappings:
swap:
- registry: docker.io
target: registry.internal.example.com/dockerhub
- registry: ghcr.io
target: registry.internal.example.com/ghcr
EOF
# 3. Deploy your workloads - images are automatically redirected!
kubectl run nginx --image=nginx:latest
# Image becomes: registry.internal.example.com/dockerhub/library/nginx:latest