On Tue, Mar 17, 2020 at 12:06 PM ski n <raymondmees...@gmail.com> wrote: > > 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: >
Ah yeah that is a great observation. The IT world is not shiny greenfield with only latest and greatest shiny cloud systems, and protocols. > "Please get files from our Windows file share and send an email based on > the file" > Yeah you can move a lot of data via files ;) So knative has sources which you can plugin, but of course its mainly a few cloud protocols so far, and kafka. But Camel K can bridge to that with all its 200+ components. But you need to setup that via knative yaml and also transform the data to cloud events. So its not super easy plug and play. But it has potential. > 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. > All the components work with Camel K (well all the ones you can run standalone, so skip osgi, servlet and a few others). It all just runs on a JVM. > 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. > Yeah syndesis is targeting this, but possible mostly the no-code and non developer space, with its web UI driven "glue together systems" style. > > > > > > > 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 > > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2