Chapter 5. Camel K release notes

Camel K is a lightweight integration framework built from Apache Camel K that runs natively in the cloud on OpenShift. Camel K is specifically designed for serverless and microservice architectures. You can use Camel K to instantly run integration code written in Camel Domain Specific Language (DSL) directly on OpenShift.

Using Camel K with OpenShift Serverless and Knative, containers are automatically created only as needed and are autoscaled under load up and down to zero. This removes the overhead of server provisioning and maintenance and enables you to focus instead on application development.

Using Camel K with OpenShift Serverless and Knative Eventing, you can manage how components in your system communicate in an event-driven architecture for serverless applications. This provides flexibility and creates efficiencies using a publish/subscribe or event-streaming model with decoupled relationships between event producers and consumers.

5.1. New Camel K features

The Camel K provides cloud-native integration with the following main features:

  • Knative Serving for autoscaling and scale-to-zero
  • Knative Eventing for event-driven architectures
  • Performance optimizations using Quarkus runtime by default
  • Camel integrations written in Java or YAML DSL
  • Monitoring of integrations using Prometheus in OpenShift
  • Quickstart tutorials
  • Kamelet Catalog for connectors to external systems such as AWS, Jira, and Salesforce
  • The following traits are provided as Technology Preview:

    • Knative Service trait
    • Knative trait
    • OpenAPI trait

5.1.1. Supported Kamelets

The following table lists the kamelets that are provided as OpenShift resources when you install the Camel K operator.

For details about these kamelets, go to: https://github.com/openshift-integration/kamelet-catalog/tree/kamelet-catalog-1.4

For information about how to use kamelets to connect applications and services, see https://access.redhat.com/documentation/en-us/red_hat_integration/2021.q3/html-single/integrating_applications_with_kamelets.

Important

Kamelets marked with an asterisk (*) are Technology Preview features only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production.

These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview.

Table 5.1. Kamelets provided with the Camel K operator

KameletFile nameType (Sink, Source, Action)

Avro Deserialize action

avro-deserialize-action.kamelet.yaml

Action (data conversion)

Avro Serialize action

avro-serialize-action.kamelet.yaml

Action (data conversion)

AWS 2 S3 sink

aws-s3-sink.kamelet.yaml

Sink

AWS 2 S3 source

aws-s3-source.kamelet.yaml

Source

AWS 2 S3 Streaming Upload sink

aws-s3-streaming-upload-sink.kamelet.yaml

Sink

AWS 2 Kinesis sink

aws-kinesis-sink.kamelet.yaml

Sink

AWS 2 Kinesis source

aws-kinesis-source.kamelet.yaml

Source

AWS 2 Lambda sink

aws-lambda-sink.kamelet.yaml

Sink

AWS 2 Simple Notification System sink

aws-sns-sink.kamelet.yaml

Sink

AWS 2 Simple Queue Service sink

aws-sqs-sink.kamelet.yaml

Sink

AWS 2 Simple Queue Service source

aws-sqs-source.kamelet.yaml

Source

AWS SQS FIFO sink

aws-sqs-fifo-sink.kamelet.yaml

Sink

Cassandra sink*

cassandra-sink.kamelet.yaml

Sink

Cassandra source*

cassandra-source.kamelet.yaml

Source

Elasticsearch Index sink*

elasticsearch-index-sink.kamelet.yaml

Sink

FTP sink

ftp-sink.kamelet.yaml

Sink

FTP source

ftp-source.kamelet.yaml

Source

Has Header Key Filter action

has-header-filter-action.kamelet.yaml

Action (data transformation)

HTTP sink

http-sink.kamelet.yaml

Sink

Insert Field action

insert-field-action.kamelet.yaml

Action (data transformation)

Insert Header action

insert-header-action.kamelet.yaml

Action (data transformation)

Is Tombstone Filter action

is-tombstone-filter-action.kamelet.yaml

Action (data transformation)

Jira source*

jira-source.kamelet.yaml

Source

JMS sink

jms-amqp-10-sink.kamelet.yaml

Sink

JMS source

jms-amqp-10-source.kamelet.yaml

Source

JSON Deserialize action

json-deserialize-action.kamelet.yaml

Action (data conversion)

JSON Serialize action

json-serialize-action.kamelet.yaml

Action (data conversion)

Kafka sink

kafka-sink.kamelet.yaml

Sink

Kafka source

kafka-source.kamelet.yaml

Source

Kafka Topic Name Filter action

topic-name-matches-filter-action.kamelet.yaml

Action (data transformation)

MariaDB sink

mariadb-sink.kamelet.yaml

Sink

Mask Fields action

mask-field-action.kamelet.yaml

Action (data transformation)

Message TimeStamp Router action

message-timestamp-router-action.kamelet.yaml

Action (router)

MongoDB sink

mongodb-sink.kamelet.yaml

Sink

MongoDB source

mongodb-source.kamelet.yaml

Source

MySQL sink

mysql-sink.kamelet.yaml

Sink

PostgreSQL sink

postgresql-sink.kamelet.yaml

Sink

Predicate filter action

predicate-filter-action.kamelet.yaml

Action (router/filter)

Protobuf Deserialize action

protobuf-deserialize-action.kamelet.yaml

Action (data conversion)

Protobuf Serialize action

protobuf-serialize-action.kamelet.yaml

Action (data conversion)

Regex Router action

regex-router-action.kamelet.yaml

Action (router)

Salesforce source

salesforce-source.kamelet.yaml

Source

SFTP sink

sftp-sink.kamelet.yaml

Sink

SFTP source

sftp-source.kamelet.yaml

Source

Slack source

slack-source.kamelet.yaml

Source

SQL Server Database sink

sqlserver-sink.kamelet.yaml

Sink

Telegram source*

telegram-source.kamelet.yaml

Source

TimeStamp Router action

timestamp-router-action.kamelet.yaml

Action (router)

Value to Key action

value-to-key-action.kamelet.yaml

Action (data transformation)

5.2. Supported Configurations

For information about Camel K supported configurations, standards, and components, see the following Customer Portal articles:

5.2.1. Camel K Operator metadata

The Camel K includes updated Operator metadata used to install Camel K from the OpenShift OperatorHub. This Operator metadata includes the Operator bundle format for release packaging, which is designed for use with OpenShift Container Platform 4.6 or later.

5.3. Important notes

Important notes for the Red Hat Integration - Camel K release:

Supported Enterprise Integraion Patterns (EIP) in Camel K

All Camel 3 EIP patterns, except the following, are fully supported for Camel K:

  • Circuit Breaker
  • Saga
  • Change Data Capture
YAML DSL Limitations
YAML DSL integrations are supported in Camel K 1.4, but the error messaging for incorrect YAML DSL code is still in development.
JAVA DSL Limitations
Java DSL in Camel K 1.4 is limited to a single class/configure method and any utility must be provided in third party JARS. The endpoint URIs must be defined directly in the endpoint strings for the Camel K automatic dependency support, otherwise you must specify the dependencies in modeline.
XML DSL is not supported
XML DSL is not supported in Camel K 1.4.

5.3.1. Supported Camel Quarkus extensions

This section lists the Camel Quarkus extensions that are supported for this release of Camel K (only when used inside a Camel K application).

Note

These Camel Quarkus extensions are supported only when used inside a Camel K application. These Camel Quarkus extensions are not supported for use in standalone mode (without Camel K).

5.3.1.1. Supported Camel Quarkus connector extensions

The following table shows the Camel Quarkus connector extensions that are supported for this release of Camel K (only when used inside a Camel K application).

NamePackage

AWS 2 Kinesis

camel-quarkus-aws2-kinesis

AWS 2 Lambda

camel-quarkus-aws2-lambda

AWS 2 S3 Storage Service

camel-quarkus-aws2-s3

AWS 2 Simple Notification System (SNS)

camel-quarkus-aws2-sns

AWS 2 Simple Queue Service (SQS)

camel-quarkus-aws2-sqs

File

camel-quarkus-file

FTP

camel-quarkus-ftp

FTPS

camel-quarkus-ftp

SFTP

camel-quarkus-ftp

HTTP

camel-quarkus-http

JMS

camel-quarkus-jms

Kafka

camel-quarkus-kafka

Kamelets

camel-quarkus-kamelet

Metrics

camel-quarkus-microprofile-metrics

MongoDB

camel-quarkus-mongodb

Salesforce

camel-quarkus-salesforce

SQL

camel-quarkus-sql

Timer

camel-quarkus-timer

5.3.1.2. Supported Camel Quarkus dataformat extensions

The following table shows the Camel Quarkus dataformat extensions that are supported for this release of Camel K (only when used inside a Camel K application).

NamePackage

Avro

camel-quarkus-avro

Bindy (for CSV)

camel-qaurkus-bindy

JSON Jackson

camel-quarkus-jackson

Jackson Avro

camel-quarkus-jackson-avro

5.3.1.3. Supported Camel Quarkus language extensions

In this release, Camel K supports the following Camel Quarkus language extensions (for use in Camel expressions and predicates):

  • Constant
  • ExchangeProperty
  • File
  • Header
  • Ref
  • Simple
  • Tokenize
  • JsonPath

5.3.1.4. Supported Camel K traits

In this release, Camel K supports the following Camel K traits:

  • Builder trait
  • Camel trait
  • Container trait
  • Dependencies trait
  • Deployer trait
  • Deployment trait
  • Environment trait
  • Jvm trait
  • Kamelets trait
  • Owner trait
  • Platform trait
  • Pull Secret trait
  • Prometheus trait
  • Quarkus trait
  • Route trait
  • Service trait
  • Error Handler trait

5.4. Camel K known issues

The following known issues apply to the Camel K 1.4:

ENTESB-15306 - CRD conflicts between Camel K and Fuse Online

If an older version of Camel K has ever been installed in the same OpenShift cluster, installing Camel K from the OperatorHub fails due to conflicts with custom resource definitions. For example, this includes older versions of Camel K previously available in Fuse Online.

For a workaround, you can install Camel K in a different OpenShift cluster, or enter the following command before installing Camel K:

$ oc get crds -l app=camel-k -o json | oc delete -f -

ENTESB-15858 - Added ability to package and run Camel integrations locally or as container images

Packaging and running Camel integrations locally or as container images is not currently included in the Camel K and has community-only support.

For more details, see the Apache Camel K community.

ENTESB-15893 - Camel K catalog contains camel-quarkus-spark reference and cannot deploy integrations with Apache Spark

The Camel K catalog includes the camel-quarkus-spark component, which is no longer included the in the Bill of Materials (BOM) for Camel Quarkus extensions. When you try to deploy a Camel K integration using the Spark component in Camel Quarkus, the integration cannot be compiled due to this missing dependency.

For more details, see the Spark component in Camel Quarkus.

ENTESB-16477 - Unable to download jira client dependency with productized build

When using Camel K operator, the integration is unable to find dependencies for jira client. The work around is to add the atlassian repo manually.

apiVersion: camel.apache.org/v1
kind: IntegrationPlatform
metadata:
  labels:
    app: camel-k
  name: camel-k
spec:
  configuration:
  - type: repository
    value: <atlassian repo here>

ENTESB-17071 - Azure storage kamelets doesn’t work

Azure storage kamelet produces an error when binding. The workaround is to copy the azure storage kamelet from Kamelet catalog and replace it with the kamelet that oprator installs by default. Then follow the instructions in the Kamelets user guide.

ENTESB-17033 - Camel-K ElasticsearchComponent options ignored

When configuring the Elasticsearch component, the Camel K ElasticsearchComponent options are ignored. The work around is to add getContext().setAutowiredEnabled(false) when using the Elasticsearch component.

ENTESB-17061 - Can’t run mongo-db-source kamelet route with non-admin user - Failed to start route mongodb-source-1 because of null

It is not possible to run mongo-db-source kamelet route with non-admin user credentials. Some part of the component require admin credentials hence it is not possible run the route as a non-admin user.

2492 - Within a kamelet binding, Camel components in URIs require dependency declarations

The Camel K operator generates an integration from a kamelet binding at runtime. For integrations not generated by a kamelet binding, Camel K automatically handles the dependency management and imports all the required libraries from the Camel catalog. However, you must specify any Camel components that you reference in a URI within a kamelet binding as a dependency.

5.5. Camel K Fixed Issues

The following sections list the issues that have been fixed in Camel K 1.4.0.

5.5.1. Enhancements in Camel K 1.4.0

The following table lists the enhancements in Camel K 1.4.0.

Table 5.2. Camel K 1.4.0 Enhancements

IssueDescription

ENTESB-14370

Seamless upgrades for Camel-K

ENTESB-16956

"Missing tests for ""pull secret"" trait properties"

ENTESB-16567

Document how to debug Kamelets

ENTESB-16351

Cleanup configuration options for Camel K

ENTESB-16316

Backport CAMEL-16474 : camel-azure - Blob consumer should extend scheduled endpoint

ENTESB-14412

Possibility to specify operator requests and limits

ENTESB-14218

[Observability] Provide ootb metrics for Camel K

ENTESB-16348

Support for Route Template local beans

5.5.2. Feature requests in Camel K 1.4.0

The following table lists the features requests in Camel K 1.4.0.

Table 5.3. Camel K 1.4.0 Feature Requests

IssueDescription

ENTESB-16704

Create MongoDB kamelet

ENTESB-16701

Kamelets support for custom beans and drivers

ENTESB-16420

Http sink kamelet into downstream catalogue

ENTESB-16318

Backport Streaming upload for Camel AWS2-S3

ENTESB-16435

Provide an example that shows how Camel K integrations can access a JDBC database

ENTESB-16436

Provide an example that shows how Camel K integrations can access a JMS broker

ENTESB-16419

Error handling in Kamelets

ENTESB-16306

Create a Kamelet Catalog

5.5.3. Bugs resolved in Camel K 1.4.0

The following table lists the resolved bugs in Camel K 1.4.0.

Table 5.4. Camel K 1.4.0 Resolved Bugs

IssueDescription

ENTESB-15787

kamel run does not work for remote files on windows

ENTESB-15741

Camel 3 failing tests: infinispan

ENTESB-17032

OLM manual upgrade techpreview1.4.x does not work

ENTESB-16749

"Unrecognized field ""type"" in KameletSpec in YAKS"

ENTESB-16991

Change the JMS dependencies to inherit clients from org.amqphub.quarkus:quarkus-qpid-jms

ENTESB-16772

Lambda: Using CamelAwsLambdaZipFile header fails at runtime

ENTESB-15278

Camel 3 failing tests: mina

ENTESB-15800

Camel-K: Can’t mount secrets with binary data

ENTESB-17113

"Kamel global operator

ENTESB-17076

AMQP Kamelet - unable to find qpid-jms-client dependency

ENTESB-16950

Kameletbinding with aws-kinesis-sink throws NPE if not used insert-header-action kamelet

ENTESB-16930

Port in SQL Kamelet overriden when used with InMemoryChannel source

ENTESB-17005

Catalog.version doesn’t have redhat suffix in build 7

ENTESB-17086

Can’t upgrade from 1.3.3 to 1.4.0

ENTESB-16882

Failed to run Install Kafka in Kamelet-catalog

ENTESB-16878

Saleforce kamelet return UNAUTHORIZED instead of CREATED

ENTESB-16820

Camel-k-example-knative: Exceptions in cautious-investor pods

ENTESB-16291

Azure Storage Queue: Camel startup fails due to null client in 3.9.0

ENTESB-16317

Backport CAMEL-16498 - Camel-Azure-Storage-queue consumer doesn’t work

ENTESB-15930

Dependency autoloading is not working correctly with YAML format

ENTESB-16068

Kamelets are looked up in github/apache/camel-kamelets in global installation mode with OLM=true

ENTESB-16437

Kamel global operator error executing post actions: error during create resource: Deployment

ENTESB-16430

Pull secret trait does not work as expected

ENTESB-16584

CronJobs written in YAML format don’t work correctly

ENTESB-16422

Camel-k-example-saas: loginUrl must be specified with 1.4.0

ENTESB-16432

AWS Kinesis kamelet throws org.apache.camel.NoTypeConversionAvailableException while logging Record

ENTESB-16424

Camel-k-example-api: The specified bucket does not exist with 1.4.0

ENTESB-16289

Camel-K: Integration not marked as Failed when Camel is unable to start

ENTESB-16879

AWS-Kinesis kamelet NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonKey

ENTESB-16887

camel-k-example-event-streaming: sjms2 Error - Unknown parameters=[{ttl=…​}]

ENTESB-16900

"prometheus trait: the ""enabled"" property automatically inferred causes error if set by the user"

ENTESB-16999

Remove artemis sink and source kamelets

ENTESB-16998

KameletBinding from KafkaTopic to elasticsearch-index-sink seems to require user parameter

ENTESB-17120

camel-k-example-event-streaming open-aq-consumer is failing with 503 on api.openaq.org

ENTESB-17031

CamelHttpUri in http-sink kamelet overriden if used with InMemoryChannel

ENTESB-16982

kamel bind errorHandler is empty

ENTESB-16918

kamel run does not work for remote files on windows (cannot read sources)

ENTESB-17040

Kamelet elasticsearch-index-sink cant use exchangeid as indexid

5.5.4. Bugs resolved in Camel K 1.4.1

The following table lists the resolved bugs in Camel K 1.4.1.

Table 5.5. Camel K 1.4.1 Resolved Bugs

IssueDescription

ENTESB-17309

Camel-K uses a Knative API that has been removed in Serverless 1.17/Knative 0.23