An opinionated Kubernetes cluster configuration management tool
kr8 is a very opinionated tool used for rendering jsonnet manifests for numerous Kubernetes clusters.
It has been designed to work like a simple configuration management framework, allowing operators to specify configuration for components across multiple clusters.
kr8 is a work in progress (currently in Alpha), but is in use at Apptio for managing components of multiple Kubernetes clusters.
For more information about the inspiration and the problem kr8 solves, check out this blog post.
kr8 consists of:
kr8 is not designed to be a tool to help you install and deploy applications. It's specifically designed to manage and maintain configuration for the cluster level services. For more information, see the components section.
In order to use kr8, you'll need a configuration repository to go with this binary. See the example repo for more information.
A component is something you install in your cluster to make it function and work as you expect. Some examples of components might be:
Components are not the applications you want to run in your cluster. Components are generally applications you'd run in your cluster to make those applications function and work as expected.
A cluster is a Kubernetes cluster running in a cloud provider, datacenter or elsewhere. You will more than likely have multiple clusters across multiple environments and regions.
Clusters have:
Instead of reinventing the wheel, the kr8 ecosystem makes uses of the Task tool to generate the cluster configuration. The task files generally call kr8 in order to render the manifests for a component. We chose task because it supports yaml and json configuration files, which mean we can continue to leverage jsonnet to write taskfiles where needed.
All configuration for kr8 is written in Jsonnet. Jsonnet was chosen because it allows us to use code for configuration, while staying as close to JSON as possible.
See the Building documentation.
Fork the repo in github and send a merge request!
There are currently no tests, and the code is not very DRY.
This was (one of) Apptio's first exercise in Go, and pull requests are very welcome.