thomastaylor312 / helm-3-crd

A proposal for Helm 3 using CRDs and a custom controller
MIT License
13 stars 2 forks source link

Local vs remote rendering #3

Closed pawelprazak closed 6 years ago

pawelprazak commented 6 years ago

One of the major drawbacks of Helm right now, in my opinion is the server side rendering.

  1. It hides the actual manifests that will be applied
  2. Does not help nor encourage versioning of the rendered manifests - that causes lack of transparency into what is happening on the cluster and git is no longer the single source of truth
  3. Makes it harder to understand what Helm actually does (for beginners as well as later during debugging)
  4. Makes the controller part unnecessarily complex
  5. Rendering bugs will be harder to discover and fix without the clear picture of what manifests will actually look like
  6. Misses the opportunity for more modularity

In contrast, local rendering makes for a much simpler experience

  1. It highlights the actual manifests that will be applied - makes the learning, understanding and debugging simple
  2. Helps and encourages with versioning the manifests, but does not imposes it (there's always .gitignore)
  3. Makes the controller much simpler and the division of responsibility between components became clear and simple
  4. Gives the opportunity for more modularity: renderer, CRD->k8s translator, lifecycle manager, etc. - this way every component could be easily swapped mixed and matched
garethr commented 6 years ago

+1 on local rendering.

Another reason is the opportunity this opens up for validation/testing of Charts in CI.

A good example from other tools of where that's useful is rspec-puppet. And a good example of a tool which makes this hard currently is Terraform.

Adding a way to publish the plan in an easy to process way would allow many other testing tools and approaches to bloom and I hope I’ve managed to convince you that it’d be a great addition to terraform.

I think this applies to Kubernetes and Charts too.

For transparency I've been hacking on tools in this space, namely kubetest and kubeval.

pawelprazak commented 6 years ago

Yes, CI! I forgot about one of the most important points, thank you.

thomastaylor312 commented 6 years ago

We have some in flight discussion on this we hope to be presenting soon. I think we are in agreement about trying to get rid of server-side rendering as a requirement.