Quarkus Trait

The Quarkus trait configures the Quarkus runtime.

It’s enabled by default.

Compiling to a native executable, i.e. when using package-type=native, is only supported for kamelets, as well as YAML and XML integrations. It also requires at least 4GiB of memory, so the Pod running the native build, that is either the operator Pod, or the build Pod (depending on the build strategy configured for the platform), must have enough memory available.

This trait is available in the following profiles: Kubernetes, Knative, OpenShift.

The quarkus trait is a platform trait: disabling it may compromise the platform functionality.

Configuration

Trait properties can be specified when running any integration with the CLI:

$ kamel run --trait quarkus.[key]=[value] --trait quarkus.[key2]=[value2] integration.groovy

The following configuration options are available:

Property Type Description

quarkus.enabled

bool

Can be used to enable or disable a trait. All traits share this common property.

quarkus.package-type

[]./pkg/trait.quarkusPackageType

The Quarkus package types, either fast-jar or native (default fast-jar). In case both fast-jar and native are specified, two IntegrationKit resources are created, with the native kit having precedence over the fast-jar one once ready. The order influences the resolution of the current kit for the integration. The kit corresponding to the first package type will be assigned to the integration in case no existing kit that matches the integration exists.

Supported Camel Components

Camel K only supports the Camel components that are available as Camel Quarkus Extensions out-of-the-box. These extensions are listed in the Camel Quarkus documentation.

Examples

Automatic Rollout Deployment to Native Integration

While the compilation to native executables produces integrations that start faster and consume less memory at runtime, the build process is resources intensive, and takes a longer time than the packaging to traditional Java applications.

In order to combine the best of both worlds, it’s possible to configure the Quarkus trait to run both traditional and native builds in parallel when running an integration, e.g.:

$ kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...

The integration pod will run as soon as the fast-jar build completes, and a rollout deployment to the native image will be triggered, as soon as the native build completes, with no service interruption.