5 ms·
We’ve been using a similar solution for a while now: pushes to GitHub trigger Travis CI to build a Docker images. These get pushed to Docker Hub or Quay, which
by praseodym 9y ago
We’ve been using a similar solution for a while now: pushes to GitHub trigger Travis CI to build a Docker images. These get pushed to Docker Hub or Quay, which triggers a webhook to Keel.sh[1] running in our Kubernetes cluster. Keel then updates the Kubernetes deployment to perform a rolling update of the application.
1: https://keel.sh https://keel.sh
- deforciant 9y agoThanks for the shout-out! Keel author here. I have created Keel exactly for these workflows where something (Travis CI, Docker cloud, Google Cloud Builder - my favourite due to the pricing and proper speed) builds an image and then we would want to trigger a deployment update. I was running workloads on GKE and I found that while it's easy to get images being built, there was no straightforward way to automate deployment updates. My goal was to tag a release on Github and get a new version deployed in my environment. After searching for similar tools and couldn't find anything lightweight (spinnaker or jenkins were way too big!) I ended up building Keel. Here's an example if anyone has this problem https://keel.sh/v1/examples/enabling-auto-updates.html https://keel.sh/v1/examples/enabling-auto-updates.html.
- cheez 9y agoWhat is it we can achieve with Keel that we can't with Terraform?
- alexnewman 9y agoOr by awk for that matter. Sorry to be silly but terraform solves a completely different problem, which is what happens when you have disparate cloud resources you want to manage. For instance cloud network resources. Using it to manage containers is... Not it's use case.
- antoncohen 9y agoKeel looks nice, thanks for making it! Does Keel include any ability to rollback to a previously deployed version? How to you recommend handling that use case? Keel looks similar to Weave Flux (https://github.com/weaveworks/flux https://github.com/weaveworks/flux). Have you looked at Flux, are you able to compare them? At first glance it looks like Keel is probably easier to setup, but Flux is more feature rich (edits k8s .yaml files in git with updated image tags, has CLI that supports listing deployments and images, can release an old image).
- dankohn1 9y agoCNCF is currently tracking 27 offerings in the CI/CD space, of which 13 are open source: https://landscape.cncf.io/grouping=landscape&landscape=ci-cd https://landscape.cncf.io/grouping=landscape&landscape=ci-cd
- tirumaraiselvan 9y agoHey! Just curious, why not have Travis CI do a kubectl set-image to rollout after pushing the docker image?
- praseodym 9y agoOur Kubernetes API server is only reachable from the internal network, which complicates things. Also, setting up Kubernetes RBAC to allow Travis CI to do a kubectl set-image isn’t trivial either. The best alternative would be to have Travis CI SSH into a box with kubectl. In any case it’s bit more complicated than the setup with Keel we currently have.
- ecthiender 9y ago> Also, setting up Kubernetes RBAC to allow Travis CI to do a kubectl set-image isn’t trivial either. Wouldn't setting up Keel on a Kubernetes cluster be the same effort (permissions, RBAC etc.)?
- tirumaraiselvan 9y agoOn that note, Gitkube supports RBAC as the Remote objects are namespaced. This means two things: 1) Remotes are isolated - have different authorizations for say dev and staging remotes 2) Deployments are isolated - A Remote can only deploy apps in its own namespace.
- praseodym 9y agoKeel has permissions to update all deployments in our cluster. Because it runs within the cluster instead of outside (like Travis CI), and the only interaction with Keel is through webhooks, there is no need for finegrained RBAC. The webhooks only tell Keel that a new image is available, they cannot modify other parts of the Kubernetes deployment directly.
- deleted 9y ago[deleted]
- hashfyre 9y ago
- 1_player 9y agoDo you know of a tool like Keel, but for Docker Swarm?
- deforciant 9y agoHi, if you would want Keel to support Docker Swarm, please create an issue here: https://github.com/keel-hq/keel/issues https://github.com/keel-hq/keel/issues. I planned to add Docker Swarm support from the beginning but a lot of people said that it's unnecessary. It's quite simple to add new providers, they need to implement this interface: // Provider - generic provider interface type Provider interface { Submit(event types.Event) error // <- this is where new image event comes in TrackedImages() ([]*types.TrackedImage, error) // <- provider needs to tell some triggers which images to track (registry watcher) GetName() string Stop() } Even though Keel was created for Kubernetes, later on Helm was added where Keel talks directly to Tiller and doesn't really use K8s API.
- BretFisher 9y agoMaybe https://github.com/v2tec/watchtower https://github.com/v2tec/watchtower, but Keel looks cool.
- 1_player 9y agoDoesn't support Swarm, but thanks for the pointer.
- alberteinstein 9y agoGitkube is simpler since everything is contained in the cluster itself. Image is built and rolled out from within the cluster right now. (gitkube contributor here)