mirror of
https://github.com/stakater/Reloader.git
synced 2026-03-06 03:10:27 +00:00
186 lines
7.0 KiB
Markdown
186 lines
7.0 KiB
Markdown
#  RELOADER
|
|
|
|
[](https://goreportcard.com/report/github.com/stakater/reloader)
|
|
[](http://godoc.org/github.com/stakater/reloader)
|
|
[](https://github.com/stakater/reloader/releases/latest)
|
|
[](https://github.com/stakater/reloader/releases/latest)
|
|
[](https://hub.docker.com/r/stakater/reloader/)
|
|
[](https://hub.docker.com/r/stakater/reloader/)
|
|
[](https://microbadger.com/images/stakater/reloader)
|
|
[](https://microbadger.com/images/stakater/reloader)
|
|
[](LICENSE)
|
|
[](http://stakater.com/?utm_source=Reloader&utm_medium=github)
|
|
|
|
## Problem
|
|
|
|
We would like to watch if some change happens in `ConfigMap` and/or `Secret`; then perform a rolling upgrade on relevant `Deployment`, `Daemonset` and `Statefulset`
|
|
|
|
## Solution
|
|
|
|
Reloader can watch changes in `ConfigMap` and `Secret` and do rolling upgrades on Pods with their associated `Deployments`, `Daemonsets` and `Statefulsets`.
|
|
|
|
## How to use Reloader
|
|
|
|
For a `Deployment` called `foo` have a `ConfigMap` called `foo-configmap` or `Secret` called `foo-secret` or both. Then add this annotation to main metadata of your `Deployment`
|
|
|
|
```yaml
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
reloader.stakater.com/auto: "true"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
```
|
|
|
|
This will discover deployments/daemonsets/statefulset automatically where `foo-configmap` or `foo-secret` is being used either via environment variable or from volume mount. And it will perform rolling upgrade on related pods when `foo-configmap` or `foo-secret`are updated.
|
|
|
|
We can also specify a specific configmap or secret which would trigger rolling upgrade only upon change in our specified configmap or secret, this way, it will not trigger rolling upgrade upon changes in all configmaps or secrets used in a deployment, daemonset or statefulset.
|
|
To do this either set `reloader.stakater.com/auto: "false"` or remove this annotation altogather, and use annotations mentioned [here](#Configmap) or [here](#Secret)
|
|
|
|
### Configmap
|
|
|
|
To perform rolling upgrade when change happens only on specific configmaps use below annotation.
|
|
|
|
For a `Deployment` called `foo` have a `ConfigMap` called `foo-configmap`. Then add this annotation to main metadata of your `Deployment`
|
|
|
|
```yaml
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
configmap.reloader.stakater.com/reload: "foo-configmap"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
```
|
|
|
|
Use comma separated list to define multiple configmaps.
|
|
|
|
```yaml
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
configmap.reloader.stakater.com/reload: "foo-configmap,bar-configmap,baz-configmap"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
```
|
|
|
|
### Secret
|
|
|
|
To perform rolling upgrade when change happens only on specific secrets use below annotation.
|
|
|
|
For a `Deployment` called `foo` have a `Secret` called `foo-secret`. Then add this annotation to main metadata of your `Deployment`
|
|
|
|
```yaml
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
secret.reloader.stakater.com/reload: "foo-secret"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
```
|
|
|
|
Use comma separated list to define multiple secrets.
|
|
|
|
```yaml
|
|
kind: Deployment
|
|
metadata:
|
|
annotations:
|
|
secret.reloader.stakater.com/reload: "foo-secret,bar-secret,baz-secret"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
```
|
|
|
|
### NOTE
|
|
`reloader.stakater.com/auto: "true"` will always override when use with either `secret.reloader.stakater.com/reload` or `configmap.reloader.stakater.com/reload` annotation.
|
|
|
|
## Deploying to Kubernetes
|
|
|
|
You can deploy Reloader by following methods:
|
|
|
|
### Vanilla Manifests
|
|
|
|
You can apply vanilla manifests by running the following command
|
|
|
|
```bash
|
|
kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
|
|
```
|
|
|
|
By default Reloader gets deployed in `default` namespace and watches changes `secrets` and `configmaps` in all namespaces.
|
|
|
|
### Helm Charts
|
|
|
|
Alternatively if you have configured helm on your cluster, you can add reloader to helm from our public chart repository and deploy it via helm using below mentioned commands
|
|
|
|
```bash
|
|
helm repo add stakater https://stakater.github.io/stakater-charts
|
|
|
|
helm repo update
|
|
|
|
helm install stakater/reloader
|
|
```
|
|
|
|
**Note:** By default reloader watches in all namespaces. To watch in single namespace, please run following command. It will install reloader in `test` namespace which will only watch `Deployments`, `Daemonsets` and `Statefulsets` in `test` namespace.
|
|
|
|
```bash
|
|
helm install stakater/reloader --set reloader.watchGlobally=false --namespace test
|
|
```
|
|
|
|
## Help
|
|
|
|
### Documentation
|
|
You can find more documentation [here](docs/)
|
|
|
|
### Have a question?
|
|
File a GitHub [issue](https://github.com/stakater/Reloader/issues), or send us an [email](mailto:stakater@gmail.com).
|
|
|
|
### Talk to us on Slack
|
|
|
|
Join and talk to us on Slack for discussing Reloader
|
|
|
|
[](https://stakater-slack.herokuapp.com/)
|
|
[](https://stakater.slack.com/messages/CC5S05S12)
|
|
|
|
## Contributing
|
|
|
|
### Bug Reports & Feature Requests
|
|
|
|
Please use the [issue tracker](https://github.com/stakater/Reloader/issues) to report any bugs or file feature requests.
|
|
|
|
### Developing
|
|
|
|
PRs are welcome. In general, we follow the "fork-and-pull" Git workflow.
|
|
|
|
1. **Fork** the repo on GitHub
|
|
2. **Clone** the project to your own machine
|
|
3. **Commit** changes to your own branch
|
|
4. **Push** your work back up to your fork
|
|
5. Submit a **Pull request** so that we can review your changes
|
|
|
|
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
|
|
|
|
## Changelog
|
|
|
|
View our closed [Pull Requests](https://github.com/stakater/Reloader/pulls?q=is%3Apr+is%3Aclosed).
|
|
|
|
## License
|
|
|
|
Apache2 © [Stakater](http://stakater.com)
|
|
|
|
## About
|
|
|
|
`Reloader` is maintained by [Stakater][website]. Like it? Please let us know at <hello@stakater.com>
|
|
|
|
See [our other projects][community]
|
|
or contact us in case of professional services and queries on <hello@stakater.com>
|
|
|
|
[website]: http://stakater.com/
|
|
[community]: https://github.com/stakater/
|
|
|
|
## Acknowledgements
|
|
|
|
- [ConfigmapController](https://github.com/fabric8io/configmapcontroller); We documented here why we re-created [Reloader](docs/Reloader-vs-ConfigmapController.md)
|