4 ms·
Exactly my thoughts. I don’t see how it’s better than JS or TypeScript. I can render any object into JSON. This is in fact how I manage Kubernetes manifests.
by moltar 8y ago
Exactly my thoughts. I don’t see how it’s better than JS or TypeScript. I can render any object into JSON.
This is in fact how I manage Kubernetes manifests.
I use this package: https://www.npmjs.com/package/kubernetes-models https://www.npmjs.com/package/kubernetes-models
Then I write normal TypeScript code to create Kubernetes objects/resources.
Then I render it to JSON and feed to kubectl.
The beauty of this solution is that it’s OOP and DRY.
- atombender 8y agoYou're assuming that all code can be trusted. Jsonnet is much easier to make secure than JS, since it can be statically guaranteed to be safe and side-effect-free (e.g. can't access the file system). This permits evaluating arbitrary untrusted data, which can be a boon to systems like CI servers, databases, or even Kubernetes (think Helm charts).
- CraftThatBlock 8y agoHe is producing JSON, just as you said. Not sure you understood him. He has a TS script that outputs JSON, which he is using as config.
- atombender 8y agoThe script to generate that JSON is code. Jsonnet also generates JSON. So his script is filling the same role as Jsonnet would. The point stands. He might trust his code, but I was highlighting reasons why this is not true everywhere, and indeed the ability to evaluate untrusted code can open up previously unavailable avenues. For example, storing server-side Jsonnet that can be safely evaluated by a multitenant backend.