-
Notifications
You must be signed in to change notification settings - Fork 345
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
Possibility to bring in pluggable and shareable trait configuration #4271
Comments
I think this was already required in #934 - in the while, you can use IntegrationPlatform and provide there the definition of traits you want to use. Then, any Integration built from that platform will share them. |
My understanding is that any trait configuration I set up directly in the IntegrationPlatform will be applied to all integrations, no? This is not quite what I want. |
Yes, that's correct, it is kind of possible workaround for the time being. |
I see. I don't think that it is a suitable workaround for my needs though as I would like to control these traits on the integration level, rather than the integration platform level. I've read @lburgazzoli's issue and I think we both envision the same feature. I am assuming that you guys are open to having/building such a feature since #934 is still open and marked as never-stale. Would you like to entertain the idea of introducing a new CRD to tackle this? Would this be the right approach? |
Could be an idea. As always it's a matter of priorities. And as always, anyone is very welcome to contribute to the feature :) |
Yeah, I get your point. :) Would like to work on this actually. Do you think this makes sense as a CRD though? |
I don't have preferences tbh. Probably a CRD would fit better and can be typed against any other format such as a simple configmap and could be easily extended with more configuration in the future. Let me know if you're going to work on it so I can assign this issue to you. |
Yeah, go ahead and assign the issue to me. CRD it is! |
This issue has been automatically marked as stale due to 90 days of inactivity. |
The title might not be 100% on point so you guys feel free to change it.
Consider the following
kamel run
command:This is quite a long
kamel run
command. We usually keep these in arun.sh
file for each integration and let the CI/CD pipeline run these shell files. The thing is, the content of ourrun.sh
files share a lot of code between them, resulting in unnecessary duplication. Also, we have some developers with Java background writing these integrations, and they are not (and should not) be too bothered with all these trait configurations. We have dedicated people with decent Kubernetes, Knative, Istio, etc experience that usually prepares these platform-specific trait customizations and audits them.The idea I have is roughly the following:
TraitProfile
(?) namedKnative-Enabled-100-RPS-Min-Scale-0
with the following content:TraitProfile
namedQuarkus-Native
with the following content:TraitProfile
namedDefault-Health-Config
with the following content:TraitProfile
namedContainer-Limit-250m-256Mi
:kamel run
command as such:This, IMHO, would be a great addition to Camel-K as it is something we would use everywhere. These profiles would be installed onto the Kubernetes platform, just like Kamelets, and the developers would be able to browse through them. A developer whose focus is to write integrations wouldn't be worried about these configurations. A platform engineer who is well-versed in Knative, Istio, etc but not aware of the
kamel
CLI syntax would just write theseTraitProfile
customizations in a YAML andkubectl apply
them asCRDs
. Same platform engineer would be able to replaceKnative-Enabled-100-RPS-Min-Scale-0
withKnative-Enabled-250-RPS-Min-Scale-1
for example; resulting in fast iterations.Something roughly like this:
And the actual
TraitProfile
YAML spec would look something like this:What do you guys think? I am aware of we already have something called
"Trait Profiles"
as per this but I see no usage/showcase of that besides the Knative, Kubernetes, and Openshift profiles. And these three are rather pre-defined profiles that the platform uses. So I am under the impression that the existing"Trait Profiles"
are not exactly for what I am proposing here. Please correct me if I am wrong. I got confused by this so I created this issue.The text was updated successfully, but these errors were encountered: