From 1aacb4b3d2d2c5c58867521a05da1cec08db3e8c Mon Sep 17 00:00:00 2001 From: Pasquale Congiusti Date: Tue, 2 Apr 2024 13:34:11 +0200 Subject: [PATCH] feat: Camel K sourceless springboot runtime --- .../04/sourceless-ck-springboot/featured.png | Bin 0 -> 39064 bytes .../2024/04/sourceless-ck-springboot/index.md | 135 ++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 content/blog/2024/04/sourceless-ck-springboot/featured.png create mode 100644 content/blog/2024/04/sourceless-ck-springboot/index.md diff --git a/content/blog/2024/04/sourceless-ck-springboot/featured.png b/content/blog/2024/04/sourceless-ck-springboot/featured.png new file mode 100644 index 0000000000000000000000000000000000000000..32981219066c0d20f847b0ffae737c5ef90957b4 GIT binary patch literal 39064 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 The entire building and publishing process can be substituted by a more formal CICD process. For simplicity reason we've preferred the local prototyping approach. + +### Create the application + +Let's create a Java application with a single endpoint: + +```java +import org.apache.camel.builder.RouteBuilder; + +public class PlatformHttpServer extends RouteBuilder { + @Override + public void configure() throws Exception { + from("platform-http:/hello?httpMethodRestrict=GET").setBody(simple("Hello ${header.name}")); + } +} +``` + +Thanks to Camel JBang, we can quickly run it locally and validate the prototype: + +``` +camel run PlatformHttpServer.java +``` + +In a separate shell: + +``` +$ curl localhost:8080/hello --header 'name: world' +Hello world +``` + +It works good enough to proceed to next step. + +### Publish the application + +Let's leverage the Camel JBang capabilities now to export the application in our runtime of choice, say, Camel Spring Boot: + +``` +$ camel export PlatformHttpServer.java --runtime spring-boot --gav org.acme:my-csb:1.0.0 --dir csb +``` + +In the `csb` directory, we'll have the exported Maven project. Let's build and run this as well. We should expect the same result, but, this time, with a Spring Boot application. + +``` +$ mvn clean package +... +$ java -jar target/my-csb-1.0.0.jar +... +2024-04-02T12:49:38.492+02:00 INFO 547806 --- [ main] org.acme.mycsb.CamelApplication : Started CamelApplication in 3.684 seconds (process running for 4.121) +... +$ curl localhost:8080/hello --header 'name: world' +Hello world +``` + +As we have no surprises, let's put this into a container and publish the the same registry used by Camel K on Kubernetes. We need to create a Dockerfile: + +``` +FROM eclipse-temurin:17 +COPY --chown=185 target/my-csb-1.0.0.jar /deployments/my-camel-app.jar +CMD java -jar /deployments/my-camel-app.jar +``` + +We can now use this manifest to build and push the container to our registry (in my case a local registry hosted on 10.103.186.147): + +``` +docker build -t 10.103.186.147/default/csb . +docker push 10.103.186.147/default/csb +``` + +### Operate the application + +We are now in the position to operate the application with Camel K. The goal is to take care of the deployment. As this is a Knative, it will run the related traits required to run a `KnativeService` instead of a regular `Deployment` and scale to 0 when there is no traffic: + +``` +$ kamel run --image 10.103.186.147/default/csb +... +[1] 2024-04-02T11:00:14.950Z INFO 7 --- [ main] org.acme.mycsb.CamelApplication : Started CamelApplication in 3.239 seconds (process running for 3.7) +``` + +We can now start **monitoring the applications** and see if it really scale to 0 after some time of inactivity: + +``` +$ kubectl get it -w +NAME PHASE [...] KIT REPLICAS +csb Running [...] kit-csb 1 +csb Running [...] kit-csb 0 +``` + +It really does. Let's try to send some traffic now and see if it correctly wake up and respond as expected. I am running this test in a local environment, so, I'm going to use the operator Pod as a bridge for testing. In a real connected cluster, you should be able to use the service URL out of the box. + +``` +$ kubectl -it exec camel-k-operator-5f77f8976b-qgknm -- curl http://csb.default.svc.cluster.local/hello --header 'name: CSB' +Hello CSB +``` + +As the application was scaled to 0, the first time we are calling this will take a few more seconds than normally because it will require the time to start it up again. However, in general, you have seen the possibility offered by the operator also when running applications which are built externally. \ No newline at end of file