[![Release][release-img]][release] [![Lint][lint-img]][lint] [![Tests][tests-img]][tests] [![E2E][e2e-img]][e2e] [![Artifact Hub][artifacthub-img]][artifacthub] [![MIT license][license-img]][license] [![Brought to you by Enix][enix-img]][enix]
[!WARNING]
kuik v3 is in a very early stage of development: it is not stable nor feature complete yet. See Status for what works today. If you are looking for the latest stable version, it is maintained on the 2.3.x branch: see its releases and its documentation on kuik.enix.io.
[release]: https://github.com/enix/kube-image-keeper/releases [release-img]: https://img.shields.io/github/v/release/enix/kube-image-keeper?sort=semver&display_name=tag&logo=github&label=Release&color=3a6ed7 [lint]: https://github.com/enix/kube-image-keeper/actions/workflows/lint.yaml [lint-img]: https://github.com/enix/kube-image-keeper/actions/workflows/lint.yaml/badge.svg?branch=main [tests]: https://github.com/enix/kube-image-keeper/actions/workflows/test.yaml [tests-img]: https://github.com/enix/kube-image-keeper/actions/workflows/test.yaml/badge.svg?branch=main [e2e]: https://github.com/enix/kube-image-keeper/actions/workflows/e2e.yaml [e2e-img]: https://github.com/enix/kube-image-keeper/actions/workflows/e2e.yaml/badge.svg?branch=main [artifacthub]: https://artifacthub.io/packages/helm/enix/kube-image-keeper [artifacthub-img]: https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/enix [license]: https://opensource.org/licenses/MIT [license-img]: https://img.shields.io/badge/License-MIT-blue.svg [enix]: https://enix.io [enix-img]: https://img.shields.io/badge/Brought%20to%20you%20by-ENIX-%23377dff?labelColor=888&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfkBAkQIg/iouK/AAABZ0lEQVQY0yXBPU8TYQDA8f/zcu1RSDltKliD0BKNECYZmpjgIAOLiYtubn4EJxI/AImzg3E1+AGcYDIMJA7lxQQQQRAiSSFG2l457+655x4Gfz8B45zwipWJ8rPCQ0g3+p9Pj+AlHxHjnLHAbvPW2+GmLoBN+9/+vNlfGeU2Auokd8Y+VeYk/zk6O2fP9fcO8hGpN/TUbxpiUhJiEorTgy+6hUlU5N1flK+9oIJHiKNCkb5wMyOFw3V9o+zN69o0Exg6ePh4/GKr6s0H72Tc67YsdXbZ5gENNjmigaXbMj0tzEWrZNtqigva5NxjhFP6Wfw1N1pjqpFaZQ7FAY6An6zxTzHs0BGqY/NQSnxSBD6WkDRTf3O0wG2Ztl/7jaQEnGNxZMdy2yET/B2xfGlDagQE1OgRRvL93UOHqhLnesPKqJ4NxLLn2unJgVka/HBpbiIARlHFq1n/cWlMZMne1ZfyD5M/Aa4BiyGSwP4Jl3UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDQtMDlUMTQ6MzQ6MTUrMDI6MDDBq8/nAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA0LTA5VDE0OjM0OjE1KzAyOjAwsPZ3WwAAAABJRU5ErkJggg==
kuik (pronounced /kwɪk/, like "quick") is the shortname of kube-image-keeper.
✅ Its primary objective is to maximize the availability of Pod images strictly within the Kubernetes cluster it runs on.
✅ Its secondary goal is to ensure bulletproof reliability by keeping the manipulation of Kubernetes primitives to an absolute minimum.
Under the hood
It relies on three core mechanisms:
- Image routing: rewrites Pod image paths on the fly during their creation to redirect them to a functional registry.
- Image copy: mirror images used by the local cluster across registries, building a virtual, highly available registry.
- Image monitoring: continuously tracks the availability of Pod images used within the local cluster across various registries.
[!NOTE]
Image routing is performed at Pod creation by a lightweight MutatingWebhook that automatically rewrites the image path whenever the source registry becomes unavailable.
Status
This branch holds kuik v3, a rewrite currently in development and released as alphas. Two milestones lie ahead:
- v3.0 beta, due 2026-11-01: every feature is implemented, not yet stable.
- v3.0 GA: stable, ready for production.
ImageAlternative, mutating webhook) | Available since 3.0.0-alpha.2 |
| Pull secret injection (secret syncer) | Available since 3.0.0-alpha.3 |
| Image copy (ImageMirror) | Available since 3.0.0-alpha.4 |
| Image monitoring (ImageMonitor) | Tracking and checks available since 3.0.0-alpha.4; drift and alternatives merged on main (#739, #745), shipping in the next alpha |
| Admission validation | Planned for the beta |
| Credentials from a cloud provider (auth.provider) | Planned for v3.1 (#747) |
| Plain-HTTP alternatives and mirror destinations (insecure) | Available since 3.0.0-alpha.2 for ImageAlternative, since 3.0.0-alpha.4 for ImageMirror |
| Private certificate authorities | Not planned yet (#750) |
| Migration from v2 | None: a migration plan will be proposed once GA is out (#749) |
- Stable version: v2.3, documented on kuik.enix.io. It is in maintenance: bug fixes only.
- v3 specification:
docs/v3/, starting withspec.md. It is the source of truth for v3 behaviour, frozen for now, it may evolve after we reach beta. - Custom resources:
ImageAlternative(routing),ImageMirror(copy) andImageMonitor(monitoring), described in the CRD reference.
notes/. Contributions follow CONTRIBUTING.md.
License
kube-image-keeper is developed by Enix and released under the MIT License.