-
Notifications
You must be signed in to change notification settings - Fork 18
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
Revamp Temporal Helm Charts #42
Comments
Mention that the production version is HA (highly available)? |
Shouldn't this be rather a discussion (on github) which would result in series of issues? |
First of all there is really no such thing as vanilla kubernetes - each cloud provider has its own alterations (especially on network level). Here is a list of example values.yaml files for certain use cases:
Moreover a lot of issues leak into container images directly, such as:
Above has noticeable impact on the helm chart structure as well. Required helm chart alterations:
Include full continuous integration for helm charts:
|
Can we include hosting the helm packages on the GitHub repository for use by helm? # first add our helm repository
# provide a GitHub token if it's private
% helm repo add ironchartgo https://${GITHUB_TOKEN}@raw.githubusercontent.com/ironpeakservices/iron-chart-go/helmrepo/
"ironchartgo" has been added to your repositories
# now let's install our Chart from our repository
% helm install mychart ironchartgo/iron-chart-go |
@nvtkaszpir great list! A few questions and comments below. Can you point to exemplary helm charts from other projects? (I wonder if Cilium's charts are worth a look.) OpenShift seems to be the most different of those listed. A candidate for dropping? Aside: I suspect KEDA will be handy for event-driven autoscaling, in which case someone may want to look into adding a Temporal scaler to KEDA. |
|
Hello, About: liveness/readiness, please don't forget about startup probes (1.18+). |
I agree with @JanisOrlovs. Dev should be as comparable with prod as possible. |
Might be worthwhile to check out kube-prometheus-stack https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack where dependencies like grafana are using the upstream helm charts (sub-charts) I also don't think there should be a different production vs development chart. Having a values-prod.yaml vs values-dev.yaml could be a good idea instead |
@nvtkaszpir that is an epic list and terrific considerations! And I think it very much highlights exactly why we want to simplify the helm chart. There is just so much there that would need to be considered to make a helm chart that operates your production infrastructure that what we would like to do instead is to use helm as a simple templating engine to generate the core required resources necessary to run temporal on kubernetes.
As @dtornow mentioned in the proposal customization of the helm chart could be to fork it and modify if more helm based flexibility is desired. I would go a different direction (which we are looking at doing internally for running temporal ourselves) - use the helm chart to generate manifests and then use kustomize to add all of the environment specific support needed. Where kustomize isn't enough, I would look at using cue or jsonnet+rego (opa) to programmatically modify the generated manifests as much as needed. This gives us the ability to focus on the core requirements of temporal so that you can be confident that what we deliver is what is needed and anything else you need you can bring to the table. @jontro you are totally right that there's no need to have a different production and development chart if the chart you have is production focused. In those cases you can definitely use a production quality chart for development. But right now the situation is that the helm chart defaults to a non-production setup, is not ergonomic to configure otherwise, and the broader the set of features we want to make production grade the harder it is to know which ones should and should not be used in production. We want a chart where we can say everything that is generated by the chart could be used in a production setting. Keeping things limited to temporal basics enables us to do that. |
I wonder if the development chart could depend on the production chart (as well as |
Aiming at 90% of the use cases is a good way to exclude a considerable amount of edge cases. For me, Openshift and cloud provider specific things belong to that 10%. I definitely agree that things like prometheus and persistence options should be out of scope. I think it would make sense to clarify what "minimal customization options" mean. Also, what's the reason behind separating the core, web and admin into separate charts? |
@GreyTeardrop - thats something we thought about, but there are some reasons not to provide an additional helm chart:
|
@sagikazarmark - fair questions
My goal is to effectively communicate the various Temporal Components, their interactions and interdependencies to empower our users to tailor make their own Temporal Platform |
@nvtkaszpir that's a really complete a great list but to achieve this, I will take some of your points to our projects too :) but I think it can't be done at the first time, @dtornow Do you have any ETA for specifications / publishing the new helm revamp ? But I agree about not splitting into 3 helm because it will become hard to maintain and hard for consumers |
I would probably compromise here and allow customizing the most common values
I'd say the output of
For me admin and web are the components of the same software. Is there a reason to install web or admin independently?
I'm not sure this is a good absolute goal. Forking is for sure the best solution to implement environment dependent changes, but why not include options that are necessary in at least half of the cases? Couple examples:
|
Of course it can be done, we did most of it already. This is the list of requirements you will get into when you start to deal with temporal in production setups in kubernetes. But I also understand that this means that someone has to maintain it - if the temporal team does not have such setups then no wonder they are not eager to maintain it. Moreover to make it maintainable you need proper CI system to it and unfortunately that't not something easy to set up because you probably want to test it fully by deployment on real infra (most of testing tools for k8s are usually covering 90% of the use cases via mockups but frankly speaking final deployment on the infra really test this properly, we had that issue that we got something about 3 different tools for fast check and final slow deployments in k8s) |
To make list shorter I believe the best thing to do would be right now:
And that's it. The rest probably people get as rendered helm templates and will apply their changes with kustomize or grafana/tanka |
An alternative is making templating optional (eg. based on config file extension) and generate the rendered config in a temp dir (which can also be mounted if necessary). |
@alexshtin and I have talked about wanting to remove dockerize and the complicated path to a final config, but that's a different issue. Agree with you on the removal suggestion @nvtkaszpir - moving would have the benefits you mention but if we're going to change it, it feels better to drop it. |
We see this approach/pattern a lot and have come to the conclusion to embrace it: We don't see a way to maintain a well tested Helm chart that encompasses all possible permutations. So we will maintain a well tested Helm chart that does not encompass any permutations and rely on our users to tailor that Helm chart to their specific needs. |
Thank you everybody for your feedback and your input, we will address as many points as possible given the current strategy 🤓 |
If your helm chart does not encompass any permutations, I wonder if it might be better to release it as a pure manifest, or small set of manifests, which can then be used directly as the basis for kustomization? |
So this means you don't really care supporting helm charts at all (as temporal org with ability to host test envs which boils down to the same result), so in that case we are in the same situation as we are right now. Because without actual tests in CI pipeline you can just only trust that commuted code works...does it mean we at least get faster merge approvals (by faith)? I am aware that giving resources as env setups/users to support it is noticeable effort + cost. If you still do not want to do it, then maybe say straight that you are not going to support it and just force people to live on a forked repo. |
Hi - It's been a while so I want to recap and provide some insight into progress here:
A few other differences with the current chart:
Other notes:
Thanks for your patience! |
Any options for more details in what opinionated way is it going to be done? |
Hi @underrun, any updates to:
? Totally something we are looking for instead of Hel(l)m. Thanks! |
Hello there, what's the update on this? I see that the issue is closed. Does it mean it's ready or abandoned? |
Author:
Dominik Tornow, temporal.io
Summary of the feature being proposed
Split the current "Catch-All" Kubernetes Helm Chart into two different templates:
What value does this feature bring to Temporal?
Temporal's official Helm Chart needs some tender love and care:
Temporal.io proposes two objectives
All open and future pull requests will be evaluated against these objectives
Development Setup Experience Kickstarter
Note Temporal Application Developement is diffrent from Temporal Development. This proposal addresses Temporal Application Development only.
Guiding Principal
Mechanism
Proposal
Production Setup Experience
Note Setup is different from Operations, therefore, a Setup Experience is different from a Da1 or Day 2 Operation Experience. This proposal addresses Setup Experience only.
Guiding Principal
Mechanism
You are expected to fork and customize
Proposal
DO NOT
Are you willing to implement this feature yourself?
The Temporal team with input from community
The text was updated successfully, but these errors were encountered: