-
Notifications
You must be signed in to change notification settings - Fork 19
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
Customize KubeVirt installation #65
Conversation
atanasdinov
commented
Dec 14, 2023
- Extracts all KubeVirt CR fields as customisable values
- Fields and their description extracted from:
@vasiliy-ul could you please take a look at this and let us know if any of the KubeVirt resource fields could be omitted? I'm somewhat stuck between letting all of them and dropping the ones that the operator is working with / provides e.g. We've settled on using the single chart approach (at least for Edge 3.0) which means that the operator will be the one dealing with the installation, upgrade and deletion processes through the established hooks mechanism. Any advice would be much appreciated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH, I am not completely sure that all the fields from KubeVirt CR should be made configurable through the chart. This requires certain effort to keep everything in sync on each release, and also the actual value for the end-user of having all of them is not obvious. Most of the fields in the CR are configuration options that can be set in runtime.
I would say that it makes sense to first focus on the ones that affect the deployment of the KubeVirt infra. Keeping only the bare minimum. Other options can be added later if there is certain demand from the customers or the community here in github.
dropping the ones that the operator is working with / provides e.g. imageRegistry, imageTag, etc.
I think having the same options in several places is confusing. Besides, isn't it more error-prone? E.g. how is it handled if you set different values there?
Also unsure how the productX ones are used and if they should be kept.
According to the docs, those just apply a product label to KubeVirt components. Makes sense for projects like Harvester where KubeVirt is used under the hood. Not sure if those are needed when KubeVirt is used standalone.
Sounds great to me! It'd definitely be easier to maintain for this initial version.
It is indeed more error prone. However, it is equivalent to users manually changing these values in the upstream manifests before deploying them. I was contemplating whether we want to provide a more "open" approach where everything is configurable or one where it is mostly focused on SUSE Edge solutions. Perhaps overengineering it and trying to apply to a wider audience is not that good right from the start.
Yes, those shouldn't be necessary in this case. These are the fields that are shipped in the spec of the KubeVirt manifest:
A trimmed down list I came up with:
Does this look good or should we drop anything else? P.S. I'll make |
I would still drop a couple of options. Please refer to the comments below.
I would say that this could be configured in runtime.
Same.
This might be useful for someone as it allows applying custom patches to KubeVirt infra deployments. Ok to keep.
Ok to keep.
Ok to keep.
I would drop those.
Might be useful. Ok to keep.
I would drop it. I think that basically follows what I meant by 'options that affect the deployment of the KubeVirt infra'. Ofc, in extreme cases, someone may want to configure everything with Helm. But then again, this list can be extended when needed. |
I'm not familiar enough with the KubeVirt project but all of the explanations make sense to me. We can probably keep Our PM will be able to review this early next week as well in order to confirm the choices we make here align with the longer term plans for the chart. Thank you @vasiliy-ul for the provided feedback! It is very useful! :) |
@atanasdinov, just a random thought: in principle, KubeVirt CR is a big config and all of its fields can be tuned. Then instead of exposing individual settings from KubeVirt CR via Helm, wouldn't it be more convenient to just expose the whole CR? This will enable flexible and fine-grained configurations for the end-users, and it will not add much maintenance complexity. Though, do not know if it's a good/common practice to expose the whole CR with Helm. |
This is what I basically started with. Templating the whole |
Unless I'm misunderstanding the |
I was thinking about |
Overall, this looks good to me. My 2c about templating is that the values are a place where we can help communicate what's supportable or not. IMO, this means that having each field be separate provides a better "contract". |
Another note: I would suggest removing options that we don't expect to be used as much until explicitly requested. This can help us maintain a higher level of quality due to the reduced maintenance burden and QA needed. |
Limited the available options as per the suggestions of @vasiliy-ul above. |