All Projects → apptio → Kr8

apptio / Kr8

Licence: other
An opinionated Kubernetes cluster configuration management tool

Projects that are alternatives of or similar to Kr8

Beemo
🤖 Centralized configuration layer for dev tools. Beep boop.
Stars: ✭ 100 (-31.51%)
Mutual labels:  configuration-management
Genie
Distributed Big Data Orchestration Service
Stars: ✭ 1,544 (+957.53%)
Mutual labels:  configuration-management
Requirements
PowerShell framework for declaratively defining and idempotently imposing system configurations
Stars: ✭ 134 (-8.22%)
Mutual labels:  configuration-management
Configuration
.NET Configuration providers for Spring Cloud Config Server & CloudFoundry
Stars: ✭ 100 (-31.51%)
Mutual labels:  configuration-management
Coulomb
coulomb: unit analysis for Scala
Stars: ✭ 109 (-25.34%)
Mutual labels:  configuration-management
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+1326.03%)
Mutual labels:  configuration-management
Envh
Go helpers to manage environment variables
Stars: ✭ 95 (-34.93%)
Mutual labels:  configuration-management
Kubify
Terraform Template to Setup a Kubernetes Cluster on OpenStack/AWS/Azure
Stars: ✭ 142 (-2.74%)
Mutual labels:  kubernetes-setup
Electrode Confippet
node.js environment aware application configuration
Stars: ✭ 109 (-25.34%)
Mutual labels:  configuration-management
Config
Library for managing environment variables in Clojure using EDN configuration files
Stars: ✭ 125 (-14.38%)
Mutual labels:  configuration-management
Aws Minikube
Single node Kubernetes instance implemented using Terraform and kubeadm
Stars: ✭ 101 (-30.82%)
Mutual labels:  kubernetes-setup
Fsconfig
FsConfig is a F# library for reading configuration data from environment variables and AppSettings with type safety.
Stars: ✭ 108 (-26.03%)
Mutual labels:  configuration-management
Appconfiguration
Questions, feedback and samples for Azure App Configuration service
Stars: ✭ 116 (-20.55%)
Mutual labels:  configuration-management
Aws K8s Kops Ansible
Kubernetes setup on Amazon AWS using Kops and Ansible
Stars: ✭ 101 (-30.82%)
Mutual labels:  kubernetes-setup
Node Convict
Featureful configuration management library for Node.js
Stars: ✭ 1,855 (+1170.55%)
Mutual labels:  configuration-management
Zookeeper
Apache ZooKeeper
Stars: ✭ 10,061 (+6791.1%)
Mutual labels:  configuration-management
Kubernaut
Instant ephemeral Kubernetes clusters for development and testing
Stars: ✭ 115 (-21.23%)
Mutual labels:  kubernetes-setup
Config
Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.
Stars: ✭ 1,821 (+1147.26%)
Mutual labels:  configuration-management
Fig
A minimalist Go configuration library
Stars: ✭ 142 (-2.74%)
Mutual labels:  configuration-management
Pegasus
VM based deployment for prototyping Big Data tools on Amazon Web Services
Stars: ✭ 117 (-19.86%)
Mutual labels:  configuration-management

kr8

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 - a Go binary for rendering manifests
  • Task - a third party Go binary for executing tasks
  • Configs - A configuration directory which contains config for clusters and the components installed into those clusters

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.

Features

  • Generate and customize component configuration for Kubernetes clusters across environments, regions and platforms
  • Opinionated config, flexible deployment. kr8 simply generates manifests for you, you decide how to deploy them
  • Render and override component config from multiple sources, such as Helm, Kustomize and static manifests
  • CI/CD friendly

Concepts & Tools

Component

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.

Clusters

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:

  • Cluster configuration, which can be used as part of the Jsonnet configuration later. This consists of things like the cluster name, type, region etc
  • Components, which you'd like to install in a cluster
  • Component configuration, which is modifications to a component which are specific to a cluster. An example of this might be the path to an SSL certificate for the nginx-ingress controller, which may be different across cloud providers.

Taskfiles

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.

Jsonnet

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.

Building

See the Building documentation.

Contributing

Fork the repo in github and send a merge request!

Caveats

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].