Installing with Helm

Keel runs as a single container and can upgrade itself when new version is available

Helm chart is available on KubeApps stable charts and Github here.

Keel installation with Helm:

Installing the Chart with Kubernetes provider support

Docker image polling and Kubernetes provider are set by default, then Kubernetes deployments can be upgraded when new Docker image is available:

helm repo up
helm upgrade --install keel stable/keel

Installing the Chart with Helm provider support

Docker image polling is set by default, but we need to enable Helm provider support, then Helm releases can be upgraded when new Docker image is available:

helm upgrade --install keel stable/keel --set helmProvider.enabled="true"

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:
  # 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
  images:
    - 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 User Guide.

Also you should check the Webhooh 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.

Configuration

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 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

If you have any problems deploying or configuring Keel - raise an issue.