At the end of a pipeline it can be nice to restart a pod. In production this occurs via gitops automatically, but in dev it can be nice to not have to wait for git to sync. Though there are multiple ways to do this common ways are:
- just put the cluster kubeconfig in a secret in the pipeline and use that to restart the pod (a little too powerful)
- create a service account, acquire its token and place in pipeline (safest, but takes some work for each app)
What about a solution similar to reloader? Reloader watches for changes in configmaps and secrets which have a certain annotation and if a they change reloader restarts things. We could just use reloader & make a change to a configmap in order to trigger the reload.
However, what about creating a controller which listens for a webapi call asking for a deployment to be restarted. Then a pipeline could call the appropriate url to get things restarted. By deploying via argocd using an applicationset and using a url convention based on the clustername then all development clusters could be enabled to used this method in their pipelines, consumers would only need to annotate their deployments/statefulset/etc …