I think what you're doing is super neat, but I'm curious to hear in more detail about your complaints with Jsonnet. I find it to be quite elegant, myself. (Though, as you know, I'm quite biased at this point.)
On Thursday, September 28, 2017 at 2:49:52 AM UTC-7, Mahieddine Cherif wrote: > Hi Keith > ksonnet like you already know is just a bunch of generated mixins on top of > jsonnet, this makes its templates hard to read and write, moreover the design > choices made for jsonnet didn't attract us. I mean we all know what happens > when you put a programming language inside a configuration file. > > > This is why we created ICL (https://github.com/archipaorg/icl), it's a > declarative configuration language inspired from nginx config file syntax and > written primarily for docker orchestrators' YAML file, it has the concept of > inheritance, class, mixins and libraries. > > > This is what it looks like if i write my "hello world app" manifest file in > ICL for k8s: > > > > > take github.com/k8s-icl/latest/v1beta1/deployment, > github.com/k8s-icl/latest/v1/containerport, > github.com/k8s-icl/latest/v1/container > > ::variable "container-port" apply ContainerPort @@name="nginx", > @@containerPort="8080" > ::variable "container-ports" [variable.container-port] > ::variable "container" apply Container @@image="nginx:1.13.0", > @@name="nginx", @@ports=variable.container-ports > ::variable "container-list" [variable.container] > ::variable "pod-spec" apply PodSpec @@containers=variable.container-list > ::variable "labels" table "app" = "nginx" > ::variable "pod-metadata" apply ObjectMeta @@labels=variable.labels > ::variable "template" apply PodTemplateSpec @@spec=variable.pod-spec, > @@metadata=variable.pod-metadata > ::variable "spec" apply DeploymentSpec @@replicas=5, > @@template=variable.template > ::variable "metadata" apply ObjectMeta @@name = "nginx" > > _ "_" apply Deployment @@metadata=variable.metadata, @@spec=variable.spec > > > Of course i could wrote a mixin to shorten the creation of a specific section > in my case, but the point is that even if no one knows what ICL is, everyone > can read and understand what's happening here.  > > > How does it compare to other approaches ? ICL is a JSON/YAML extension, it > has some OO concepts such as inheritance (multiple inheritance actually), > mixins, and class, but remember ICL's purpose is to make config files > modular, and easy to read. so there are no conditional, loop...instructions. > the point is that when a developer checks a config file he must be able to > see what he gets. > > > e.g. (:: in ICL means its a settings block library => no rendered) > > > > > > ::vegetable "fruit" as Fruit { > type = "fruit" > } > > ::color "green" as Green { > name = "apple" > } > > apple "green" from Fruit, Green { > > } > > > Output in YAML => > apple: > green: > name: apple > type: fruit > > > Whatever you write in JSON/YAML can be written in ICL and vice-versa. > > > > Hope it's clear for you > > > Regards, > Mahieddine > > On Thursday, September 28, 2017 at 10:15:23 AM UTC+2, Keith Burdis wrote:How > does this compare to ksonnet [1]? This is based on jsonnet [2] which has a > good comparison [3] with other approaches. > [1] http://ksonnet.heptio.com > [2] http://jsonnet.org > [3] http://jsonnet.org/language/comparisons.html -- You received this message because you are subscribed to the Google Groups "Kubernetes user discussion and Q&A" group. To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-users+unsubscr...@googlegroups.com. To post to this group, send email to kubernetes-users@googlegroups.com. Visit this group at https://groups.google.com/group/kubernetes-users. For more options, visit https://groups.google.com/d/optout.