12 ms·
YAML, especially how it's used in k8s, is terrible. Writing it by hand is mind-numbingly toilful and extremely error prone, and templating YAML with Go (like He
by q3k 8y ago
YAML, especially how it's used in k8s, is terrible. Writing it by hand is mind-numbingly toilful and extremely error prone, and templating YAML with Go (like Helm does) is a travesty.
The most sensible approach I've seen is to use jsonnet+kubecfg. This lets me use a somewhat sane, composable, turing complete language that spits out a tree of k8s objects. I can use as much or little repeated definitions (or abstractions) as I like. Then kubecfg performs all the kubectl invocations to actually make the cluster state match my calculated definitions.
- fermuch 8y agoI'd also point out pulumi. It is a service, but it solves a lot of trouble when dealing with k8s configuration, and you have a real language to to create your definitions...
- q3k 8y agoBeing written in Node.js and running in an aaS model (unless you go for the call-us enterprise pricing), Pulumi unfortunately gets scratched off my list of software I want to use for provisioning production.
- dilyevsky 8y agoHave you seen https://github.com/stripe/skycfg https://github.com/stripe/skycfg ? It’s kind of early development stages tho
- sergiusignacius 8y agoI don't see how Starlark is better... Does it validate what you write somehow - in a way that couldn't be done by validating a YAML?
- q3k 8y agoI don't understand, I'm not talking about Starlark..?
- sergiusignacius 8y agoMeant to reply to the comment, sorry :)
- gingerlime 8y agoI'd love to see a writeup about your process or workflow. I keep seeing helm, and the overall idea of a "package manager" sounds nice, but having looked at some charts, and tried to understand the value proposition, I get a very uneasy feeling somehow. Perhaps it's lack of familiarity? but your comment seems to suggest something is inherently wrong, so I'd love to understand more...