0.7.2-0.1.0 • Published 5 years ago

@helm-charts/banzaicloud-stable-keel v0.7.2-0.1.0

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

@helm-charts/banzaicloud-stable-keel

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

FieldValue
Repository Namebanzaicloud-stable
Chart Namekeel
Chart Version0.7.2
NPM Package Version0.1.0
# Default values for keel.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

image:
  repository: keelhq/keel
  tag: 0.12.0
  pullPolicy: IfNotPresent

# Enable insecure registries
insecureRegistry: false

# Polling is enabled by default,
# you can disable it setting value below to false
polling:
  enabled: true

# Helm provider support
helmProvider:
  enabled: true
  tillerAddress: 'tiller-deploy.kube-system.svc.cluster.local:44134'

# Google Container Registry
# GCP Project ID
gcr:
  enabled: false
  projectId: ''
  pubSub:
    enabled: false

# Notification level (debug, info, success, warn, error, fatal)
notificationLevel: info

# AWS Elastic Container Registry
# https://keel.sh/v1/guide/documentation.html#Polling-with-AWS-ECR
ecr:
  enabled: false
  accessKeyId: ''
  secretAccessKey: ''
  region: ''

# Webhook Notification
# Remote webhook endpoint for notification delivery
webhook:
  enabled: false
  endpoint: ''

# Slack Notification
# bot name (default keel) must exist!
slack:
  enabled: false
  botName: ''
  token: ''
  channel: ''
  approvalsChannel: ''

# Hipchat notification and approvals
hipchat:
  enabled: false
  token: ''
  channel: ''
  approvalsChannel: ''
  botName: ''
  userName: ''
  password: ''

mattermost:
  enabled: false
  endpoint: ''

# Keel service
# Enable to receive webhooks from Docker registries
service:
  enabled: false
  type: LoadBalancer
  externalPort: 9300
  clusterIP: ''

# Webhook Relay service
# If you don’t want to expose your Keel service, you can use https://webhookrelay.com/
# which can deliver webhooks to your internal Keel service through Keel sidecar container.
webhookRelay:
  enabled: false
  bucket: ''
  # webhookrelay.com credentials
  # Set the key and secret values here to create the keel-webhookrelay secret with this
  # chart -or- leave key and secret blank and create the keel-webhookrelay secret separately.
  key: ''
  secret: ''
  # webhookrelay docker image
  image:
    repository: webhookrelay/webhookrelayd
    tag: latest
    pullPolicy: IfNotPresent

# Keel self-update
# uncomment lines below if you want Keel to automaticly
# self-update to the latest release version
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
      tag: image.tag

# RBAC manifests management
rbac:
  enabled: true

# Resources
resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 50m
    memory: 64Mi

# NodeSelector
nodeSelector: {}

affinity: {}

tolerations: {}

# base64 encoded json of GCP service account
# more info available here: https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform
# e.g. --set googleApplicationCredentials=$(cat <JSON_KEY_FIEL> | base64)
googleApplicationCredentials: ''

# Enable DEBUG logging
debug: false

# This is used by the static manifest generator in order to create a static
# namespace manifest for the namespace that keel is being installed
# within. It should **not** be used if you are using Helm for deployment.
createNamespaceResource: false

podAnnotations: {}

aws:
  region: null

podDisruptionBudget:
  enabled: false
  maxUnavailable: 1
  minAvailable: null

Keel - automated Kubernetes deployments for the rest of us

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

Installing

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

$ helm upgrade --install keel --namespace keel keel/

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 --namespace keel --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 --purge 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 providertrue
gcr.enabledEnable/disable GCR Registryfalse
gcr.projectIDGCP Project ID GCR belongs to
gcr.pubsub.enabledEnable/disable GCP Pub/Sub triggerfalse
ecr.enabledEnable/disable AWS ECR Registryfalse
ecr.accessKeyIdAWS_ACCESS_KEY_ID for ECR Registry
ecr.secretAccessKeyAWS_SECRET_ACCESS_KEY for ECR Registry
ecr.regionAWS_REGION for ECR Registry
webhook.enabledEnable/disable Webhook Notificationfalse
webhook.endpointRemote webhook endpoint
slack.enabledEnable/disable Slack Notificationfalse
slack.tokenSlack token
slack.channelSlack channel
slack.approvalsChannelSlack channel for approvals
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
rbac.enabledEnable/disable RBAC installationfalse
hipchat.enabledEnable/disable hipchat integrationfalse
hipchat.tokenHipchat token
hipchat.channelHipchat channel
hipchat.approvalsChannelHipchat channel for approvals
hipchat.botNameName of the Hipchat bot
hipchat.userNameHipchat username in Jabber format
hipchat.passwordHipchat password for approvals user
googleApplicationCredentialsGCP Service account key configurable
notificationLevelKeel notification levelinfo

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 --namespace keel -f values.yaml keel/

Tip: You can use the default values.yaml