Camel-K: Configuration-Driven Integration Platform

Rajat Nigam
Geek Culture
Published in
4 min readApr 3, 2023
Photo by SpaceX on Unsplash

As more organizations embrace microservices architectures, the need for effective integration between different services becomes more important. Apache Camel is a popular open-source framework that enables developers to integrate different systems using various protocols and data formats easily. Camel-K is an extension of Camel that focuses specifically on serverless integration, making it easier to create and deploy integration flows in a serverless environment.

What is Camel-K?

Camel-K is a lightweight integration platform designed to work with Kubernetes and serverless platforms like Knative or OpenFaaS. With Camel-K, developers can write integration code using a variety of programming languages like Java, Groovy, JavaScript, and Kotlin and supply that code to the integration platform through configuration.

Camel-K also supports a wide range of data formats and protocols, making it easy to connect different systems and services.

One of the main benefits of Camel-K is that it simplifies the process of deploying integration flows in a serverless environment. Developers can write integration code using their preferred programming language and then use Camel-K to deploy the code as a serverless function. Camel-K takes care of all the necessary infrastructure and runtime dependencies, allowing developers to focus on writing code.

Getting Started with Camel-K

Prerequisites

  • Kubectl: The Kubernetes command-line tool
kubectl version
verify kubectl installation
  • Kind: Kubernetes In Docker. Kind lets you run Kubernetes on your local computer.

Installing Camel K on Kind, with a public registry, doesn’t require any special configuration.

Assuming you have Kind installed, then start by creating a cluster:

- kind create cluster
- kubectl get nodes
kind k8 cluster verification
  • Camel-K CLI, kamel:
kamel help
verify kamel client

Install Camel K operator on the k8 cluster in the default namespace

kamel install --registry docker.io --organization rajat965ng --registry-auth-username <dockerhub_user_name> --registry-auth-password <dockerhub_password>
organization & username from the docker hub profile

As part of the cluster setup, kamel will install the following resources in the target namespace

  • Camel K Integration Platform
  • Camel K Config Maps
  • Camel K Registry Secret
  • Camel K Platform Kamelets
  • Camel K Operator
  • Camel K Role Bindings
  • Camel K Roles
  • Camel K Service Accounts

Implementations

You can create a new Camel-K integration by running the following command:

kamel init cron.groovy

This command will create a new Camel-K integration project in the current directory. Following is a sample Camel route that logs a message on stdout

from('cron:tab?schedule=*+*+*+*+?') // once every minute
.setBody()
.simple('Hello Camel K using CronJob')
.to('log:info?showAll=false')

You can then build and deploy the Camel-K integration by running the following command:

kamel run cron.groovy
kamel creates docker image of integration and push it to the container registry
kamel get #List all the deployed integrations

This command will build the Camel-K integration, push the artifact in the container registry and deploy it to a serverless platform like Kubernetes, Knative, or OpenFaaS. Once the integration is deployed, you can send messages to the stdout.

kamel log cron
kubectl get cronjobs

Conclusion

Camel-K is a powerful tool for creating and deploying serverless integrations in Kubernetes environments. With Camel-K, developers can write integration code in their preferred language and then deploy it as a serverless function without worrying about the underlying infrastructure. Whether building a new microservices architecture or integrating existing systems, Camel-K can help you streamline the integration process and accelerate your development efforts.

References

Installation

Examples

--

--

Rajat Nigam
Geek Culture

I'm a lifetime student of software engineering. Professionally I work in the capacity of Individual Contributor, Trainer, Lead Engineer and an Architect.