traefik / mesh

Traefik Mesh - Simpler Service Mesh
https://traefik.io/traefik-mesh
Apache License 2.0
2.03k stars 141 forks source link

Re-evaluate helm #121

Closed dtomcej closed 4 years ago

dtomcej commented 5 years ago

Currently we use helm to install the mesh,

However, we may just be able to reduce the configuration to simple yaml, and kubectl create -f.

We should re-evaluate if we want to continue using helm for deployment, as it has its own issues and potential drawbacks.

Bessonov commented 5 years ago

I'm very unhappy with helm as a deployment tool. But I'm very happy with helm's helm template and a some custom way to deploy the output.

Just as proposal and instead "helm vs. no helm" why not use helm, but generate a single yaml with helm template on CI?

dtomcej commented 5 years ago

The major benefit to use helm is its hook system. Not having to write all the ordering logic into our installer scripts makes life much easier.

dtomcej commented 5 years ago

The other benefit to using helm is that the chart becomes more accessible for systems that already use helm (like k3s etc), as the chart is easily deployed, as opposed to manually handling individual scripts.

george-angel commented 5 years ago

I would love to see kustomize templates for deployment.

guibirow commented 5 years ago

I would also love to see an option using Kustomize, or a plain old yaml

Not everyone can use helm due to it's elevated privileges.

I've been working in quite a few projects and helm is either being re-evaluated or exchanged for Kustomize or plain yaml with minimal drawbacks, most people use it just because most tools documentation (like maesh) only provides helm as an installation option.

If removing helm from the quick start is not an option, at least should be provided a how to guide using yaml files.

Nginx ingress controller is a nice example on how to document the manual process.

Bessonov commented 5 years ago

Not everyone can use helm due to it's elevated privileges.

That's not true. I use helm without tiller and elevated privileges.

I would love to see kustomize templates for deployment.

From my point of view, kustomize is an another workaround like helm, but not a solution. Both are very usable for simple use cases, but if it comes to deeper customisation like removing of resources or iterating, they can't still help there. Or I'm missing something?

carlosedp commented 5 years ago

Another option would be converting the manifests to Jsonnet with https://github.com/ksonnet/ksonnet-lib mixins. It would reduce the amount of written code and still have flexibility.

guibirow commented 5 years ago

From my point of view, kustomize is an another workaround like helm, but not a solution. Both are very usable for simple use cases, but if it comes to deeper customisation like removing of resources or iterating, they can't still help there. Or I'm missing something?

kustomize is integrated to kubectl and can add or remove resources via patch, kustomize way of doing things is much simpler and has been working well for us. I've never used it to create deployment packages that should be flexible for most use cases like in this case, so I can't argument on that, but regarding standard deployment and customization of yaml files, it does the job well.

The nice thing like about kustomize, is that we can provide a default yaml file, and apply the 'kustomizations' if needed, in this case, we can just deploy the yaml files directly or 'kustomize' it.

carlosedp commented 5 years ago

Hi @dtomcej, I started implementing Maesh manifests in jsonnet. Would you like me to submit a WIP PR to check on this?

dtomcej commented 5 years ago

@carlosedp, we are currently re-evaluating our hooks in #252, in an effort to reduce down to plain yaml for installation.

This would most likely simplify a lot of options, as helm template would generate all the yaml needed to install.