Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comparison with other solutions #10

Open
f-f opened this issue Jun 4, 2018 · 14 comments
Open

Comparison with other solutions #10

f-f opened this issue Jun 4, 2018 · 14 comments

Comments

@f-f
Copy link
Member

f-f commented Jun 4, 2018

As noted in #9, we should probably write down a comparison with other solutions in the readme.
So far on the list:

  • Helm
  • Jinja
@f-f f-f added the help wanted label Jul 8, 2018
@arianvp
Copy link
Member

arianvp commented Dec 24, 2018

Another one that is very close to this project: https://github.com/xtruder/kubenix

@arianvp
Copy link
Member

arianvp commented Jan 21, 2019

https://github.com/ksonnet/ksonnet-lib/blob/master/README.md

Is a code generator of jsonnet. We could look at how they handle edge cases

They wrap it up in a tool called https://github.com/ksonnet/kubecfg/blob/master/README.md

@arianvp
Copy link
Member

arianvp commented Jan 26, 2019

@arianvp
Copy link
Member

arianvp commented Jan 30, 2019

@arianvp
Copy link
Member

arianvp commented Feb 14, 2019

https://www.pulumi.com/

@ydewit
Copy link

ydewit commented Feb 28, 2019

FYI: while exploring this space, I read that Heptio has shifted focus away from ksonnet and the Github project will be archived. It is to be seen whether the community will pick it up. More information here.

Prior to the acquisition, Heptio had been shifting focus and resources away from ksonnet; with the acquisition, we felt it was the right time to rethink our investment in ksonnet. As a result, work on ksonnet will end and the GitHub repositories will be archived. It’s extremely difficult to step back from a project we have worked so hard on, but we’re excited about our new ideas and vision for changing how developers experience the Kubernetes and cloud native ecosystems. The problems that ksonnet aimed to solve are still challenges for Kubernetes users and we will be putting our energy into opportunities to contribute to existing or new projects in this space.

@ydewit
Copy link

ydewit commented Feb 28, 2019

Kustomize is an interesting one because it takes any YAML and applies changes to it (there are some annoying limitations). From our limited experience, it does a great job mixing in orthogonal aspects such as environment specific changes that should not be part of the base application YAML.

Kustomize does not, however, help you create abstractions: you still need to create the YAML files somehow (no reuse and too much boiler plate). It turns out that using something like helm template with kustomize seems to fit the bill better.

With helm template you get the helm package management and all the existing packages already there. You also get the Helm chart and values abstraction, which in Ksonnet would be equivalent to a prototype + parameters to generate component YAML. So, with helm template and kustomize you get the abstraction and reuse to create YAML files and with kustomize you get the ability to overlay/mix in orthogonal aspects (e.g. ALB Ingress Controller annotations that are specific an environment).

In fact, if helm template + kustomize were a single tool, that would be quite nice. Add static typing/validation and you have a winner ...

Could Dhall-kubernetes be this single tool? I don't know, but it does look interesting.

Considering that I don't know much about Dhall(-kubernetes), my two questions are:

  1. Can Dhall-kubernetes consume plain YAML manifests for integrating with existing ones in the wild?
  2. Can it be use to provide overlays that modify existing resources even when these were not abstracted to be extended (like kustomize)?

@arianvp
Copy link
Member

arianvp commented Feb 28, 2019

  1. Alas dhall can not currently import JSON or YAML. It's an often requested feature though Discussion: Support for importing from JSON dhall-lang#121

  2. In theory yes. Dhall the language supports a record merge operator that merges two records together.

> {a = 3 } // { b = 4 }
{ a = 3, b = 4 }

However there are some caveats that don't make it very ergonomic yet in dhall-kubernetes due to how we structure schemas. However I have an issue open for that as well to make dhall-kubernetes more kustomize-like #46

@ydewit
Copy link

ydewit commented Feb 28, 2019

@arianvp FYI, this page does an excellent job documenting the usecases and approaches.

@arianvp
Copy link
Member

arianvp commented Feb 28, 2019

Yep! Saw that one already (I think I linked it in this thread already somewhere). But still thanks!

Once I have some more time on my hands and have tackled #46 I want to write down some more in depth stuff about how dhall-kubernetes is a good idea and what its strengths are, and I think the link you just posted is some really good reference material to look at to achieve that goal

@wallyqs
Copy link

wallyqs commented Sep 4, 2020

cue seems to also have some support for Kubernetes: https://cuelang.org/docs/integrations/k8s/

@zzztimbo
Copy link

https://tanka.dev/

@avanov
Copy link

avanov commented Jun 19, 2022

how many of these mentioned tools do support side-effect-free content-addressable configurations over URLs?

@adrian-gierakowski
Copy link

how many of these mentioned tools do support side-effect-free content-addressable configurations over URLs?

Kubenix (nix)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants