Hacker News new | ask | show | jobs
by q3k 2130 days ago
This a hundred times. Do yourself a favour and use Dhall/Cue/Jsonnet to develop some abstractions that fit your workload and environment. There is not much value proposition in a tool like this if you can use a slightly lower-level, more generic tool (like a configuration-centric programming language, which is an actually full-fledged programming language) to accomplish the same goal in a more flexible and more powerful fashion, that leaves you space for evolution and unforeseen structure changes.

The idea of tools mandating what 'environments' are is absurd, as it's pretty much always different for everyone (and that's good!).

1 comments

I've been enjoying using Tanka [1], which is a command-line tool from the Grafana team to manage k8s configurations, which you define using jsonnet. Complete flexibility, with minimal boilerplate possible by using the older (unmaintained unfortunately) ksonnet library [2] or the upcoming jsonnet-libs/k8s(-alpha) (which we're using in production) [3], or roll your own, abstracting to whatever level you find best.

[1] https://tanka.dev/

[2] https://github.com/ksonnet/ksonnet-lib

[3] https://jsonnet-libs.github.io/k8s-alpha/

I've been using kubecfg [1] with kube.libsonnet [2]. I don't like Tanka as it imposes a given directory structure on me via scaffolding - which is a big no-no for the way I organize projects (I value very unopinionated tools in this regard). I also couldn't get into the ksonnet style of mixins/arguments, as it takes away the ease of overriding underlying Kubernetes structures.

[1] - https://github.com/bitnami/kubecfg

[2] - https://github.com/bitnami-labs/kube-libsonnet