A review of tools and technologies currently in use across the cloud native community for managing configurations of their applications and infrastructure.
• Use declarative formats for setup automation, to minimize time and cost for new developers joining the project; • Have a clean contract with the underlying operating system, offering maximum portability between execution environments; • Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration; • Minimize divergence between development and production, enabling continuous deployment for maximum agility; • And can scale up without significant changes to tooling, architecture, or development practices. — Adam Wiggins, 12factor.net
Kapitan - kapitan.dev • ‘reclass’ as a source of truth for config data • Jinja2 or jsonnet templates for generation • Compiles output into folders for runtime injection and gitops love
Kr8 – kr8.rocks • “Oh **** we’re going to have to write something” – (blog: leebriggs.co.uk) • Uses Jsonnet for both data storage and templating • Maps ‘components’ (things you run) onto ‘clusters’ (where you run them)
Tanka – tanka.dev • Philosophically like ksonnet, but simpler: “environments” only • Relatively thin layer of workflow over jsonnet, featuring deep-merges • Uses k8s 1.13+ server- side diffing
P U P P E T O V E R V I E W 18 Pulumi – pulumi.io • “Terraform for Programmers” • Multiple language bindings over TF providers – js, python • Cloud-based state by default
Starlark – bazelbuild/starlark • Dialect of Python made for configuration languages • Multiple implementations: java, go, rust • Proposal for Tekton pipelines
Cue – cuelang.org • “Configure, Unify, Execute” • Data constraint language • Builds templating, defaults, spec directly into the config language • DSL over the domain of configuration
Of all the problems we have confronted, the ones over which the most brainpower, ink, and code have been spilled are related to managing configurations—the set of values supplied to applications, rather than hard-coded into them. In truth, we could have devoted this entire article to the subject and still have had more to say. Burns, Grant, Brewer et al - “Borg, Omega and Kubernetes”