-
Notifications
You must be signed in to change notification settings - Fork 344
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
Externally built Integrations are deployed without a command in Camel-K 2.2.0 #5112
Comments
I think it's a side effect of #4831 In order this to work, we check if the image was generated by a [1] camel-k/pkg/trait/container.go Lines 352 to 355 in 1db0f57
|
Thanks for the feedback. |
What about providing a variable for "camel-k-kit-" that would be overridable per user will? |
@squakez is checking the name of the image really needed ? I recall that when a container image is explicitly set, then the operator creates an |
@lburgazzoli yeah, we can try to improve the check to leverage the Kit instead of the Integration image name. I am not 100% sure if at the time of checking, the Kit is already available in the environment, but it's worth to make some validation and apply the change if it really works. |
@squakez I'll take care of this. |
While the #4831 change had the effect to deactivate the jvm trait, it did not change the fact the use case described here resulted to an external |
Yes, either we rely on the name or the presence of the "external" type IntegrationKit would lead to the same result. The operator cannot know for sure if a container was created by the user. We may think to let the user enforce the usage of the jvm trait by not disabling if this is explicitly set to enabled (ie, |
still, I think that we should remove the container image name check as it is redundant and not in line with the design principle of the
Yes for an external integration kit we should assume that the container image has a proper entrypoint and disable some traits such as the jvm one (and maybe some others) The proper way for reuse a container image should be to also copy the related |
That's the way it works now. A "synthetic" kit is created after the image name provided by the user. We may check the "external" type property to make it more consistent, but, from a practical point of view, nothing would change. I agree, the usage of a "raw" container backed by a previously built kit is not a good practice. As you say, the ideal world (also for re-usability) would be to copy the Kit resource. |
This is true if you provide an image but if I remember correctly, if you do something like |
I think it would be better for now to :
That way the users that where using the workaround can still do it without having to have an internal kit. |
Just for info, in the past we had an option to create a standalone/runnable image, may be worth thinking to re-introduce it |
What happened?
While creating an Integration with an Image specified in Container, I noticed that the corresponding Deployment created by the operator is lacking the command line resulting in the pod not able to start.
Steps to reproduce
kamel run my-integration.yaml
docker tag docker tag 07cd1c6e2b31 nexus-camel-k:48083/fm/integrations/my-integration:2.2.0
kamel run my-integration.yaml -o yaml > itg.my-integration.yaml
kamel delete --all
kubectl apply -f itg.my-integration.yaml
integrationKit is ok
deployment is created but does not contain a startup command
pod remains CreateContainerError ('Error response from daemon: No command specified.' error message)
The same procedure with version 2.1.0 or 1.10.2 works well.
Relevant log output
No response
Camel K version
2.2.0
The text was updated successfully, but these errors were encountered: