keel

Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates

MPL-2.0 License

Stars
2.3K
Committers
91
keel - 0.13.0-rc2

Published by rusenask almost 6 years ago

keel - 0.13.0-rc1

Published by rusenask almost 6 years ago

Added:

  • Policies and trigger type (if poll) can now be specified in annotations, this unblocks:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: wd
  namespace: default
  labels: 
      name: "wd"
  annotations:
      keel.sh/policy: "glob:build-*"  # <- build-1, build-2, build-foo will match this. 
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: wd
  namespace: default
  labels: 
      name: "wd"
  annotations:
      keel.sh/policy: "regexp:^([a-zA-Z]+)$"

Fixed:

  • a bug in docker registry notifications handler
  • a bug in helm provider where it was complaining on each helm chart that didn't have a keel config
keel - 0.12.0

Published by rusenask about 6 years ago

Added:

keel - 0.11.2

Published by rusenask about 6 years ago

keel - 0.11.1

Published by rusenask about 6 years ago

Added:

keel - 0.11.0

Published by rusenask about 6 years ago

Fixed:

Added:

New features introduced regarding how we do policies https://github.com/keel-hq/keel/issues/252 https://github.com/keel-hq/keel/issues/223.

Basically, policy is now an interface:

type Policy interface {
	ShouldUpdate(current, new string) (bool, error)
	Name() string
	Type() PolicyType
}

Kubernetes and Helm providers were refactored into a relatively small implementations of this policy interface. For example unversioned updates (force) becomes a file with less than 20 lines of code.

Additionally, I am adding two new policies:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: wd
  namespace: default
  labels: 
      name: "wd"
      keel.sh/policy: "glob:build-*"  # <- build-1, build-2, build-foo will match this. 
  • Regexp - well, regexp based matcher, for example keel.sh/policy = regexp:^([a-zA-Z]+)$

As a user, do I have to change anything?

Not as far as I know, existing policies (patch, minor, major, all, force) were ported to the new design as is and should just continue to work.

Policy "all" now behaves differently from "major"

Since all policy was doing the same as major, we will be slightly empowering it, however it's still strictly semver policy:

1.4.5-rc1 -> 1.4.5-rc2 - will update
1.4.5-rc2 -> 1.4.5-rc1 - will not update
1.4.5-rc1 -> 1.4.5 - will update

Little change to polling trigger

Since the introduction of polling trigger, we had some code to skip updates with force policy. This was required for a scenario where multiple tags of the same image were watched by multiple deployments (for example 3 branches: dev, prod, staging). However, since then we have got "match tag" functionality, so no need for that anymore. What is more, now you can just specify a regexp or a glob to match instead of blind force.

keel - 0.10.0

Published by rusenask about 6 years ago

Added:

keel - 0.9.7

Published by rusenask about 6 years ago

Added:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
  labels: 
    # force policy will ensure that deployment is updated
    # even when tag is unchanged (latest remains)
    keel.sh/policy: force
    keel.sh/trigger: poll
  annotations:
    keel.sh/pollSchedule: "@every 30s"
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: keelhq/cron-example:latest            
          restartPolicy: OnFailure
keel - 0.9.6

Published by rusenask about 6 years ago

Changed:

  • Using in-memory cache for approvals (configmaps causing too much trouble at the moment, we should probably use CRDs for state).
keel - 0.9.5

Published by rusenask over 6 years ago

Added:

keel - 0.9.4

Published by rusenask over 6 years ago

Changed:

  • Once approval is received and a workload is updated, deleting approval. This addresses an issue when no versioning is being used and after the initial approval, workloads would be updated due to a previously approved image. Initial investigation into digest checks reached a dead end as not all triggers provide digest. https://github.com/keel-hq/keel/issues/222
keel - 0.9.3

Published by rusenask over 6 years ago

Added:

Example value:

DOCKER_REGISTRY_CFG={"auths":{"https://index.docker.io/v1/":{"username":"login","password":"somepass","email":"[email protected]","auth":"longbase64secret"}}}
keel - 0.9.2

Published by rusenask over 6 years ago

keel - 0.9.1

Published by rusenask over 6 years ago

Fixed:

Updated:

  • Keel is now installed into a specified namespace, thanks @dln

Added:

keel - 0.9.0

Published by rusenask over 6 years ago

Added:

  • DaemonSet, StatefulSet support
  • AWS ECR support
  • Various prometheus metrics

Fixed:

  • Approvals cache bug
keel - 0.9.0-rc5

Published by rusenask over 6 years ago

Fixed:

keel - 0.9.0-rc4

Published by rusenask over 6 years ago

Added:

keel - 0.9.0-rc3

Published by rusenask over 6 years ago

Added:

export AWS_REGION=us-east-2 
export AWS_ACCESS_KEY_ID=AKIA..
export AWS_SECRET_ACCESS_KEY=hEZ... 

There were also changes like credentialshelper package addition which should make it a lot easier to add custom support for different authentication mechanisms.

keel - 0.9.0-rc2

Published by rusenask over 6 years ago

Fixes:

  • Prometheus labels
  • Uninitialised template spec annotations
keel - 0.9.0-rc1

Published by rusenask over 6 years ago