Sign inSign up

kubegreen/kube-green

Sponsored OSS

By kube-green

•Updated 5 months ago

Official kube-green controller image

Image
Integration & delivery
Developer tools
Monitoring & observability
1

1M+

kubegreen/kube-green repository overview

Go Report Card Coverage Security Coverage Status Documentations Adopters

image

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.19 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

To run integration tests:

make e2e-test

⁠Deployment

To deploy kube-green in live systems, follow the docs⁠.

To run kube-green for development purpose, you can use ko⁠ to deploy in a KinD cluster. It is possible to start a KinD cluster running kind create cluster --name kube-green-development. To deploy kube-green using ko, run:

make local-run clusterName=kube-green-development

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

  1. 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 include v as first char.
  2. 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⁠!

Tag summary

Content type

Image

Digest

sha256:e8515e56c…

Size

17.3 MB

Last updated

5 months ago

docker pull kubegreen/kube-green

This week's pulls

Pulls:

6,209

Last week