[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5059":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},5059,"Reloader","stakater\u002FReloader","stakater","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!","https:\u002F\u002Fdocs.stakater.com\u002Freloader\u002F",null,"Go",10129,649,50,136,0,20,95,4,87.94,"Apache License 2.0",false,"master",[25,26,27,28,29,30,31,32,33,34,35],"configmap","daemonset","deploymentconfigs","deployments","k8s","kubernetes","openshift","pods","secrets","statefulsets","watch-changes","2026-06-12 04:00:24","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fweb\u002Freloader.jpg\" alt=\"Reloader\" width=\"40%\"\u002F>\n\u003C\u002Fp>\n\n[![💖 Sponsor Our Work](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSponsor%20Our%20Work-FF8C00?style=flat-square&logo=github-sponsors&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fstakater?utm_source=github&utm_medium=readme&utm_campaign=reloader)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fstakater\u002Freloader?style=flat-square)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fstakater\u002Freloader)\n[![Go Doc](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgodoc-reference-blue.svg?style=flat-square)](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fstakater\u002Freloader)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fstakater\u002Freloader.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fstakater\u002Freloader\u002Freleases\u002Flatest)\n[![GitHub tag](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Ftag\u002Fstakater\u002Freloader.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fstakater\u002Freloader\u002Freleases\u002Flatest)\n[![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fstakater\u002Freloader.svg?style=flat-square)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fstakater\u002Freloader\u002F)\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fstakater\u002FReloader.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader)\n[![license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fstakater\u002Freloader.svg?style=flat-square)](LICENSE)\n\n## 🔁 What is Reloader?\n\nReloader is a Kubernetes controller that automatically triggers rollouts of workloads (like Deployments, StatefulSets, and more) whenever referenced `Secrets`, `ConfigMaps` or **optionally CSI-mounted secrets** are updated.\n\nIn a traditional Kubernetes setup, updating a `Secret` or `ConfigMap` does not automatically restart or redeploy your workloads. This can lead to stale configurations running in production, especially when dealing with dynamic values like credentials, feature flags, or environment configs.\n\nReloader bridges that gap by ensuring your workloads stay in sync with configuration changes — automatically and safely.\n\n## 🚀 Why Reloader?\n\n- ✅ **Zero manual restarts**: No need to manually rollout workloads after config\u002Fsecret changes.\n- 🔒 **Secure by design**: Ensure your apps always use the most up-to-date credentials or tokens.\n- 🛠️ **Flexible**: Works with all major workload types — Deployment, StatefulSet, Daemonset, ArgoRollout, and more.\n- ⚡ **Fast feedback loop**: Ideal for CI\u002FCD pipelines where secrets\u002Fconfigs change frequently.\n- 🔄 **Out-of-the-box integration**: Just label your workloads and let Reloader do the rest.\n\n## 🔧 How It Works?\n\n```mermaid\nflowchart LR\n  ExternalSecret -->|Creates| Secret\n  SealedSecret -->|Creates| Secret\n  Certificate -->|Creates| Secret\n  Secret -->|Watched by| Reloader\n  ConfigMap -->|Watched by| Reloader\n\n  Reloader -->|Triggers Rollout| Deployment\n  Reloader -->|Triggers Rollout| DeploymentConfig\n  Reloader -->|Triggers Rollout| Daemonset\n  Reloader -->|Triggers Rollout| Statefulset\n  Reloader -->|Triggers Rollout| ArgoRollout\n  Reloader -->|Triggers Job| CronJob\n  Reloader -->|Sends Notification| Slack,Teams,Webhook\n```\n\n- Sources like `ExternalSecret`, `SealedSecret`, or `Certificate` from `cert-manager` can create or manage Kubernetes `Secrets` — but they can also be created manually or delivered through GitOps workflows.\n- `Secrets` and `ConfigMaps` are watched by Reloader.\n- When changes are detected, Reloader automatically triggers a rollout of the associated workloads, ensuring your app always runs with the latest configuration.\n\n## 🏢 Reloader Enterprise\n\nReloader OSS is free and production-proven with 24B+ downloads.\n\nFor teams with stricter requirements:\n\n| Need | Enterprise |\n|------|-----------|\n| CVE-free, signed images with SBOM | ✅ |\n| SLA-backed support from Kubernetes experts | ✅ |\n| Artifact provenance for compliance audits | ✅ |\n| Dedicated escalation path | ✅ |\n\n→ [Contact Sales](mailto:sales@stakater.com) for info about Reloader Enterprise.\n\n## ⚡ Quick Start\n\n### 1. Install Reloader\n\nFollow any of this [installation options](#-installation).\n\n### 2. Annotate Your Workload\n\nTo enable automatic reload for a Deployment:\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: my-app\n  annotations:\n    reloader.stakater.com\u002Fauto: \"true\"\nspec:\n  template:\n    metadata:\n      labels:\n        app: my-app\n    spec:\n      containers:\n        - name: app\n          image: your-image\n          envFrom:\n            - configMapRef:\n                name: my-config\n            - secretRef:\n                name: my-secret\n```\n\nThis tells Reloader to watch the `ConfigMap` and `Secret` referenced in this deployment. When either is updated, it will trigger a rollout.\n\n## 🧩 Usage\n\nReloader supports multiple annotation-based controls to let you **customize when and how your Kubernetes workloads are reloaded** upon changes in `Secrets` or `ConfigMaps`.\n\nKubernetes does not trigger pod restarts when a referenced `Secret` or `ConfigMap` is updated. Reloader bridges this gap by watching for changes and automatically performing rollouts — but it gives you full control via annotations, so you can:\n\n- Reload **all** resources by default\n- Restrict reloads to only **Secrets** or only **ConfigMaps**\n- Watch only **specific resources**\n- Use **opt-in via tagging** (`search` + `match`)\n- Exclude workloads you don’t want to reload\n\n### 1. 🔁 Automatic Reload (Default)\n\nUse these annotations to automatically restart the workload when referenced `Secrets` or `ConfigMaps` change.\n\n| Annotation                                 | Description                                                          |\n|--------------------------------------------|----------------------------------------------------------------------|\n| `reloader.stakater.com\u002Fauto: \"true\"`       | Reloads workload when any referenced ConfigMap or Secret changes     |\n| `secret.reloader.stakater.com\u002Fauto: \"true\"`| Reloads only when referenced Secret(s) change                        |\n| `configmap.reloader.stakater.com\u002Fauto: \"true\"`| Reloads only when referenced ConfigMap(s) change                  |\n\n### 2. 📛 Named Resource Reload (Specific Resource Annotations)\n\nThese annotations allow you to manually define which ConfigMaps or Secrets should trigger a reload, regardless of whether they're used in the pod spec.\n\n| Annotation                                          | Description                                                                          |\n|-----------------------------------------------------|--------------------------------------------------------------------------------------|\n| `secret.reloader.stakater.com\u002Freload: \"my-secret\"`  | Reloads when specific Secret(s) change, regardless of how they're used              |\n| `configmap.reloader.stakater.com\u002Freload: \"my-config\"`| Reloads when specific ConfigMap(s) change, regardless of how they're used         |\n\n#### Use when\n\n1. ✅ This is useful in tightly scoped scenarios where config is shared but reloads are only relevant in certain cases.\n1. ✅ Use this when you know exactly which resource(s) matter and want to avoid auto-discovery or searching altogether.\n\n### 3. 🎯 Targeted Reload (Match + Search Annotations)\n\nThis pattern allows fine-grained reload control — workloads only restart if the Secret\u002FConfigMap is both:\n\n1. Referenced by the workload\n1. Explicitly annotated with `match: true`\n\n| Annotation                                | Applies To   | Description                                                                 |\n|-------------------------------------------|--------------|-----------------------------------------------------------------------------|\n| `reloader.stakater.com\u002Fsearch: \"true\"`    | Workload     | Enables search mode (only reloads if matching secrets\u002FconfigMaps are found) |\n| `reloader.stakater.com\u002Fmatch: \"true\"`     | ConfigMap\u002FSecret | Marks the config\u002Fsecret as eligible for reload in search mode              |\n\n#### How it works\n\n1. The workload must have: `reloader.stakater.com\u002Fsearch: \"true\"`\n1. The ConfigMap or Secret must have: `reloader.stakater.com\u002Fmatch: \"true\"`\n1. The resource (ConfigMap or Secret) must also be referenced in the workload (via env, `volumeMount`, etc.)\n\n#### Use when\n\n1. ✅ You want to reload a workload only if it references a ConfigMap or Secret that has been explicitly tagged with `reloader.stakater.com\u002Fmatch: \"true\"`.\n1. ✅ Use this when you want full control over which shared or system-wide resources trigger reloads. Great in multi-tenant clusters or shared configs.\n\n### ⛔ Resource-Level Ignore Annotation\n\nWhen you need to prevent specific ConfigMaps or Secrets from triggering any reloads, use the ignore annotation on the resource itself:\n\n```yaml\napiVersion: v1\nkind: ConfigMap  # or Secret\nmetadata:\n  name: my-config\n  annotations:\n    reloader.stakater.com\u002Fignore: \"true\"\n```\n\nThis instructs Reloader to skip all reload logic for that resource across all workloads.\n\n### 4. ⚙️ Workload-Specific Rollout Strategy (Argo Rollouts Only)\n\nNote: This is only applicable when using [Argo Rollouts](https:\u002F\u002Fargoproj.github.io\u002Fargo-rollouts\u002F). It is ignored for standard Kubernetes `Deployments`, `StatefulSets`, or `DaemonSets`. To use this feature, Argo Rollouts support must be enabled in Reloader (for example via --is-argo-rollouts=true).\n\nBy default, Reloader triggers the Argo Rollout controller to perform a standard rollout by updating the pod template. This works well in most cases, however, because this modifies the workload spec, GitOps tools like ArgoCD will detect this as \"Configuration Drift\" and mark your application as OutOfSync.\n\nTo avoid that, you can switch to the **restart** strategy, which simply restarts the pod without changing the pod template.\n\n```yaml\nmetadata:\n  annotations:\n    reloader.stakater.com\u002Frollout-strategy: \"restart\"\n```\n\n| Value              | Behavior                                                        |\n|--------------------|-----------------------------------------------------------------|\n| `rollout` (default) | Updates pod template metadata to trigger a rollout             |\n| `restart`           | Deletes the pod to restart it without patching the template    |\n\n✅ Use `restart` if:\n\n1. You're using GitOps and want to avoid drift\n1. You want a quick restart without changing the workload spec\n1. Your platform restricts metadata changes\n\nThis setting affects Argo Rollouts behavior, not Argo CD sync settings.\n\n### 5. ❗ Annotation Behavior Rules & Compatibility\n\n- `reloader.stakater.com\u002Fauto` and `reloader.stakater.com\u002Fsearch` **cannot be used together** — the `auto` annotation takes precedence.\n- If both `auto` and its typed versions (`secret.reloader.stakater.com\u002Fauto`, `configmap.reloader.stakater.com\u002Fauto`) are used, **only one needs to be true** to trigger a reload.\n- Setting `reloader.stakater.com\u002Fauto: \"false\"` explicitly disables reload for that workload.\n- If `--auto-reload-all` is enabled on the controller:\n    - All workloads are treated as if they have `auto: \"true\"` unless they explicitly set it to `\"false\"`.\n    - Missing or unrecognized annotation values are treated as `\"false\"`.\n\n### 6. 🔔 Alerting on Reload\n\nReloader can optionally **send alerts** whenever it triggers a rolling upgrade for a workload (e.g., `Deployment`, `StatefulSet`, etc.).\n\nThese alerts are sent to a configured **webhook endpoint**, which can be a generic receiver or services like Slack, Microsoft Teams or Google Chat.\n\nTo enable this feature, update the `reloader.env.secret` section in your `values.yaml` (when installing via Helm):\n\n```yaml\nreloader:\n  deployment:\n    env:\n      secret:\n        ALERT_ON_RELOAD: \"true\"                    # Enable alerting (default: false)\n        ALERT_SINK: \"slack\"                        # Options: slack, teams, gchat or webhook (default: webhook)\n        ALERT_WEBHOOK_URL: \"\u003Cyour-webhook-url>\"    # Required if ALERT_ON_RELOAD is true\n        ALERT_ADDITIONAL_INFO: \"Triggered by Reloader in staging environment\"\n```\n\n### 7. ⏸️ Pause Deployments\n\nThis feature allows you to pause rollouts for a deployment for a specified duration, helping to prevent multiple restarts when several ConfigMaps or Secrets are updated in quick succession.\n\n| Annotation                                              | Applies To   | Description                                                                 |\n|---------------------------------------------------------|--------------|-----------------------------------------------------------------------------|\n| `deployment.reloader.stakater.com\u002Fpause-period: \"5m\"`   | Deployment   | Pauses reloads for the specified period (e.g., `5m`, `1h`)                  |\n\n#### How it works\n\n1. Add the `deployment.reloader.stakater.com\u002Fpause-period` annotation to your Deployment, specifying the pause duration (e.g., `\"5m\"` for five minutes).\n1. When a watched ConfigMap or Secret changes, Reloader will still trigger a reload event, but if the deployment is paused, the rollout will have no effect until the pause period has elapsed.\n1. This avoids repeated restarts if multiple resources are updated close together.\n\n#### Use when\n\n1. ✅ Your deployment references multiple ConfigMaps or Secrets that may be updated at the same time.\n1. ✅ You want to minimize unnecessary rollouts and reduce downtime caused by back-to-back configuration changes.\n\n### 8. 🔐 CSI Secret Provider Support\n\nReloader supports the [Secrets Store CSI Driver](https:\u002F\u002Fsecrets-store-csi-driver.sigs.k8s.io\u002F), which allows mounting secrets from external secret stores (like AWS Secrets Manager, Azure Key Vault, HashiCorp Vault) directly into pods.\nUnlike Kubernetes Secret objects, CSI-mounted secrets do not always trigger native Kubernetes update events. Reloader solves this by watching CSI status resources and restarting affected workloads when mounted secret versions change.\n\n#### How it works\n\nWhen secret rotation is enabled, the Secrets Store CSI Driver updates a Kubernetes resource called: `SecretProviderClassPodStatus`\n\nThis resource reflects the currently mounted secret versions for a pod.\nReloader watches these updates and triggers a rollout when a change is detected.\n\n#### Prerequisites\n\n- Secrets Store CSI Driver must be installed in your cluster\n- Secret rotation enabled in the CSI driver.\n- Enable CSI integration in Reloader: `--enable-csi-integration=true`\n\n#### Annotations for CSI-mounted Secrets\n\n| Annotation                                                                   | Description                                                                                                                 |\n|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|\n| `reloader.stakater.com\u002Fauto: \"true\"`                                         | Global Discovery: Automatically discovers and reloads the workload when any mounted ConfigMap or Secret is updated.         |\n| `secretproviderclass.reloader.stakater.com\u002Fauto: 'true'`                     | CSI Discovery: Specifically watches for updates to all SecretProviderClasses used by the workload (CSI driver integration). |\n| `secretproviderclass.reloader.stakater.com\u002Freload: \"my-secretproviderclass\"` | Targeted Reload: Only reloads the workload when the specifically named SecretProviderClass(es) are updated.                 |\n\nReloader monitors changes at the **per-secret level** by watching the `SecretProviderClassPodStatus`. Make sure each secret you want to monitor is properly defined with a `secretKey` in your `SecretProviderClass`:\n\n```yaml\napiVersion: secrets-store.csi.x-k8s.io\u002Fv1\nkind: SecretProviderClass\nmetadata:\n  name: vault-reloader-demo\n  namespace: test\nspec:\n  provider: vault\n  parameters:\n    vaultAddress: \"http:\u002F\u002Fvault.vault.svc:8200\"\n    vaultSkipTLSVerify: \"true\"\n    roleName: \"demo-role\"\n    objects: |\n      - objectName: \"password\"\n        secretPath: \"secret\u002Fdata\u002Freloader-demo\"\n        secretKey: \"password\"\n```\n\n***Important***: Reloader tracks changes to individual secrets (identified by `secretKey`). If your SecretProviderClass doesn't specify `secretKey` for each object, Reloader may not detect updates correctly.\n\n#### Notes & Limitations\n\nReloader reacts to CSI status changes, not direct updates to external secret stores\nSecret rotation must be enabled in the CSI driver for updates to be detected\nCSI limitations (such as `subPath` mounts) still apply and may require pod restarts\nIf secrets are synced to Kubernetes Secret objects, standard Reloader behavior applies and CSI support may not be required\n\n## 🚀 Installation\n\n### 1. 📦 Helm\n\nReloader can be installed in multiple ways depending on your Kubernetes setup and preference. Below are the supported methods:\n\n```bash\nhelm repo add stakater https:\u002F\u002Fstakater.github.io\u002Fstakater-charts\nhelm repo update\nhelm install reloader stakater\u002Freloader\n```\n\n➡️ See full Helm configuration in the [chart README](.\u002Fdeployments\u002Fkubernetes\u002Fchart\u002Freloader\u002FREADME.md).\n\n### 2. 📄 Vanilla Manifests\n\nApply raw Kubernetes manifests directly:\n\n```bash\nkubectl apply -f https:\u002F\u002Fraw.githubusercontent.com\u002Fstakater\u002FReloader\u002Fmaster\u002Fdeployments\u002Fkubernetes\u002Freloader.yaml\n```\n\n### 3. 🧱 Vanilla Kustomize\n\nUse the built-in Kustomize support:\n\n```bash\nkubectl apply -k https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fdeployments\u002Fkubernetes\n```\n\n### 4. 🛠️ Custom Kustomize Setup\n\nYou can create your own `kustomization.yaml` and use Reloader’s as a base:\n\n```yaml\napiVersion: kustomize.config.k8s.io\u002Fv1beta1\nkind: Kustomization\n\nresources:\n  - https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fdeployments\u002Fkubernetes\n\nnamespace: reloader\n```\n\n### 5. ⚖️ Default Resource Requests and Limits\n\nBy default, Reloader is deployed with the following resource requests and limits:\n\n```yaml\nresources:\n  limits:\n    cpu: 150m\n    memory: 512Mi\n  requests:\n    cpu: 10m\n    memory: 128Mi\n```\n\n### 6. ⚙️ Optional runtime configurations\n\nThese flags let you customize Reloader's behavior globally, at the Reloader controller level.\n\n#### 1. 🔁 Reload Behavior\n\n| Flag | Description |\n|------|-------------|\n| `--reload-on-create=true` | Reload workloads when a watched ConfigMap or Secret is created |\n| `--reload-on-delete=true` | Reload workloads when a watched ConfigMap or Secret is deleted |\n| `--auto-reload-all=true` | Automatically reload all workloads unless opted out (`auto: \"false\"`) |\n| `--reload-strategy=env-vars` | Strategy to use for triggering reload (`env-vars` or `annotations`) |\n| `--log-format=json` | Enable JSON-formatted logs for better machine readability |\n\n##### Reload Strategies\n\nReloader supports multiple strategies for triggering rolling updates when a watched `ConfigMap` or `Secret` changes. You can configure the strategy using the `--reload-strategy` flag.\n\n| Strategy     | Description |\n|--------------|-------------|\n| `env-vars` (default) | Adds a dummy environment variable to any container referencing the changed resource (e.g., `Deployment`, `StatefulSet`, etc.). This forces Kubernetes to perform a rolling update. |\n| `annotations` | Adds a `reloader.stakater.com\u002Flast-reloaded-from` annotation to the pod template metadata. Ideal for GitOps tools like ArgoCD, as it avoids triggering unwanted sync diffs. |\n\n- The `env-vars` strategy is the default and works in most setups.\n- The `annotations` strategy is preferred in **GitOps environments** to prevent config drift in tools like ArgoCD or Flux.\n- In `annotations` mode, a `ConfigMap` or `Secret` that is deleted and re-created will still trigger a reload (since previous state is not tracked).\n\n#### 2. 🚫 Resource Filtering\n\n| Flag | Description |\n|------|-------------|\n| `--resources-to-ignore=configmaps` | Ignore ConfigMaps (only one type can be ignored at a time) |\n| `--resources-to-ignore=secrets` | Ignore Secrets (cannot combine with configMaps) |\n| `--ignored-workload-types=jobs,cronjobs` | Ignore specific workload types from reload monitoring |\n| `--resource-label-selector=key=value` | Only watch ConfigMaps\u002FSecrets with matching labels |\n\n> **⚠️ Note:**\n>\n> Only **one** resource type can be ignored at a time.\n> Trying to ignore **both `configmaps` and `secrets`** will cause an error in Reloader.\n> ✅ **Workaround:** Scale the Reloader deployment to `0` replicas if you want to disable it completely.\n\n**💡 Workload Type Examples:**\n\n```bash\n# Ignore only Jobs\n--ignored-workload-types=jobs\n\n# Ignore only CronJobs\n--ignored-workload-types=cronjobs\n\n# Ignore both (comma-separated)\n--ignored-workload-types=jobs,cronjobs\n```\n\n> **🔧 Use Case:** Ignoring workload types is useful when you don't want certain types of workloads to be automatically reloaded.\n\n#### 3. 🧩 Namespace Filtering\n\n| Flag | Description |\n|------|-------------|\n| `--namespace-selector='key=value'` \u003Cbr \u002F> \u003Cbr \u002F>`--namespace-selector='key1=value1,key2=value2'` \u003Cbr \u002F> \u003Cbr \u002F>`--namespace-selector='key in (value1,value2)'`| Watch only namespaces with matching labels. See [LIST and WATCH filtering](https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fconcepts\u002Foverview\u002Fworking-with-objects\u002Flabels\u002F#list-and-watch-filtering) for more details on label selectors |\n| `--namespaces-to-ignore=ns1,ns2` | Skip specific namespaces from being watched |\n\n#### 4. 📝 Annotation Key Overrides\n\nThese flags allow you to redefine annotation keys used in your workloads or resources:\n\n| Flag | Overrides |\n|------|-----------|\n| `--auto-annotation` | Overrides `reloader.stakater.com\u002Fauto` |\n| `--secret-auto-annotation` | Overrides `secret.reloader.stakater.com\u002Fauto` |\n| `--configmap-auto-annotation` | Overrides `configmap.reloader.stakater.com\u002Fauto` |\n| `--auto-search-annotation` | Overrides `reloader.stakater.com\u002Fsearch` |\n| `--search-match-annotation` | Overrides `reloader.stakater.com\u002Fmatch` |\n| `--secret-annotation` | Overrides `secret.reloader.stakater.com\u002Freload` |\n| `--configmap-annotation` | Overrides `configmap.reloader.stakater.com\u002Freload` |\n| `--pause-deployment-annotation` | Overrides `deployment.reloader.stakater.com\u002Fpause-period` |\n| `--pause-deployment-time-annotation` | Overrides `deployment.reloader.stakater.com\u002Fpaused-at` |\n\n### 5. 🕷️ Debugging\n\n| Flag | Description |\n|---  |-------------|\n| `--enable-pprof` | Enables `pprof` for profiling |\n| `--pprof-addr` | Address to start `pprof` server on. Default is `:6060` |\n\n## Compatibility\n\nReloader is compatible with Kubernetes >= 1.19\n\n## 🏢 Adopters\n\nReloader has **24B+ Docker pulls** across thousands of Kubernetes clusters worldwide.\n\nIf you're running Reloader in production, we'd love to hear from you:\n\n- 💬 **Share your story** → [Show & Tell Discussion](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fdiscussions\u002F1137)\n- 🏷️ **Add your logo** → [ADOPTERS.md](.\u002Fadopters\u002FADOPTERS.md)\n\n[See who's using Reloader →](.\u002Fadopters\u002FADOPTERS.md)\n\n## Help\n\n### Documentation\n\nThe Reloader documentation can be viewed from [the doc site](https:\u002F\u002Fdocs.stakater.com\u002Freloader\u002F). The doc source is in the [docs](.\u002Fdocs\u002F) folder.\n\n### Have a question?\n\nFile a GitHub [issue](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fissues).\n\n### Talk to us on Slack\n\nJoin and talk to us on Slack for discussing Reloader:\n\n[![Join Slack](https:\u002F\u002Fstakater.github.io\u002FREADME\u002Fstakater-join-slack-btn.png)](https:\u002F\u002Fslack.stakater.com\u002F)\n[![Chat](https:\u002F\u002Fstakater.github.io\u002FREADME\u002Fstakater-chat-btn.png)](https:\u002F\u002Fstakater-community.slack.com\u002Fmessages\u002FCC5S05S12)\n\n## Contributing\n\n### Bug Reports & Feature Requests\n\nPlease use the [issue tracker](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fissues) to report any bugs or file feature requests.\n\n### Developing\n\n1. Deploy Reloader\n1. Run `okteto up` to activate your development container\n1. `make build`\n1. `.\u002FReloader`\n\nPRs are welcome. In general, we follow the \"fork-and-pull\" Git workflow:\n\n1. **Fork** the repo on GitHub\n1. **Clone** the project to your own machine\n1. **Commit** changes to your own branch\n1. **Push** your work back up to your fork\n1. Submit a **Pull request** so that we can review your changes\n\n**NOTE:** Be sure to merge the latest from \"upstream\" before making a pull request!\n\n## Release Processes\n\n*Repository GitHub releases*: As requested by the community in [issue 685](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fissues\u002F685), Reloader is now based on a manual release process. Releases are no longer done on every merged PR to the main branch, but manually on request.\n\nTo make a GitHub release:\n\n1. Code owners create a release branch `release-vX.Y.Z` from `master`\n1. Code owners run [Init Release](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Factions\u002Fworkflows\u002Finit-branch-release.yaml) workflow to automatically generate version and manifests on the release branch\n    - Set the `TARGET_BRANCH` parameter to release branch i.e. `release-vX.Y.Z`\n    - Set the `TARGET_VERSION` to release version without 'v' i.e. `X.Y.Z`\n1. A PR is created to bump the image version on the release branch, example: [PR-798](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fpull\u002F798)\n1. Code owners create a GitHub release with tag `vX.Y.Z` and target branch `release-vX.Y.Z`, which triggers creation of images\n1. Code owners create another branch from `master` and bump the helm chart version as well as Reloader image version.\n    - Code owners create a PR with `release\u002Fhelm-chart` label, example: [PR-846](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Fpull\u002F846)\n\n*Repository git tagging*: Push to the main branch will create a merge-image and merge-tag named `merge-${{ github.event.number }}`, for example `merge-800` when pull request number 800 is merged.\n\n## Changelog\n\nView the [releases page](https:\u002F\u002Fgithub.com\u002Fstakater\u002FReloader\u002Freleases) to see what has changed in each release.\n\n## License\n\nApache2 © [Stakater][website]\n\n## About Stakater\n\n[![Get started with Stakater](https:\u002F\u002Fstakater.github.io\u002FREADME\u002Fstakater-github-banner.png)](https:\u002F\u002Fstakater.com\u002F?utm_source=Reloader&utm_medium=github)\n\n`Reloader` is maintained by [Stakater][website]. Like it? Please let us know at [hello@stakater.com](hello@stakater.com)\n\nSee [our other projects](https:\u002F\u002Fgithub.com\u002Fstakater) or contact us in case of professional services and queries on [hello@stakater.com](hello@stakater.com)\n\n[website]: https:\u002F\u002Fstakater.com\n","Reloader 是一个 Kubernetes 控制器，用于监控 ConfigMap 和 Secrets 的变化，并自动触发关联的 Deployment、StatefulSet、DaemonSet 和 DeploymentConfig 的滚动更新。其核心功能包括自动检测配置变更并执行相应的滚动升级，无需人工干预，确保应用始终使用最新的配置和凭证。Reloader 采用 Go 语言编写，支持多种工作负载类型，适用于需要频繁更新配置或密钥的 CI\u002FCD 管道环境。通过简单的标签配置即可启用，简化了运维流程，提升了系统的安全性和灵活性。",2,"2026-06-11 03:02:17","top_language"]