Go to file
Benjamin Moermans e44b27a563 Fix slack bot to use the new socket API.
The bot can now send interactive message for approval requests as well
as react to bot mention event.
The bot will try to update the interactive message when possible.
2024-07-31 21:22:05 +02:00
.dependabot add dependabot config 2020-04-19 20:45:47 +02:00
.pipeline GCP cloud build integration and chart lint and install test 2018-11-23 12:54:57 +00:00
.scripts Revert unnecessary sh --> bash change 2020-09-08 23:05:48 -05:00
.test ci: fix ct timeout 2021-01-05 13:33:11 +01:00
approvals reverted file permissions from 755 to 644 2020-06-08 07:22:56 -07:00
bot Fix slack bot to use the new socket API. 2024-07-31 21:22:05 +02:00
chart update index yaml with right url for tgz 2024-04-16 11:30:54 +02:00
cmd/keel Add discord webhook sender 2023-08-06 08:38:02 +10:00
constants Fix slack bot to use the new socket API. 2024-07-31 21:22:05 +02:00
deployment Merge pull request #692 from vorburger/patch-1 2023-03-05 20:11:05 +00:00
extension Fix slack bot to use the new socket API. 2024-07-31 21:22:05 +02:00
internal add unit tests 2023-08-09 03:46:49 +00:00
pkg fix: update test 2023-09-02 14:03:58 +01:00
provider add unit tests 2023-08-09 03:46:49 +00:00
registry Perform HEAD request, fall back to GET 2023-04-21 08:32:29 +10:00
secrets Build with kube 1.24 (#1) 2023-03-01 11:51:58 -05:00
static added readme 2019-05-29 23:06:16 +01:00
tests Add support for OCI images 2023-04-11 15:53:31 +10:00
trigger Fix grammar 2023-04-11 15:54:01 +10:00
types add unit tests 2023-08-09 03:46:49 +00:00
ui Updated copyright year 2020-10-18 13:04:53 -06:00
util Merge pull request #507 from nnt1054/feature/helm3_provider 2020-07-14 10:32:06 +01:00
version updated repo 2017-11-01 18:25:28 +00:00
.drone.yml Build with kube 1.24 (#1) 2023-03-01 11:51:58 -05:00
.gitignore Add SemVer pre-release handling 2020-04-19 01:36:21 +02:00
Dockerfile Update Go to 1.20.5 2023-08-30 06:01:46 -04:00
Dockerfile.aarch64 Dockerfiles for arm 2018-10-14 14:00:55 +01:00
Dockerfile.armhf makefile for arm 2020-03-02 23:44:15 +00:00
Dockerfile.debian move to go 1.14.2 2020-04-19 20:07:49 +02:00
Dockerfile.local vendor updated 2017-08-04 22:15:11 +01:00
LICENSE license, readme 2017-06-11 23:44:13 +01:00
Makefile Build with kube 1.24 (#1) 2023-03-01 11:51:58 -05:00
go.mod adding missing dependencies 2024-04-10 11:39:50 +02:00
go.sum adding missing dependencies 2024-04-10 11:39:50 +02:00
readme.md more readme cleanup 2023-03-05 20:35:01 +00:00
values.yaml cleanup 2023-03-05 20:26:11 +00:00

readme.md

Go Report Docker Pulls Drone Status

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 f***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, Quay and Azure container registry 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, Hipchat, Mattermost and standard webhook notifications, more info here

Support

Support Keel's development by:

Helm quick start

Prerequisites:

You need to add this Chart repo to Helm:

helm repo add keel https://charts.keel.sh 
helm repo update

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

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

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

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

To install for Helm v3, set helmProvider.version="v3" (default is "v2"):

helm install keel keel/keel --set helmProvider.version="v3" 

That's it, see Configuration section now.

Quick Start

A step-by-step guide to install Keel on your Kubernetes cluster is viewable on the Keel website:

https://keel.sh/examples/#example-1-push-to-deploy

Configuration

Once Keel is deployed, you only need to specify update policy on your deployment file or Helm chart:

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: wd
  namespace: default
  labels: 
    name: "wd"
  annotations:
    keel.sh/policy: minor # <-- policy name according to https://semver.org/
    keel.sh/trigger: poll # <-- actively query registry, otherwise defaults to webhooks
spec:
  template:
    metadata:
      name: wd
      labels:
        app: wd        
    spec:
      containers:                    
        - image: karolisr/webhook-demo:0.0.8
          imagePullPolicy: Always            
          name: wd
          command: ["/bin/webhook-demo"]
          ports:
            - containerPort: 8090

No additional configuration is required. Enabling continuous delivery for your workloads has never been this easy!

Documentation

Documentation is viewable on the Keel Website:

https://keel.sh/docs/#introduction

Contributing

Before starting to work on some big or medium features - raise an issue here so we can coordinate our efforts.

We use pull requests, so:

  1. Fork this repository
  2. Create a branch on your local copy with a sensible name
  3. Push to your fork and open a pull request

Developing Keel

If you wish to work on Keel itself, you will need Go 1.12+ installed. Make sure you put Keel into correct Gopath and go build (dependency management is done through dep).

To test Keel while developing:

  1. Launch a Kubernetes cluster like Minikube or Docker for Mac with Kubernetes.
  2. Change config to use it: kubectl config use-context docker-for-desktop
  3. Build Keel from cmd/keel directory.
  4. Start Keel with: keel --no-incluster. This will use Kubeconfig from your home.

Running unit tests

Get a test parser (makes output nice):

go get github.com/mfridman/tparse

To run unit tests:

make test

Running e2e tests

Prerequisites:

  • configured kubectl + kubeconfig
  • a running cluster (test suite will create testing namespaces and delete them after tests)
  • Go environment (will compile Keel before running)

Once prerequisites are ready:

make e2e