An open API service indexing awesome lists of open source software.

https://github.com/caas-team/GoKubeDownscaler

A horizontal autoscaler for Kubernetes workloads
https://github.com/caas-team/GoKubeDownscaler

autoscaler downscaling go golang kube-downscaler kubernetes scaling

Last synced: 6 months ago
JSON representation

A horizontal autoscaler for Kubernetes workloads

Awesome Lists containing this project

README

          

![GoKubeDownscaler Logo](./logo/kubedownscaler-name-light.svg)

GitHub Release
GitHub License
Contributors
Stars
Slack Workspace

A horizontal autoscaler for Kubernetes workloads.
This is a golang port and successor of the popular [(py-)kube-downscaler](https://github.com/caas-team/py-kube-downscaler)
with improvements and quality of life changes.

## Documentation and Guides

The Documentation and Guides can be found on [our website](https://caas-team.github.io/GoKubeDownscaler).

An Offline copy of the documentation can be found in [`website/content/docs`](./website/content/docs) and [`website/content/guides`](./website/content/guides).
In there are Markdown files which can be viewed in any text editor or inside of a Markdown Viewer.

## Installation

Installation is done via the [Helm Chart](./deployments/chart/).
Information on how to install the Downscaler is on [our website](https://caas-team.github.io/GoKubeDownscaler/guides/getting-started/installation).

### Missing Features

Currently the GoKubeDownscaler is still a WIP.
This means that there still might be some features missing from the py-kube-downscaler.
You can find a list of the known-missing features [under the `missing feature` label](/../../labels/missing%20feature).
If you think that any other features are missing or you have an idea for a new feature, feel free to open an [Issue](/../../issues/).

## Developing

This section covers the basics of developing on this repo, a more detailed guide can be found on [our website](https://caas-team.github.io/GoKubeDownscaler/guides/developing).

Please read the [contribution manifest](./CONTRIBUTING.md).

### Cloning the Repository

```bash
git clone https://github.com/caas-team/GoKubeDownscaler.git
cd GoKubeDownscaler
```

### Setting up Pre-Commit

```bash
brew install pre-commit
pre-commit install
brew install golangci-lint
brew install gofumpt
```

### Testing the Downscaler

#### Running the Unit Tests

```bash
go test -v --cover ./...
```

#### Running the Downscaler Locally

The downscaler can be run locally by specifying a kubeconfig to use.
The kubeconfig should have at least the permissions as the Helm Charts [role.yaml](./deployments/chart/templates/role.yaml).
The downscaler will use the current-context in the kubeconfig.

```bash
go run -k=path/to/kubeconfig # ... additional configuration
```

### Testing the Website

#### Installing Dependencies

```bash
npm install --prefix website
```

#### Running It Locally

```bash
npm run --prefix website start
```

after that the website is available on `localhost:3000/GoKubeDownscaler`