We've been using Jsonnet. It's saved much boilerplate and makes the syntax more concise. In our case we are taking advantage of the +: operator to provide a compositional DSL.
Container(foo, image) + HealthCheck(port) + EnvVar(VAR,value) + UseVolume(foo, /var/lib)