stakater / Reloader

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://docs.stakater.com/reloader/
Apache License 2.0
7.65k stars 511 forks source link

Feature Request: Disable auto-reload but use the notifications for the change in secret or configmap #414

Open AnuragEkkati opened 1 year ago

AnuragEkkati commented 1 year ago

We use reloader in our production environment and few of the teams just want a notification saying app's secret or configmap changed for them to schedule a downtime and do a manual reload.

Can we have any option to just to notify and not to reload ?

This is a valid use-case where teams love auto-reload on some apps and on few they just need notifications. It will be awesome if this feature can be part of reloader,.

karl-johan-grahn commented 1 year ago

Are you thinking about a metric or a log or both?

AnuragEkkati commented 1 year ago

There can be metric, log and slack/webhook notification which is a feature i added in the past to reloader.

AnuragEkkati commented 1 year ago

@faizanahmad055 any thoughts on this ?

I was also thinking this would be a beginning of a bigger feature, "Approval based Reload" say from Slack.

I don't have design in mind, but this would be a killer feature as many of our SREs want to handle the reloads by setting up the downtime notifications.

faizanahmad055 commented 1 year ago

@AnuragEkkati indeed the idea is good but there are a few reservations 1- we can do this as simple as a metric and them people can setup alerts based on that metric. But important thing to note here, reloader detects the change events for all the secrets and configmaps in it's scope (namespace or cluster). So the metric will be overwhelmed and there will be a lot of notifications specifically if reloader is running in cluster scope

2- we can do implement a rest client that will send a request to an endpoint when the change is detected and reloader has decided that the change should result in a pod restart. But in that case still some implementation is needed.

3- I currently don't have a design in mind where reloader should wait for the user input. We should not block reloader. So may be in that case we need to setup a rest controller which listens to user input and then reload. But this possibility has to be investigated.