https://github.com/mercedes-benz/garm-provider-k8s
a kubernetes provider for garm
https://github.com/mercedes-benz/garm-provider-k8s
garm github-actions kubernetes
Last synced: 21 days ago
JSON representation
a kubernetes provider for garm
- Host: GitHub
- URL: https://github.com/mercedes-benz/garm-provider-k8s
- Owner: mercedes-benz
- License: mit
- Created: 2023-09-22T13:24:44.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-02T12:13:58.000Z (28 days ago)
- Last Synced: 2025-04-02T13:25:16.726Z (28 days ago)
- Topics: garm, github-actions, kubernetes
- Language: Go
- Homepage:
- Size: 276 KB
- Stars: 11
- Watchers: 7
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
[](https://goreportcard.com/report/github.com/mercedes-benz/garm-provider-k8s)

[](https://github.com/mercedes-benz/garm-provider-k8s/actions/workflows/build.yaml)# garm-provider-k8s
- [✨ What is the
garm-provider-k8s
?](#-what-is-the-garm-provider-k8s)
- [🔀 Versioning](#-versioning)
- [Kubernetes Version](#kubernetes-version)
- [🚀 Installation](#-installation)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [💻 Development](#-development)
- [Contributing](#contributing)
- [Code of Conduct](#code-of-conduct)
- [License](#license)
- [Provider Information](#provider-information)## ✨ What is the `garm-provider-k8s`?
`garm-provider-k8s` is a [Kubernetes®](https://kubernetes.io) a plugin for [garm](https://github.com/cloudbase/garm) which enables garm to spin up Pod based [GitHub® Action runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners) on a Kubernetes cluster.
## 🔀 Versioning
### Kubernetes Version
`garm-provider-k8s` uses [`client-go`](https://github.com/kubernetes/client-go) to talk with
Kubernetes clusters. The supported Kubernetes cluster version is determined by `client-go`.
The compatibility matrix for client-go and Kubernetes cluster can be found
[here](https://github.com/kubernetes/client-go#compatibility-matrix).## 🚀 Installation
### Prerequisites
1. A Kubernetes cluster to spin up runners with the `garm-provider-k8s` plugin.
2. A working `garm` installation.### Installation
#### `garm-provider-k8s`
We are releasing the `garm-provider-k8s` as a simple go binary. You can find the latest release [here](https://github.com/mercedes-benz/garm-provider-k8s/releases).
Adjust your existing `garm` config, so garm can register to provider plugin at runtime. Make sure garm has access to the binary and provider specific config path like so:```toml
[[provider]]
name = "kubernetes_external"
description = "kubernetes provider"
provider_type = "external"
[provider.external]
config_file = "/path/to/garm-provider-k8s-config.yaml"
provider_executable = "/path/to/provider/binary/garm-provider-k8s"
environment_variables = ["KUBERNETES_"] # this must be set if the runner-pods should run in the same cluster as garm itself is running and the attached serviceaccount should be used to create pods and the runner namespace
```The provider specific config file should look like this:
```yaml
kubeConfigPath: "" # path to a kubernetes config file - if empty the in cluster config will be used
runnerNamespace: "runner" # namespace to create the runner pods in
podTemplate: # pod template to use for the runner pods / helpful to add sidecar containers
spec:
volumes:
- name: my-additional-volume
emptyDir: {}
flavors: # configure different flavors which will be set as `ResourceRequirements` at runner container and can be targeted from a pool via its `flavor` property
micro:
requests:
cpu: 50m
memory: 50Mi
limits:
memory: 200Mi
ultra:
requests:
cpu: 500m
memory: 500Mi
limits:
memory: 1Gi
```## 💻 Development
For local development, please read the [development guide](DEVELOPMENT.md).
## Contributing
We welcome any contributions.
If you want to contribute to this project, please read the [contributing guide](CONTRIBUTING.md).## Code of Conduct
Please read our [Code of Conduct](https://github.com/mercedes-benz/foss/blob/master/CODE_OF_CONDUCT.md) as it is our base for interaction.
## License
This project is licensed under the [MIT LICENSE](LICENSE).
## Provider Information
Please visit for information on the provider.
Notice: Before you use the program in productive use, please take all necessary precautions,
e.g. testing and verifying the program with regard to your specific use.
The source code has been tested solely for our own use cases, which might differ from yours.