{"id":13607371,"url":"https://github.com/estahn/k8s-image-swapper","last_synced_at":"2025-04-14T20:57:52.840Z","repository":{"id":37088649,"uuid":"320249235","full_name":"estahn/k8s-image-swapper","owner":"estahn","description":"Mirror images into your own registry and swap image references automatically.","archived":false,"fork":false,"pushed_at":"2024-10-29T10:14:50.000Z","size":6734,"stargazers_count":534,"open_issues_count":29,"forks_count":44,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-10-29T12:17:12.842Z","etag":null,"topics":["golang","kubernetes","kubernetes-webhook","mutating-webhook"],"latest_commit_sha":null,"homepage":"https://estahn.github.io/k8s-image-swapper/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/estahn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["estahn"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"otechie":null,"custom":null}},"created_at":"2020-12-10T11:19:54.000Z","updated_at":"2024-10-29T10:14:54.000Z","dependencies_parsed_at":"2023-10-12T06:16:04.960Z","dependency_job_id":"e6cdb7e9-4947-454c-b7a9-71a72ebe36fa","html_url":"https://github.com/estahn/k8s-image-swapper","commit_stats":{"total_commits":721,"total_committers":20,"mean_commits":36.05,"dds":0.3980582524271845,"last_synced_commit":"72a2a044215ce81bba9799ae291930452589e16c"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estahn%2Fk8s-image-swapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estahn%2Fk8s-image-swapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estahn%2Fk8s-image-swapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estahn%2Fk8s-image-swapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/estahn","download_url":"https://codeload.github.com/estahn/k8s-image-swapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961189,"owners_count":21189991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","kubernetes","kubernetes-webhook","mutating-webhook"],"created_at":"2024-08-01T19:01:18.047Z","updated_at":"2025-04-14T20:57:52.821Z","avatar_url":"https://github.com/estahn.png","language":"Go","funding_links":["https://github.com/sponsors/estahn"],"categories":["Go","Kubernetes tooling","kubernetes","Kubernetes"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Raiders of the Lost Ark\" src=\"docs/img/indiana.gif\" height=\"140\" /\u003e\n  \u003ch3 align=\"center\"\u003ek8s-image-swapper\u003c/h3\u003e\n  \u003cp align=\"center\"\u003eMirror images into your own registry and swap image references automatically.\u003c/p\u003e\n\u003c/p\u003e\n\n---\n\n`k8s-image-swapper` is a mutating webhook for Kubernetes, downloading images into your own registry and pointing the images to that new location.\nIt is an alternative to a [docker pull-through proxy](https://docs.docker.com/registry/recipes/mirror/).\n\n**Amazon ECR** and **Google Container Registry** are currently supported.\n\n## :zap: Benefits\n\nUsing `k8s-image-swapper` will improve the overall availability, reliability, durability and resiliency of your\nKubernetes cluster by keeping 3rd-party images mirrored into your own registry.\n\n`k8s-image-swapper` will transparently consolidate all images into a single registry without the need to adjust manifests\ntherefore reducing the impact of external registry failures, rate limiting, network issues, change or removal of images\nwhile reducing data traffic and therefore cost.\n\n**TL;DR:**\n\n* Protect against:\n  * external registry failure ([quay.io outage](https://www.reddit.com/r/devops/comments/f9kiej/quayio_is_experiencing_an_outage/))\n  * image pull rate limiting ([docker.io rate limits](https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/))\n  * accidental image changes\n  * removal of images\n* Use in air-gaped environments without the need to change manifests\n* Reduce NAT ingress traffic/cost\n\n## :book: Documentation\n\nA comprehensive guide on getting started and a list of configuration options can be found in the documentation.\n\n[![Documentation](https://img.shields.io/badge/Documentation-2FA4E7?style=for-the-badge\u0026logo=ReadMe\u0026logoColor=white)](https://estahn.github.io/k8s-image-swapper/index.html)\n\n## :question: Community\n\nYou have questions, need support and or just want to talk about `k8s-image-swapper`?\n\nHere are ways to get in touch with the community:\n\n[![Slack channel](https://img.shields.io/badge/Slack_Channel-4A154B?style=for-the-badge\u0026logo=slack\u0026logoColor=white)](http://slack.kubernetes.io/)\n[![GitHub Discussions](https://img.shields.io/badge/GITHUB_DISCUSSION-181717?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/estahn/k8s-image-swapper/discussions)\n\n\n## :heart_decoration: Sponsor\n\nDoes your company use `k8s-image-swapper`?\nHelp keep the project bug-free and feature rich by [sponsoring the project](https://github.com/sponsors/estahn).\n\n## :office: Commercial Support\n\nDoes your company require individual support or addition of features within a guaranteed timeframe?\nContact me via [email](mailto:enrico.stahn@gmail.com) to discuss.\n\n## :octocat: Badges\n\n[![Release](https://img.shields.io/github/release/estahn/k8s-image-swapper.svg?style=for-the-badge)](https://github.com/estahn/k8s-image-swapper/releases/latest)\n[![Artifact Hub](https://img.shields.io/badge/Artifact_Hub-417598?style=for-the-badge\u0026logo=artifacthub\u0026logoColor=white)](https://artifacthub.io/packages/helm/estahn/k8s-image-swapper)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=for-the-badge)](/LICENSE.md)\n[![Codecov branch](https://img.shields.io/codecov/c/github/estahn/k8s-image-swapper/main.svg?style=for-the-badge)](https://codecov.io/gh/estahn/k8s-image-swapper)\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge)](http://godoc.org/github.com/estahn/k8s-image-swapper)\n\n## :star2: Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/estahn/k8s-image-swapper.svg)](https://starchart.cc/estahn/k8s-image-swapper)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festahn%2Fk8s-image-swapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Festahn%2Fk8s-image-swapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festahn%2Fk8s-image-swapper/lists"}