Go to file
Karolis Rusenas cda0fbd21e readme updated 2019-05-29 23:39:49 +01:00
.circleci Revert "move to use go mods" 2019-04-25 17:16:02 +01:00
.pipeline GCP cloud build integration and chart lint and install test 2018-11-23 12:54:57 +00:00
.scripts perms 2018-11-23 14:43:51 +00:00
.test add tiller readiness check 2018-11-23 13:53:53 +00:00
approvals archived approval test 2019-05-16 19:22:55 +01:00
bot using database for approvals 2019-05-09 16:56:53 +01:00
chart/keel Expose docker registry secret credentials 2019-05-28 16:17:33 +02:00
cmd/keel configurable data dir 2019-05-28 12:45:55 +01:00
constants token secret 2019-05-22 23:15:42 +01:00
deployment using command arg when tunnelling 2019-05-29 23:25:46 +01:00
extension fixed approvals 2019-05-09 16:57:25 +01:00
internal getting status 2019-05-23 23:17:33 +01:00
pkg tracked image set endpoint 2019-05-26 17:12:54 +01:00
provider checking whether event was triggered by an approval. If yes - don't create a new one 2019-05-11 10:25:26 +01:00
registry updating registry client 2019-04-25 22:03:04 +01:00
secrets more errors when secrets not found 2019-04-24 22:59:09 +01:00
static added readme 2019-05-29 23:06:16 +01:00
tests ensuring non zero approvals 2019-04-16 22:18:37 +01:00
trigger move into pkg 2019-04-28 17:06:20 +01:00
types number of days to get 2019-05-22 23:17:55 +01:00
ui ui updates 2019-05-28 12:45:27 +01:00
util tracked images endpoint 2019-04-28 17:03:52 +01:00
vendor vendor updated 2019-05-22 23:15:18 +01:00
version updated repo 2017-11-01 18:25:28 +00:00
.drone.yml one more fix to build-ui 2019-05-29 20:10:38 +01:00
.gitignore ignore 2019-05-11 10:27:11 +01:00
Dockerfile configurable data dir 2019-05-28 12:45:55 +01:00
Dockerfile.aarch64 Dockerfiles for arm 2018-10-14 14:00:55 +01:00
Dockerfile.armhf Dockerfiles for arm 2018-10-14 14:00:55 +01:00
Dockerfile.debian bumping Go version to run with go mod 2019-04-25 13:24:03 +01:00
Dockerfile.local vendor updated 2017-08-04 22:15:11 +01:00
Gopkg.lock godep 2019-05-22 23:16:41 +01:00
Gopkg.toml deps 2019-04-26 23:47:40 +01:00
LICENSE license, readme 2017-06-11 23:44:13 +01:00
Makefile makefile updates 2019-05-28 12:46:01 +01:00
readme.md readme updated 2019-05-29 23:39:49 +01:00

readme.md

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

Warp speed quick start

To achieve warp speed, we will be using sunstone.dev service and Minikube.

Start Minikube:

minikube start

Install customized Keel (feel free to change credentials, namespace and version tag) straight from your kubectl.

# To override default latest semver tag, add &tag=x.x.x query argument to the URL below
kubectl apply -f https://sunstone.dev/keel?namespace=default&username=admin&password=admin&tag=latest
# and get Keel IP:
minikube service --namespace default keel --url
http://192.168.99.100:3199

We are overriding default latest semver tag with latest since it has the new UI. If you want to use latest semver, just remove the &tag=latest part from the URL.

Creating remotely accessible Keel instance

Keel can work together with webhook relay tunnels. To deploy Keel with Webhook Relay sidecar you will need to get a token, then pre-create a tunnel and:

kubectl apply -f https://sunstone.dev/keel?namespace=default&tag=ui&username=admin&password=admin&relay_key=TOKEN_KEY&relay_secret=TOKEN_SECRET&relay_tunnel=TUNNEL_NAME&tag=latest

Now, you can access Keel remotely.

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" 

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/v1/guide/quick-start.html

Configuration

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

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/v1/guide/documentation

Contributing

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

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