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.
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.
Kamelet | File name | Type (Sink, Source, Action) |
---|---|---|
Avro Deserialize action |
| Action (data conversion) |
Avro Serialize action |
| Action (data conversion) |
AWS 2 S3 sink |
| Sink |
AWS 2 S3 source |
| Source |
AWS 2 S3 Streaming Upload sink |
| Sink |
AWS 2 Kinesis sink |
| Sink |
AWS 2 Kinesis source |
| Source |
AWS 2 Lambda sink |
| Sink |
AWS 2 Simple Notification System sink |
| Sink |
AWS 2 Simple Queue Service sink |
| Sink |
AWS 2 Simple Queue Service source |
| Source |
AWS SQS FIFO sink |
| Sink |
Cassandra sink* |
| Sink |
Cassandra source* |
| Source |
Elasticsearch Index sink* |
| Sink |
FTP sink |
| Sink |
FTP source |
| Source |
Has Header Key Filter action |
| Action (data transformation) |
HTTP sink |
| Sink |
Insert Field action |
| Action (data transformation) |
Insert Header action |
| Action (data transformation) |
Is Tombstone Filter action |
| Action (data transformation) |
Jira source* |
| Source |
JMS sink |
| Sink |
JMS source |
| Source |
JSON Deserialize action |
| Action (data conversion) |
JSON Serialize action |
| Action (data conversion) |
Kafka sink |
| Sink |
Kafka source |
| Source |
Kafka Topic Name Filter action |
| Action (data transformation) |
MariaDB sink |
| Sink |
Mask Fields action |
| Action (data transformation) |
Message TimeStamp Router action |
| Action (router) |
MongoDB sink |
| Sink |
MongoDB source |
| Source |
MySQL sink |
| Sink |
PostgreSQL sink |
| Sink |
Predicate filter action |
| Action (router/filter) |
Protobuf Deserialize action |
| Action (data conversion) |
Protobuf Serialize action |
| Action (data conversion) |
Regex Router action |
| Action (router) |
Salesforce source |
| Source |
SFTP sink |
| Sink |
SFTP source |
| Source |
Slack source |
| Source |
SQL Server Database sink |
| Sink |
Telegram source* |
| Source |
TimeStamp Router action |
| Action (router) |
Value to Key action |
| 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.
Additional resources
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).
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).
Name | Package |
---|---|
AWS 2 Kinesis |
|
AWS 2 Lambda |
|
AWS 2 S3 Storage Service |
|
AWS 2 Simple Notification System (SNS) |
|
AWS 2 Simple Queue Service (SQS) |
|
File |
|
FTP |
|
FTPS |
|
SFTP |
|
HTTP |
|
JMS |
|
Kafka |
|
Kamelets |
|
Metrics |
|
MongoDB |
|
Salesforce |
|
SQL |
|
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).
Name | Package |
---|---|
Avro |
|
Bindy (for CSV) |
|
JSON Jackson |
|
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.
Issue | Description |
---|---|
Seamless upgrades for Camel-K | |
"Missing tests for ""pull secret"" trait properties" | |
Document how to debug Kamelets | |
Cleanup configuration options for Camel K | |
Backport CAMEL-16474 : camel-azure - Blob consumer should extend scheduled endpoint | |
Possibility to specify operator requests and limits | |
[Observability] Provide ootb metrics for Camel K | |
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.
Issue | Description |
---|---|
Create MongoDB kamelet | |
Kamelets support for custom beans and drivers | |
Http sink kamelet into downstream catalogue | |
Backport Streaming upload for Camel AWS2-S3 | |
Provide an example that shows how Camel K integrations can access a JDBC database | |
Provide an example that shows how Camel K integrations can access a JMS broker | |
Error handling in Kamelets | |
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.
Issue | Description |
---|---|
kamel run does not work for remote files on windows | |
Camel 3 failing tests: infinispan | |
OLM manual upgrade | |
"Unrecognized field ""type"" in KameletSpec in YAKS" | |
Change the JMS dependencies to inherit clients from org.amqphub.quarkus:quarkus-qpid-jms | |
Lambda: Using CamelAwsLambdaZipFile header fails at runtime | |
Camel 3 failing tests: mina | |
Camel-K: Can’t mount secrets with binary data | |
"Kamel global operator | |
AMQP Kamelet - unable to find qpid-jms-client dependency | |
Kameletbinding with aws-kinesis-sink throws NPE if not used insert-header-action kamelet | |
Port in SQL Kamelet overriden when used with InMemoryChannel source | |
Catalog.version doesn’t have redhat suffix in build 7 | |
Can’t upgrade from 1.3.3 to 1.4.0 | |
Failed to run Install Kafka in Kamelet-catalog | |
Saleforce kamelet return UNAUTHORIZED instead of CREATED | |
Camel-k-example-knative: Exceptions in cautious-investor pods | |
Azure Storage Queue: Camel startup fails due to null client in 3.9.0 | |
Backport CAMEL-16498 - Camel-Azure-Storage-queue consumer doesn’t work | |
Dependency autoloading is not working correctly with YAML format | |
Kamelets are looked up in github/apache/camel-kamelets in global installation mode with OLM=true | |
Kamel global operator error executing post actions: error during create resource: Deployment | |
Pull secret trait does not work as expected | |
CronJobs written in YAML format don’t work correctly | |
Camel-k-example-saas: loginUrl must be specified with 1.4.0 | |
AWS Kinesis kamelet throws org.apache.camel.NoTypeConversionAvailableException while logging Record | |
Camel-k-example-api: The specified bucket does not exist with 1.4.0 | |
Camel-K: Integration not marked as Failed when Camel is unable to start | |
AWS-Kinesis kamelet NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonKey | |
camel-k-example-event-streaming: sjms2 Error - Unknown parameters=[{ttl=…}] | |
"prometheus trait: the ""enabled"" property automatically inferred causes error if set by the user" | |
Remove artemis sink and source kamelets | |
KameletBinding from KafkaTopic to elasticsearch-index-sink seems to require user parameter | |
camel-k-example-event-streaming open-aq-consumer is failing with 503 on api.openaq.org | |
CamelHttpUri in http-sink kamelet overriden if used with InMemoryChannel | |
| |
kamel run does not work for remote files on windows (cannot read sources) | |
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.
Issue | Description |
---|---|
Camel-K uses a Knative API that has been removed in Serverless 1.17/Knative 0.23 |