/k8s-eviction-extender

Lets you allow/disallow eviction requests based on pod annotations.

Primary LanguageGoGNU Affero General Public License v3.0AGPL-3.0

k8s-eviction-extender

This project configures a validating webhook to intercept eviction requests made against pods on the cluster. These requests are checked against pod annotations to determine whether or not the pod can be evicted.

To prevent eviction, add the annotation to the pod: k8s-eviction-extender.michaelgugino.github.com/no-evict

No eviction will take place while this annotation is present.

When a pod eviction request is created, the annotation k8s-eviction-extender.michaelgugino.github.com/evict-requested will be added. Another component should watch pods for this annotation and remove the prevent annotation when appropriate.

Install

Warning

This webhook will mutate pods by adding an annotation. The webhook will be exposed open to requests from any pods (and possibly elsewhere) running on the cluster by default. Please follow the steps here to secure the webhook server:

https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/

Install

Tested with OpenShift 4.7 and k8s 1.20.

When installing on OpenShift, you can kubectl apply the assets directory of this project.

When installing on kubernetes, you will need to provide your own TLS cert key pair and insert an appropriate CA into the validatingwebhook configuration.