{"id":50959560,"url":"https://github.com/texano00/urunner","last_synced_at":"2026-06-18T11:39:51.618Z","repository":{"id":119236654,"uuid":"605457633","full_name":"texano00/urunner","owner":"texano00","description":"URunner is a lightweight Kubernetes utility in order to auto restart pods on image tag digest change. This is very useful on environments where it is commonly used the latest tag which frequently changes over time. Urunner auto detects the container image tag digest (for example the digest of tag latest) and automatically restart pods.","archived":false,"fork":false,"pushed_at":"2025-04-12T10:48:36.000Z","size":699,"stargazers_count":48,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-12T11:24:18.837Z","etag":null,"topics":["containers","docker","helm","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/texano00.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"zenodo":null}},"created_at":"2023-02-23T07:39:03.000Z","updated_at":"2025-04-12T10:52:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"dc889375-2905-4ae5-b683-ccf00aff91e0","html_url":"https://github.com/texano00/urunner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/texano00/urunner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texano00%2Furunner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texano00%2Furunner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texano00%2Furunner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texano00%2Furunner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/texano00","download_url":"https://codeload.github.com/texano00/urunner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texano00%2Furunner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34489200,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["containers","docker","helm","kubernetes"],"created_at":"2026-06-18T11:39:50.882Z","updated_at":"2026-06-18T11:39:51.612Z","avatar_url":"https://github.com/texano00.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# urunner\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/urunner)](https://artifacthub.io/packages/search?repo=urunner)\n![CI_CD_Helm](https://github.com/texano00/urunner/actions/workflows/CI_CD_Helm.yml/badge.svg)\n![CI_CD_App](https://github.com/texano00/urunner/actions/workflows/CI_CD_App.yml/badge.svg)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=texano00/urunner\u0026type=Date)](https://star-history.com/#texano00/urunner\u0026Date)\n\n## Intro\n\n\u003cimg width=200 src=asset/logo.png\u003e\n\nURunner is a lightweight **Kubernetes** utility in order to **auto restart** pods on image **tag digest change**.\\\nThis is very useful on environments where it is commonly used the `latest` tag which frequently changes over time.\\\nUrunner auto detects the container image tag digest (for example the digest of tag `latest`) and automatically restart pods.\n\n## Docker API V2\n\nUrunner integrates external container registry (ex. [Harbor](https://goharbor.io/)) using standard [Docker API V2](https://docs.docker.com/registry/spec/api/).\\\nActually **Harbor**, **AWS ECR**, **Digital Ocean** and **GitLab** are the container registries officially supported.\\\n**Azure ACR** and **Dockerhub** support will be released soon.\n\nURunner use cases with specific how-to:\n\n- [AWS use case](https://www.yuribacciarini.com/automatically-pull-images-on-aws-ecr-latest-tag-change-from-aws-eks/)\n- [DigitalOcean container registry DOCR use case](https://www.yuribacciarini.com/automatically-pull-new-digitalocean-container-registry-docr-latest-tags-from-kubernetes/)\n- [GitLab container registry use case](https://www.yuribacciarini.com/k8s-automatically-pull-images-from-gitlab-container-registry-without-change-the-tag/)\n## Configurable watcher\n\nUrunner is also **fully configurable** in order to **watch only specific namespaces** with specific label to manage exception.\\\nAdd label `urunner=enable` to all namespaces in order to be watched by Urunner.\\\n`kubectl label ns mynamespace urunner=enable`\n\n```\napiVersion: v1\nkind: Namespace\nmetadata:\n  labels:\n    # add this label\n    urunner: enable\n  name: mynamespace\n```\n\nAlso, you can add exceptions inside `mynamespace`, for example\\\n`kubectl label deployment mydeployment urunner=disable -n mynamespace`\n\n```\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    # add this label\n    urunner: disable\n...\n```\n\nDoing so, all deployments except `mydeployment` will be watched by Urunner.\n\n## Helm\n\n```\nhelm upgrade --install urunner oci://ghcr.io/texano00/urunner/helm/urunner --version 0.1.0 --values my-values.yaml -n urunner --create-namespace\n```\n\n## Urunner env vars\n\n| Var                                      | Description                                                                                                        | Example                                                                                          |\n| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |\n| DOCKER_API_ACCEPT_HEADER                 | Accept header to inject on Docker API v2 registry                                                                  | application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json |\n| URUNNER_CONF_DOCKER_API_VERIFY           | SSL verify to docker registry                                                                                      | True or False                                                                                    |\n| URUNNER_CONF_LOG_LEVEL                   | Log Level                                                                                                          | DEBUG,INFO,WARNING                                                                               |\n| URUNNER_CONF_KUBE_AUTH                   | Kubernetes client authentication strategy                                                                          | incluster or kubeconfig                                                                          |\n| URUNNER_CONF_SQLLIGHT_PATH               | Path of sqlight DB                                                                                                 | ./urunner.db                                                                                     |\n| URUNNER_CONF_FREQUENCY_CHECK_SECONDS     | Frequency of urunner cron job (seconds)                                                                            | 30                                                                                               |\n| URUNNER_CONF_CONTAINER_REGISTRY_TO_WATCH | Which is the container registry to watch                                                                           | registry.mycompanyhost.net:8080                                                                  |\n| URUNNER_CONF_CONTAINER_REGISTRY_TYPE     | Kind of container registry                                                                                         | harbor,aws_ecr, digitalocean, gitlab                                                             |\n| URUNNER_SECR_HARBOR_USER                 | Harbor username, configure only if registry type is harbor                                                         | user                                                                                             |\n| URUNNER_SECR_HARBOR_PASS                 | Harbor password, configure only if registry type is harbor                                                         | pass                                                                                             |\n| URUNNER_SECR_AWS_ACCESS_KEY_ID           | AWS credential in order to pull from AWS private ECR, configure only if registry type is aws_ecr                   | AKIAIOSFODNN7EXAMPLE                                                                             |\n| URUNNER_SECR_AWS_REGION                  | AWS region                                                                                                         | us-east-2                                                                                        |\n| URUNNER_SECR_AWS_SECRET_ACCESS_KEY       | AWS credential in order to pull from AWS private ECR, configure only if registry type is aws_ecr                   | wJalrXUtnFEMI/K7MDENG/xRfiCYEXAMPLEKEY                                                           |\n| URUNNER_SECR_DIGITAL_OCEAN_TOKEN         | Digital Ocean token                                                                                                | xxxxx                                                                                            |\n| URUNNER_SECR_GITLAB_TOKEN                | Gitlab token                                                                                                       | xxxxx                                                                                            |\n| URUNNER_SECR_GITLAB_AUTH_URL             | Gitlab URL where `/jwt/auth` API is exposed. This is usually the same URL where GitLab instance itself is exposed. | my-gitlab.com                                                                                    |\n\n## Flow\n\n### Generic\n\n\u003cimg src=asset/urunner.png\u003e\n\n### AWS\n\n\u003cimg src=asset/urunner-aws.png\u003e\n\n### DigitalOCean\n\u003cimg src=asset/urunner-do.png\u003e\n\n### GitLab\n\u003cimg src=asset/urunner-gitlab.png\u003e\n\n\n## ToDo\n\n- Test Azure ACR integration\n- manage sqlite persistence in Helm chart\n\n## Notes\n\nLogo was generated using Fotor AI tool https://www.fotor.com/features/ai-image-generator/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexano00%2Furunner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftexano00%2Furunner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexano00%2Furunner/lists"}