3 ms·
> What I really want is a typed programming language, where using normal code we describe how to produce all these yaml-described k8s resources using whatever a
by lukehoban 7y ago
> What I really want is a typed programming language, where using normal code we describe how to produce all these yaml-described k8s resources using whatever abstractions make sense in our business.
This is more or less exactly what we’re working on at Pulumi. Using a language like TypeScript to describe Kubernetes infrastructure provides a nice mix of simple JSON-like resource definition, strong typing, and the ability to use variables, loops, functions, classes, packages, test frameworks, and more from an expressive general purpose programming language. You still have access to the full fidelity of the raw Kubernetes API, but also all the tools you need to apply proper software engineering on top of it.
https://www.pulumi.com/kubernetes/ https://www.pulumi.com/kubernetes/
- dpc_pw 7y ago"We're"? Oh. So I have one question - what's the deal with Pricing then? What's the line exactly between "take it for free" and "pay us some well deserved money for our hard work"? Anyway - from what you're saying, that's exactly what I'm looking for.
- lidHanteyk 7y agoHuh, why build an entirely proprietary language for this? There are existing toolchains that bend existing rich configuration languages, like Nix [0] or Dhall [1], to produce Kubernetes object definitions. In this way, not only can existing libraries be leveraged, but no new semantics have to be learned, and no third party needs their palms crossed. This had to be pointed out; Pulumi's docs repeat the adjective "real", as if its competitors aren't real. "real code", "real package management" [2], "real languages" [3], "real programming model" [4]... Nix and Dhall are quite real, though. So is this an incomplete survey, or are Pulumi's docs unrealistically self-aggrandizing? TBH even just this one paragraph of yours is pretty tough to stomach, as if loops and functions in a configuration language were a novel concept. [0] https://github.com/xtruder/kubenix https://github.com/xtruder/kubenix [1] https://github.com/dhall-lang/dhall-kubernetes https://github.com/dhall-lang/dhall-kubernetes [2] https://www.pulumi.com/docs/intro/vs/k8s_yaml_dsls/ https://www.pulumi.com/docs/intro/vs/k8s_yaml_dsls/ [3] https://www.pulumi.com/docs/intro/vs/chef_puppet_etc/ https://www.pulumi.com/docs/intro/vs/chef_puppet_etc/ [4] https://www.pulumi.com/docs/intro/vs/custom/ https://www.pulumi.com/docs/intro/vs/custom/
- leonth 7y agoI would imagine that a "real programming language" here means not only any Turing-complete language but also a language that has been consistently at the top 10 most popular programming languages in the world for a while (which javascript is, and typescript is its superset).
- lidHanteyk 7y agoI would hope that we can do better than that. Both Nix and Dhall are designed for readability in the limited niche of configuration management, and their authors considered that design choice to be important enough on its own to merit a new language. Dhall is explicitly not Turing-complete.