How many of your dev/preview pods stay on during weekends? Or at night? It's a waste of resources! And money! But fear not, kube-green is here to the rescue.
kube-green is a simple k8s addon that automatically shuts down (some of) your resources when you don't need them.
If you already use kube-green, add you as an adopter!
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See how to install the project on a live system in our docs.
Prerequisites
Make sure you have Go installed (download). Version 1.17 or higher is required.
Installation
To have kube-green running locally just clone this repository and install the dependencies running:
go get
Running the tests
There are different types of tests in this repository.
It is possible to run all the unit tests with
make test
There are also some tests which run using kuttl. To install kuttl follow this guide.
To run this tests, set up a Kubernetes cluster using kind
kind create cluster --name kube-green-testing
Build the docker image
make docker-test-build
and load the docker image to test
kind load docker-image kubegreen/kube-green:e2e-test --name kube-green-testing
After this, it's possible to start the tests (skipping the cluster deletion)
kubectl kuttl test --skip-cluster-delete
Deployment
To deploy kube-green in live systems, follow the docs.
Usage
The use of this operator is very simple. Once installed on the cluster, configure the desired CRD to make it works.
See here the documentation about the configuration of the CRD.
CRD Examples
Pods running during working hours with Europe/Rome timezone, suspend CronJobs and exclude a deployment named api-gateway
:
apiVersion: kube-green.com/v1alpha1
kind: SleepInfo
metadata:
name: working-hours
spec:
weekdays: "1-5"
sleepAt: "20:00"
wakeUpAt: "08:00"
timeZone: "Europe/Rome"
suspendCronJobs: true
excludeRef:
- apiVersion: "apps/v1"
kind: Deployment
name: api-gateway
Pods sleep every night without restore:
apiVersion: kube-green.com/v1alpha1
kind: SleepInfo
metadata:
name: working-hours-no-wakeup
spec:
sleepAt: "20:00"
timeZone: Europe/Rome
weekdays: "*"
To see other examples, go to our docs.
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Versioning
We use SemVer for versioning. For the versions available, see the release on this repository.
How to upgrade the version
To upgrade the version:
make release version=v{{NEW_VERSION_TO_TAG}}
where{{NEW_VERSION_TO_TAG}}
should be replaced with the next version to upgrade. N.B.: version should includev
as first char.git push --tags origin v{{NEW_VERSION_TO_TAG}}
API Reference documentation
API reference is automatically generated with this tool. To generate it automatically, are added in api versioned folder a file doc.go
with the content of file groupversion_info.go
and a comment with +genclient
in the sleepinfo_types.go
file for the resource type.
License
This project is licensed under the MIT License - see the LICENSE file for details
Acknowledgement
Special thanks to JGiola for the tech review.
⭐
Give a Star! If you like or are using this project, please give it a star. Thanks!
Adopters
Here the list of adopters of kube-green.
If you already use kube-green, add you as an adopter!