DaemonSet upgrade controller for kubernetes
3.3K
Controller which manages Kubernetes DaemonSet upgrades. It stores history using PodTemplates, allows rollback to previous version and pause the upgrade process.
Daemon upgrade controller can be started as a docker container inside of the Kubernetes cluster.
Create new file called controller.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: daemonupgrader
spec:
replicas: 1
template:
metadata:
labels:
app: daemonupgrader
spec:
containers:
- name: daemonupgrader
image: mirantis/k8s-daemonupgradecontroller:latest
imagePullPolicy: IfNotPresent
and start the container: kubectl --namespace kube-system -f controller.yml
All configuration is done by setting options in daemon annotations.
By default upgrade controller will not touch the running daemons. To enable upgrades, strategy type needs to be set:
daemonset.kubernetes.io/strategyType: "RollingUpdate"
from now on whenever Spec.Template is changed upgrade controller will delete old pods
and new pods with new template will be created. By default controller deletes one pod at the time and
waits for new to be in Ready state. It can by configured by setting how many pods can be unavailable
during the upgrade:
daemonset.kubernetes.io/maxUnavailable: "1"
When set to "true" or "1" it pauses upgrades.
Sets the revision number to which rollback. When rollback is done it's set to empty string.
For now two strategies are supported:
Sets how many pods can be deleted in one step during the upgrade. Default: 1.
Put this project in the $GOPATH
make build
make build-image
make unit
Start container with daemon upgrade controller. Make sure that it can connect to Kubernetes cluster. If kubernetes dind cluster is used then container can be started using docker-compos.yaml file.
make e2e
Łukasz Oleś, github: lukaszo, IRC: salmon_, k8s slack: lukaszo
Apache 2.0 License
Content type
Image
Digest
Size
22.2 MB
Last updated
about 9 years ago
Requires Docker Desktop 4.37.1 or later.
Pulls:
41
Last week