{"adoption": {"forks": 660, "observed_at": "2026-08-28T04:10:41.806741+00:00", "stars": 10367}, "canonical_url": "https://ross.abutalabs.com/products/reloader", "card": {"archived": false, "artifact_type": "service", "description": "A Kubernetes controller to watch changes in ConfigMap and Secrets and do rolling upgrades on Pods with their associated Deployment, StatefulSet, DaemonSet and DeploymentConfig – [✩Star] if you're using it!", "domain": ["cloud-computing", "infrastructure-as-code"], "enriched": true, "function": ["deployment", "configuration-management", "monitoring", "container-orchestration"], "health_score": 99, "homepage": "https://docs.stakater.com/reloader/", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["stakater/Reloader"], "name": "stakater/Reloader", "platform": ["go", "cloud", "self-hosted"], "pushed_at": "2026-08-23T11:44:50+00:00", "repo": "stakater/Reloader", "stars": 10367, "tags": ["kubernetes-controller", "configmap", "secrets", "rolling-upgrade", "openshift", "rollout-automation", "statefulset", "daemonset", "devops", "containers", "automation", "kubernetes", "docker"], "topics": ["kubernetes", "openshift", "configmap", "secrets", "pods", "deployments", "daemonset", "statefulsets", "k8s", "watch-changes", "deploymentconfigs"], "urls": [], "use_cases": ["automatically restart pods when a configmap changes", "roll out deployments when secrets are updated", "keep workloads in sync with rotated credentials", "avoid stale configuration in kubernetes pods", "trigger rolling upgrades on config changes in CI/CD", "reload statefulsets and daemonsets after secret updates"], "what_it_is": "Reloader is a Kubernetes controller written in Go that watches for changes to ConfigMaps, Secrets, and CSI-mounted secrets, and automatically triggers rolling upgrades of associated workloads. It eliminates stale configuration in production by keeping Deployments, StatefulSets, DaemonSets, and DeploymentConfigs in sync with their configuration sources.", "when_to_avoid": ["your workloads already watch config files dynamically and reload in-process", "you use a GitOps tool that handles rollout triggers itself", "you are not running on Kubernetes or OpenShift"], "when_to_choose": ["you update ConfigMaps or Secrets frequently and need pods to pick up changes automatically", "you want zero manual restarts after credential rotation or config changes", "you run Kubernetes or OpenShift with Deployments, StatefulSets, DaemonSets, or Argo Rollouts", "you need a lightweight, widely adopted controller that just requires labeling workloads"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reloader", "repo": "stakater/Reloader", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.806741+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:19:06.741297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4389e7cebeb48681fc25eebdeebc9260697e13f58bb30fbaebc75c439ee40404", "fetched_at": "2026-08-28T04:10:41.806741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stakater/Reloader"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T08:18:20.585498+00:00", "kind": "homepage", "missing": false, "url": "https://docs.stakater.com/reloader/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2982, "days_push": 10, "days_rel": 23, "gap_med": 0, "n_releases_24m": 46}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}