Yes, it's clear how Kubernetes/Camel K is used. I just speak from the field which mostly goes like this:
1) IT strategy is to move (everything) to the cloud 2) Engineers propose Kubernetes 3) The integration specialists propose CamelK 4) The architect propose an "event-driven architecture" Everyone is enthusiastic, first integration will be some event-driven thing between microservices. Success! However everyone wants after that everything works in this one solution. So in practice everyone wants to reuse non-cloud protocols and patterns. I already see their next request: "Please get files from our Windows file share and send an email based on the file" >From a theoretical perspective it easy to say no, but in practice...Also, to fulfill real business case (event typical cloud use cases) a lot of complexity needs to be added. In practice no one understands the limitations. Maybe I would be good that on the Camel page there will be more explanation on the use cases and limitations of CamelK. Also which Camel components works good with CamelK and which not. As a side note: You spoke of no code/low code solution. When I think of low-code I would think more of Fuse Online/Syndesis then CamelK. Here it is more of less code/DSL/convention-over-configuration type of thing, but at the end it's still code. Op di 17 mrt. 2020 om 09:23 schreef Claus Ibsen <claus.ib...@gmail.com>: > Camel K is not for a traditional Java development project with many > dependencies and source code files, and complex builds and so on. > Its for low-code/no-code lightweight integration in the cloud (= > kubernetes) for users whom may not be hard-core Java developers. > > For traditional java development projects then look at camel-quarkus > or still use spring boot (but SB is heavy for Java in containers) for > cloud workloads (= kubernetes). > That becomes just a standard container image with a JVM base that you run. > > Camel K runs via "intelligence" via the Camel K operator that "figures > out how to run your stuff". > > With Camel K its still 100% Camel and you have CamelContext and all of > that. But it focused on hiding that more, and just make the route DSL > front and center, where you do "low code" to specify what to integrate > together. > > > > > > On Tue, Mar 17, 2020 at 9:13 AM ski n <raymondmees...@gmail.com> wrote: > > > > Ad 1) Dependency resolution > > > > As I understand it. > > > > a) The user doesn't need to to specify Camel dependencies, but other > > dependency (like i.e. Guava) needs to be explicitly defined > > b) If it's a Camel dependency then CamelK will map the scheme to the > maven > > artifact > > c) The Camel and all other artifacts are then downloaded from maven > central > > if needed and compiled (or injected at runtime?) > > > > Seems like a very useful feature for other implementations like Camel > > Standalone, Wildfly/EAP, Spring boot, Karaf as well. > > > > Ad 2) Running multiple files > > > > Would be nice to specify just a root directory and Kamel will scans this > > directory recursively. > > > > Ad 3) Interacting with CamelK > > > > So the option is either to use "Kamel CLI" or for Java use the > > kubernetes-java client that has java api for k8s. > > > > OK, thanks. Wished to stay within the Camel Framework as much as > possible. > > My estimation is: > > > > Option 1) Easy to use Kamel, but hard hard to combine this with > > traditional Camel apps ( Camel Standalone, Wildfly/EAP, Spring boot, > Karaf) > > Option 2) Hard to use K8's API (need to write a CamelK client wrapper), > > but easy to combine with traditional Camel. > > > > My question comes from that there is already a lot of Camel > implementations > > out there. It's already a big step to go from for example Wildfly to > Spring > > Boot, but to Kubernetes seems to be a bigger hurdle. > > > > For example now I have a Spring boot Camel application. Everything > > Registry, Route, Processors works perfectly. Say one company wants to use > > this application on a traditional VM and a second company want to use the > > same application in OpenShift. When I move that application to Kubernetes > > can I move the workload from my Spring boot application running in > > Openshift to KNative/CamelK and still manage it from my > CamelContext/Spring > > Boot? Or do I need two code bases then? > > > > As you mentioned before companies have all kind of different > > workloads/protocols. The nice things about Camel I can all be > > configured/managed this form one place/framework. Seems like I need to > > rewrite/migrate the event based routes first to the CamelK way of > working. > > > > So my main point is that while you may ideally switch to an event > > based/microservice world where you run locally and in the cloud > everything > > on Kubernetes or Openshift. However if both worlds needs to be supported > > then you stand with one leg in one world and with your other leg in the > > other. Moving back and forward. Looking for reuse and reconcile both > worlds > > a little :) > > > > > > Kind regards, > > > > Raymond > > > > > > > > Op ma 16 mrt. 2020 om 19:48 schreef Claus Ibsen <claus.ib...@gmail.com>: > > > > > Hi > > > > > > Its a bunch of questions I will give a few points with the limited > time I > > > have. > > > > > > We want to do a webinar in the future about Camel K with more deep > > > dive, especially around its 1.0 GA release timeframe. > > > > > > Ad 1) > > > You can read about dependency resolution here > > > > https://camel.apache.org/camel-k/latest/configuration/dependencies.html > > > > > > Camel K uses the camel-catalog to know how to map from component names > > > to maven artifacts. > > > https://github.com/apache/camel/tree/master/catalog/camel-catalog > > > > > > > > > Ad 2) > > > You can specify multiple files from the CLI > > > > > > kamel run File1.java File2.java > > > > > > Being able to run with *.java or something is AFAIK not currently > > > supported, but we are open for ideas. > > > > > > Ad 3) > > > Camel K uses standard Kubernetes CRD (custom resource definitions). > > > So any tool/language that can talk to the k8s API server (rest calls) > > > you can use. > > > And of course also the kubernetes client - kubectl. > > > > > > For Java there is the kubernetes-java client that has java api for k8s. > > > > > > Ad 4) > > > Scaling is not Camel K specific. You can setup replicas and quotes and > > > limits etc which are standard k8s concepts. > > > But for scaling then Knative is the interesting add-on for k8s that > > > event based scaling. Camel K works with that too. > > > > > > However knative is likely more for modern cloud workloads, and not for > > > traditional enterprise systems like JMS messaging, or FTP data > > > transfers. > > > But Camel can bridge that world and allow Camel components to act as > > > sink and sources for knative eventing. > > > > > > For k8s concepts then I also recommend the k8s patterns book by Bilgin > > > and Roland. > > > https://k8spatterns.io/ > > > > > > > > > > > > > > > On Mon, Mar 16, 2020 at 6:42 PM ski n <raymondmees...@gmail.com> > wrote: > > > > > > > > Hi all, > > > > > > > > In the last presentation there was also a short demo on CamelK. That > > > looked > > > > very interesting, but I have some questions on how does it work, > > > especially > > > > in more complex use cases. > > > > > > > > Here are some questions I have: > > > > > > > > Question 1: Dependency resolution > > > > > > > > In CamelK you can provide the following: > > > > > > > > from("imap://ad...@myserver.com") > > > > .to("seda:output") > > > > > > > > Because imap is not part of core this will start the dependency > > > resolution. > > > > How does this work? How does CamelK know it needs the mail component > as > > > > dependency? Is there some kind of fixed mapping between the scheme > and > > > > component? > > > > > > > > Say for example I have the following route: > > > > > > > > from("seda:input") > > > > .to("seda:output") > > > > > > > > This is then run on Kubernetes/CamelK. Then I change this to: > > > > > > > > from("imap://ad...@myserver.com") > > > > .to("seda:output") > > > > > > > > Is this dependency add as "Maven" dependency and then recompiled? Or > is > > > the > > > > jar downloaded and the added? Or something else... > > > > > > > > > > > > Question 2: Multiple files > > > > > > > > In the Java example: > > > > https://camel.apache.org/camel-k/latest/languages/java.html > > > > > > > > There is one simple route with one file. How does it work in more > complex > > > > cases when there are multiple files? > > > > > > > > For example I have the following package: > > > > > > > > Registry.java > > > > Route1.java > > > > Route2.java > > > > Processor.java > > > > Connection.java > > > > > > > > In Route1.java data is retrieved with the SQL component out of an > Oracle > > > > database, also this routs calls a processor. In route 2 the pojo is > > > > marshalled to JSON and send to a HTTP endpoint. In registry things > like > > > > SSL, metrics are configured. In the processor some mapping is done > and in > > > > the connection the Oracle driver is configured. > > > > > > > > Can I run a whole package with the Kamel CLI? How does Kamel gets for > > > > example the dependency for the Oracle driver? > > > > > > > > > > > > > > > > Question 3: Configure and Management from Java. > > > > > > > > What I believe is that the Kamel CLI client is written in Go. So the > flow > > > > is as follows: > > > > > > > > A) Write some Camel code in the available languages. > > > > > > > > https://camel.apache.org/camel-k/latest/languages/languages.html > > > > > > > > B) Use Kamel CLI to run/deploy it on Kubernetes > > > > > > > > C) Use something like hawt.io to manage it. > > > > > > > > Is this also available from Java (or as Camel component) to > > > > configure/deploy it from Java code and to manage it from Java code? > > > > > > > > > > > > Question 4: Scaling > > > > > > > > Kubernetes is ideal for horizontal scaling. How does this work with > > > CamelK? > > > > Say I have the following two routes: > > > > > > > > from("activemq:topic:foo") > > > > .to("sftp://sample.com/someDir") > > > > > > > > from("sftp://sample.com/someDir") > > > > .to("activemq:topic:foo") > > > > > > > > When the routes are scaled. How does CamelK prevent that in the first > > > route > > > > multiple messages arrive in the same FTP directory. And in the second > > > > example there are multiple routes listening to the same directory > and get > > > > file locks. Does it have possibilities how to scale the routes? > > > > > > > > Kind regards, > > > > > > > > Raymond > > > > > > > > > > > > -- > > > Claus Ibsen > > > ----------------- > > > http://davsclaus.com @davsclaus > > > Camel in Action 2: https://www.manning.com/ibsen2 > > > > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 >