5

We're running multiple, globally distributed Kubernetes clusters that need to run the same software. When we release an update to this software (as a Docker image uploaded to a private Docker repo), our current deployment pipeline needs to iterate over a list of known deployments, connect to each cluster and update the right Deployment there. This is a cumbersome, fragile, slow and non-scalable process.

I'm looking for a way to solve this by creating deployments that periodically check for a new Docker image version and when they detect a change, they pull the new image and update the right Deployment. This should be done by each cluster independently so there's no central process connecting to each cluster and a list of clusters to maintain etc.

There is no requirement that all clusters update at the same time, but the idea is to have eventual consistency with no central management.

Is there an existing tool that does this or solves this problem in a different way?

shevron
  • 326
  • 2
  • 4
  • 10

2 Answers2

4

For anyone stumbling on this from google, have a look at https://keel.sh/. It does exactly what OP asked for.

Gab
  • 183
  • 1
  • 8
3

Sounds like Weave's Flux answers your requirements:

https://github.com/weaveworks/flux

We have it installed in one of our customer's cluster and it works great. It will watch for changes to your Docker images and perform a redeploment. Kinda exactly how you described it in your question.

The project is a bit new so setting it up can be a bit tedious... But eventually it works!