Awesome
kubecfg
WARNING: kubecfg is no longer actively maintained by VMware.
VMware has made the difficult decision to stop driving this project and therefore we will no longer actively respond to issues or pull requests. The project will be externally maintained in the following fork: https://github.com/kubecfg/kubecfg
Thank You.
Overview
A tool for managing Kubernetes resources as code.
kubecfg
allows you to express the patterns across your
infrastructure and reuse these powerful "templates" across many
services, and then manage those templates as files in version control.
The more complex your infrastructure is, the more you will gain from
using kubecfg.
Yes, Google employees will recognise this as being very similar to a similarly-named internal tool ;)
Install
Pre-compiled executables exist for some platforms on the Github releases page.
On macOS, it can also be installed via Homebrew:
brew install kubecfg
To build from source:
% PATH=$PATH:$GOPATH/bin
% go get github.com/bitnami/kubecfg
Quickstart
# Show generated YAML
% kubecfg show -o yaml examples/guestbook.jsonnet
# Create resources
% kubecfg update examples/guestbook.jsonnet
# Modify configuration (downgrade gb-frontend image)
% sed -i.bak '\,gcr.io/google-samples/gb-frontend,s/:v4/:v3/' examples/guestbook.jsonnet
# See differences vs server
% kubecfg diff examples/guestbook.jsonnet
# Update to new config
% kubecfg update examples/guestbook.jsonnet
# Clean up after demo
% kubecfg delete examples/guestbook.jsonnet
Features
- Supports JSON, YAML or jsonnet files (by file suffix).
- Best-effort sorts objects before updating, so that dependencies are pushed to the server before objects that refer to them.
- Additional jsonnet builtin functions. See
lib/kubecfg.libsonnet
. - Optional "garbage collection" of objects removed from config (see
--gc-tag
).
Infrastructure-as-code Philosophy
The idea is to describe as much as possible about your configuration as files in version control (eg: git).
Changes to the configuration follow a regular review, approve, merge, etc code change workflow (github pull-requests, phabricator diffs, etc). At any point, the config in version control captures the entire desired-state, so the system can be easily recreated in a QA cluster or to recover from disaster.
Jsonnet
Kubecfg relies heavily on jsonnet to describe
Kubernetes resources, and is really just a thin Kubernetes-specific
wrapper around jsonnet evaluation. You should read the jsonnet
tutorial, and skim the functions available in the jsonnet std
library.
Community
Click here to sign up to the Kubernetes Slack org.