User guide

your app specific update information is described through labels, annotations and chart configuration

Keel aims to be simple to use and operate in the background so users can focus on important things like writing code, testing and admiring their creations.

Keel supports app specific policies, multiple providers, triggers and notification extensions. This guide should provide you a quick overview of the system.

Policies

Use policies to define when you want your application to be updated. Providers can have different mechanisms of getting configuration for your application, but policies are consistent across all of them. Following semver best practices allows you to safely automate application updates.

Available policies:

  • all - update whenever there is a version bump
  • major - update major & minor & patch versions (same as all)
  • minor - update only minor & patch versions (ignores major)
  • patch - update only patch versions (ignores minor and major versions)
  • force - force update even if tag is not semver, ie: latest

Providers

Providers are direct integrations into schedulers or other tools (ie: Helm). Providers are handling events created by triggers. Each provider can handle events in different ways, for example Kubernetes provider identifies impacted deployments and starts rolling update while Helm provider communicates with Tiller, identifies releases by Chart and then starts update.

Available providers:

While the goal is often the same, different providers can choose different update strategies.

Triggers

Triggers are entry points into the Keel. Their task is to collect information regarding updated images and send events to providers.

Available triggers:

Approvals

Users can specify on deployments and Helm charts how many approvals do they have to collect before a resource gets updated. Main features:

  • non-blocking - multiple deployments/helm releases can be queued for approvals, the ones without specified approvals will be auto updated.
  • extensible - current implementation focuses on Slack but additional approval collection mechanisms are trivial to implement.
  • out of the box Slack integration - the only needed Keel configuration is Slack auth token, Keel will start requesting approvals and users will be able to approve.
  • stateful - uses github.com/rusenask/k8s-kv for persistence so even after updating itself (restarting) it will retain existing info.
  • self cleaning - expired approvals will be removed after deadline is exceeded.

Details on how to configure your approvals:

Notifications

Keel can send notifications on successful or failed deployment updates.

Supported notification extensions: