Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
177 lines (124 sloc) 8.1 KB
title description type order vue_version dev_size min_size gz_size ro_gz_size
CLI, daemon or Kubernetes deployment installation instructions

Keel doesn't need a database. Keel doesn't need persistent disk. It gets all required information from your cluster. This makes it truly cloud-native and easy to deploy.

Deploying with kubectl

Keel can run anywhere and will do its job as long as it can connect to your Kubernetes environment. Since you have (or plan to have) Kubernetes environment, this guide will show you how to deploy Keel inside your Kubernetes cluster.


We assume that your kubectl can access Kubernetes environment. If you have multiple environments, you should use kubectl config use-context [your cluster] command.

Configuration sample files are available in Keel repository on GitHub here and here.


You can find sample deployments in repository under deployments directory. You can either clone whole repository or just download that file. Edit settings (depending on your environment whether you want to use Google Container Registry PUBSUB) or notifications and create it. All configuration is done through environment variables.

Some available configuration options:

  • POLL - removing this environment variable will disable poll support.
  • PUBSUB and PROJECT_ID - environment variables to enable automated integration with Google Container Registry. Set PROJECT_ID to your google cloud project ID.
  • WEBHOOK_ENDPOINT - provide an endpoint where Keel should send notifications.
  • SLACK_TOKEN - provide Slack token where Keel should send notifications, more info on getting token in the docs.
  • HELM_PROVIDER - enable Helm provider.

Once you are happy with environment variables, create it:

kubectl create -f deployment-rbac.yaml

That's it, to check whether it successfully started - check pods:

kubectl -n keel get pods

You should see something like this:

$ kubectl -n keel get pods
NAME                    READY     STATUS    RESTARTS   AGE
keel-2732121452-k7sjc   1/1       Running   0          14s

Uninstalling Keel

To remove Keel from your system, simply use existing deployment file:

kubectl delete -f deployment-rbac.yaml

Or delete the namespace.

Deploying with Helm


  • Helm
  • Kubernetes

You need to add this Chart repo to Helm:

helm repo add keel-charts 
helm repo update

Install through Helm (with Helm provider enabled by default):

Keel must be installed into the same namespace as Tiller, typically kube-system

helm upgrade --install keel --namespace=kube-system keel-charts/keel

If you work mostly with regular Kubernetes manifests, you can install Keel without Helm provider support:

helm upgrade --install keel --namespace=keel keel-charts/keel --set helmProvider.enabled="false" 

Setting up Helm release to be automatically updated by Keel

Add the following to your app's values.yaml file and do helm upgrade ...:

  # keel policy (all/major/minor/patch/force)
  policy: all
  # trigger type, defaults to events such as pubsub, webhooks
  trigger: poll
  # polling schedule
  pollSchedule: "@every 3m"
  # images to track and update
    - repository: image.repository # it must be the same names as your app's values
      tag: image.tag # it must be the same names as your app's values

The same can be applied with --set flag without using values.yaml file:

helm upgrade --install whd webhookdemo --reuse-values \
  --set keel.policy="all",keel.trigger="poll",keel.pollSchedule="@every 3m" \
  --set keel.images[0].repository="image.repository" \
  --set keel.images[0].tag="image.tag"

You can read in more details about supported policies, triggers and etc in the docs.

Also you should check the Webhook demo app and it's chart to have more clear idea how to set automatic updates.

Uninstalling the Chart

To uninstall/delete the keel deployment:

helm delete keel

The command removes all the Kubernetes components associated with the chart and deletes the release.


The following table lists has the main configurable parameters (polling, triggers, notifications, service) of the Keel chart and they apply to both Kubernetes and Helm providers:

Parameter Description Default
polling.enabled Docker registries polling true
helmProvider.enabled Enable/disable Helm provider false
gcr.enabled Enable/disable GCR Registry false
gcr.projectId GCP Project ID GCR belongs to
gcr.pubsub.enabled Enable/disable GCP Pub/Sub trigger false
webhook.enabled Enable/disable Webhook Notification false
webhook.endpoint Remote webhook endpoint
slack.enabled Enable/disable Slack Notification false
slack.token Slack token Slack channel
service.enable Enable/disable Keel service false
service.type Keel service type LoadBalancer
service.externalPort Keel service port 9300
webhookRelay.enabled Enable/disable WebhookRelay integration false
webhookRelay.key WebhookRelay key
webhookRelay.secret WebhookRelay secret
webhookRelay.bucket WebhookRelay bucket

Specify each parameter using the --set key=value[,key=value] argument to helm install.

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

helm install --name keel -f values.yaml stable/keel

Tip: You can use the default values.yaml.