/yake

(Y)et (A)nother (K)ubernetes (E)ngine

Primary LanguageGoApache License 2.0Apache-2.0

YAKE

YAKE is Yet Another Kubernetes Engine. Formerly it was developed as 23KE as inner source at 23 Technologies GmbH and serves a gitops-based Gardener distribution. Conceptually, YAKE not only installs Gardener itself but comes with some basic components for managing ingresses, certificates, dnsentries, and Gardener addons such as the dashboard as well es Gardener extensions.

Technology

YAKE is fully built around Flux in order to enable the gitops approach. Moreover, Helm charts are used for configuration/templating purposes. You can find all Gardener related Helm charts releases separately in the gardener-community/gardener-charts Helm repository. These Helm charts are also supplied in the helmcharts directory in this repository to keep the repository as self-contained as possible.

Getting started

Getting started locally

If you just want to try out YAKE and evaluate whether it is the right tool for you, you are invited to set up a local installation via the resources provided in hack/ci/yake-local. Just go ahead and execute

cd hack/ci/yake-local
./work.sh

This will set up a KinD Kubernetes cluster on you local machine and install YAKE into it. You can watch the installation by watching the Flux resources Kustomizations and HelmReleases. Of course, you could also have a look at Deployments and Pods in order to see which processes are started.

Using kind may have some pitfalls like pod errors due to "too many open files". If the local setup doesn't work for you, make sure to check kind's documentation on known issues.

Local development and contribution

If you want to experiment with new features or bug fixes for YAKE, you can simply apply changes to resources in this repository. In order to reflect these changes in the locally running environment, you need to commit them and push them to the local remote. From there Flux's source-controller will reconcile the repository state and apply your changes to the cluster. This enables a smooth local development experience. Once you are satisfied with your changes, you should rebase all your commit into meaningful commits, push the branch to the upstream repository, and file a pull request.

Production Deployments

For production deployments you can have a look at the local setup first and adjust the configuration files in hack/ci/yake-local/config to your needs. You will not need to install Knot and Step-ca as done in the local environment. However, you will need a domain and configured cloud dns provider for a real deployment. Please checkout the documentation for further information.