Back to Charts

Keel - automated Kubernetes deployments for the rest of us - DEPRECATED

stable/keel/README.md

latest7.1 KB
Original Source

Keel - automated Kubernetes deployments for the rest of us - DEPRECATED

This chart is deprecated! You can find the new chart in:

Keel is a tool for automating Kubernetes deployment updates. Keel is stateless, robust and lightweight.

Keel provides several key features:

  • Kubernetes and Helm providers - Keel has direct integrations with Kubernetes and Helm.

  • No CLI/API - tired of ***ctl for everything? Keel doesn't have one. Gets job done through labels, annotations, charts.

  • Semver policies - specify update policy for each deployment/Helm release individually.

  • Automatic Google Container Registry configuration - Keel automatically sets up topic and subscriptions for your deployment images by periodically scanning your environment.

  • Native, DockerHub and Quay webhooks support - once webhook is received impacted deployments will be identified and updated.

  • Polling - when webhooks and pubsub aren't available - Keel can still be useful by checking Docker Registry for new tags (if current tag is semver) or same tag SHA digest change (ie: latest).

  • Notifications - out of the box Keel has Slack and standard webhook notifications, more info here

Note: For now Keel gets installed into kube-system namespace by default as where Helm's Tiller is installed.

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:

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

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

console
$ 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:

ParameterDescriptionDefault
polling.enabledDocker registries pollingtrue
helmProvider.enabledEnable/disable Helm providerfalse
gcr.enabledEnable/disable GCR Registryfalse
gcr.projectIDGCP Project ID GCR belongs to
gcr.pubsub.enabledEnable/disable GCP Pub/Sub triggerfalse
webhook.enabledEnable/disable Webhook Notificationfalse
webhook.endpointRemote webhook endpoint
slack.enabledEnable/disable Slack Notificationfalse
slack.tokenSlack token
slack.channelSlack channel
slack.approvalChannelSlack approval channel
slack.botNameSlack Bot name
service.enableEnable/disable Keel servicefalse
service.typeKeel service typeLoadBalancer
service.externalPortKeel service port9300
webhookRelay.enabledEnable/disable WebhookRelay integrationfalse
webhookRelay.keyWebhookRelay key
webhookRelay.secretWebhookRelay secret
webhookRelay.bucketWebhookRelay 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,

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

Tip: You can use the default values.yaml