You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/10/04 10:53:05 UTC

[camel-k] 07/09: feat(trait): deprecate quarkus package-type

This is an automated email from the ASF dual-hosted git repository.

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit d8f8104a082c947b357f356c18cad8544051a0bd
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Wed Sep 27 11:52:24 2023 +0200

    feat(trait): deprecate quarkus package-type
    
    This parameter exposed implementations details not user friendly. Enabling mode parameter which accept either `jvm` or `native` seems a better UX.
---
 .../bases/camel.apache.org_integrationkits.yaml    | 30 +++++---
 .../camel.apache.org_integrationplatforms.yaml     | 52 +++++++++----
 .../crd/bases/camel.apache.org_integrations.yaml   | 22 ++++--
 .../bases/camel.apache.org_kameletbindings.yaml    | 38 +++++++---
 config/crd/bases/camel.apache.org_pipes.yaml       | 38 +++++++---
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  | 28 ++++++-
 docs/modules/traits/pages/quarkus.adoc             | 15 +++-
 e2e/builder/build_test.go                          |  2 +-
 e2e/common/traits/builder_test.go                  |  8 +-
 .../catalog_builder_test.go                        | 32 +-------
 e2e/native/native_binding_test.go                  | 21 +-----
 e2e/native/native_test.go                          | 18 ++---
 e2e/native/native_test_support.go                  |  2 +-
 e2e/native/native_with_sources_test.go             | 33 +++-----
 e2e/support/test_support.go                        | 10 ---
 helm/camel-k/crds/crd-integration-kit.yaml         | 30 +++++---
 helm/camel-k/crds/crd-integration-platform.yaml    | 52 +++++++++----
 helm/camel-k/crds/crd-integration.yaml             | 22 ++++--
 helm/camel-k/crds/crd-kamelet-binding.yaml         | 38 +++++++---
 helm/camel-k/crds/crd-pipe.yaml                    | 38 +++++++---
 pkg/apis/camel/v1/integrationkit_types.go          |  4 +-
 pkg/apis/camel/v1/integrationplatform_types.go     |  1 +
 .../camel/v1/integrationplatform_types_support.go  |  8 --
 pkg/apis/camel/v1/trait/quarkus.go                 | 24 ++++--
 pkg/apis/camel/v1/trait/zz_generated.deepcopy.go   |  5 ++
 pkg/builder/image.go                               |  2 +-
 pkg/controller/build/build_monitor.go              |  2 +-
 pkg/controller/build/build_monitor_test.go         |  4 +-
 pkg/controller/integrationkit/build.go             |  2 +-
 pkg/platform/defaults.go                           | 25 ------
 pkg/resources/resources.go                         | 45 ++++-------
 pkg/trait/builder.go                               | 30 ++++++--
 pkg/trait/builder_test.go                          | 28 ++++++-
 pkg/trait/camel_test.go                            |  2 +-
 pkg/trait/quarkus.go                               | 88 +++++++++++++++-------
 pkg/trait/trait_test.go                            |  4 +-
 resources/traits.yaml                              | 20 +++--
 37 files changed, 489 insertions(+), 334 deletions(-)

diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml b/config/crd/bases/camel.apache.org_integrationkits.yaml
index 359ef577c..f40c04244 100644
--- a/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -311,12 +311,8 @@ spec:
                   quarkus:
                     description: 'The Quarkus trait configures the Quarkus runtime.
                       It''s enabled by default. NOTE: 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.'
+                      requires at least 4GiB of memory, so the Pod running the native
+                      build must have enough memory available.'
                     properties:
                       configuration:
                         description: 'Legacy trait configuration parameters. Deprecated:
@@ -327,19 +323,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/config/crd/bases/camel.apache.org_integrationplatforms.yaml b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index 5d3de2436..b11b568ed 100644
--- a/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -97,8 +97,8 @@ spec:
                       base image with further utility softwares
                     type: string
                   buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
+                    description: 'the timeout (in seconds) to use when creating the
+                      build tools container image Deprecated: no longer in use'
                     type: string
                   buildConfiguration:
                     description: the configuration required to build an Integration
@@ -1616,19 +1616,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
@@ -1851,8 +1863,8 @@ spec:
                       base image with further utility softwares
                     type: string
                   buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
+                    description: 'the timeout (in seconds) to use when creating the
+                      build tools container image Deprecated: no longer in use'
                     type: string
                   buildConfiguration:
                     description: the configuration required to build an Integration
@@ -3418,19 +3430,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml
index f7fefbc25..e59cb1c45 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -7533,19 +7533,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/config/crd/bases/camel.apache.org_kameletbindings.yaml b/config/crd/bases/camel.apache.org_kameletbindings.yaml
index 69d9aee3d..abde245c9 100644
--- a/config/crd/bases/camel.apache.org_kameletbindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -7828,20 +7828,34 @@ spec:
                             description: Can be used to enable or disable a trait.
                               All traits share this common property.
                             type: boolean
-                          packageTypes:
-                            description: The Quarkus package types, `fast-jar`, `native-sources`
-                              or `native` (default `fast-jar`). `native` is deprecated.
-                              In case both `fast-jar` and `native` or `native-sources`
+                          mode:
+                            description: 'The Quarkus mode to run: either `jvm` or
+                              `native` (default `jvm`). In case both `jvm` 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.
+                              with the `native` kit having precedence over the `jvm`
+                              one once ready.'
+                            items:
+                              description: QuarkusMode is the type of Quarkus build
+                                packaging.
+                              enum:
+                              - jvm
+                              - native
+                              type: string
+                            type: array
+                          packageTypes:
+                            description: 'The Quarkus package types, `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. Deprecated: use
+                              `mode` instead.'
                             items:
-                              description: QuarkusPackageType is the type of Quarkus
-                                build packaging.
+                              description: 'QuarkusPackageType is the type of Quarkus
+                                build packaging. Deprecated: use `QuarkusMode` instead.'
                               enum:
                               - fast-jar
                               - native-sources
diff --git a/config/crd/bases/camel.apache.org_pipes.yaml b/config/crd/bases/camel.apache.org_pipes.yaml
index 23a287c66..a8a40da19 100644
--- a/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/config/crd/bases/camel.apache.org_pipes.yaml
@@ -7825,20 +7825,34 @@ spec:
                             description: Can be used to enable or disable a trait.
                               All traits share this common property.
                             type: boolean
-                          packageTypes:
-                            description: The Quarkus package types, `fast-jar`, `native-sources`
-                              or `native` (default `fast-jar`). `native` is deprecated.
-                              In case both `fast-jar` and `native` or `native-sources`
+                          mode:
+                            description: 'The Quarkus mode to run: either `jvm` or
+                              `native` (default `jvm`). In case both `jvm` 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.
+                              with the `native` kit having precedence over the `jvm`
+                              one once ready.'
+                            items:
+                              description: QuarkusMode is the type of Quarkus build
+                                packaging.
+                              enum:
+                              - jvm
+                              - native
+                              type: string
+                            type: array
+                          packageTypes:
+                            description: 'The Quarkus package types, `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. Deprecated: use
+                              `mode` instead.'
                             items:
-                              description: QuarkusPackageType is the type of Quarkus
-                                build packaging.
+                              description: 'QuarkusPackageType is the type of Quarkus
+                                build packaging. Deprecated: use `QuarkusMode` instead.'
                               enum:
                               - fast-jar
                               - native-sources
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 6fa1d8f2c..bba0ee6ac 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -2568,7 +2568,7 @@ The Camel trait sets up Camel configuration.
 
 The Quarkus trait configures the Quarkus runtime.
 It's enabled by default.
-NOTE: 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.
+NOTE: Compiling to a native executable, requires at least 4GiB of memory, so the Pod running the native build must have enough memory available.
 
 |`registry` +
 *xref:#_camel_apache_org_v1_trait_RegistryTrait[RegistryTrait]*
@@ -2672,6 +2672,7 @@ the image registry used to push/pull Integration images
 
 
 the timeout (in seconds) to use when creating the build tools container image
+Deprecated: no longer in use
 
 |`timeout` +
 *https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#duration-v1-meta[Kubernetes meta/v1.Duration]*
@@ -7578,6 +7579,16 @@ Automatically configures the platform registry secret on the pod if it is of typ
 
 |===
 
+[#_camel_apache_org_v1_trait_QuarkusMode]
+=== QuarkusMode(`string` alias)
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_trait_QuarkusTrait, QuarkusTrait>>
+
+QuarkusMode is the type of Quarkus build packaging.
+
+
 [#_camel_apache_org_v1_trait_QuarkusPackageType]
 === QuarkusPackageType(`string` alias)
 
@@ -7586,6 +7597,7 @@ Automatically configures the platform registry secret on the pod if it is of typ
 * <<#_camel_apache_org_v1_trait_QuarkusTrait, QuarkusTrait>>
 
 QuarkusPackageType is the type of Quarkus build packaging.
+Deprecated: use `QuarkusMode` instead.
 
 
 [#_camel_apache_org_v1_trait_QuarkusTrait]
@@ -7622,12 +7634,22 @@ Compiling to a native executable, i.e. when using `package-type=native`, require
 |
 
 
-The Quarkus package types, `fast-jar`, `native-sources` or `native` (default `fast-jar`). `native` is deprecated.
-In case both `fast-jar` and `native` or `native-sources` are specified, two `IntegrationKit` resources are created,
+The Quarkus package types, `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.
+Deprecated: use `mode` instead.
+
+|`mode` +
+*xref:#_camel_apache_org_v1_trait_QuarkusMode[[\]QuarkusMode]*
+|
+
+
+The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+In case both `jvm` and `native` are specified, two `IntegrationKit` resources are created,
+with the `native` kit having precedence over the `jvm` one once ready.
 
 
 |===
diff --git a/docs/modules/traits/pages/quarkus.adoc b/docs/modules/traits/pages/quarkus.adoc
index f5014394f..d015deadc 100755
--- a/docs/modules/traits/pages/quarkus.adoc
+++ b/docs/modules/traits/pages/quarkus.adoc
@@ -35,12 +35,19 @@ The following configuration options are available:
 
 | quarkus.package-type
 | []github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait.QuarkusPackageType
-| The Quarkus package types, `fast-jar`, `native-sources` or `native` (default `fast-jar`). `native` is deprecated.
-In case both `fast-jar` and `native` or `native-sources` are specified, two `IntegrationKit` resources are created,
+| The Quarkus package types, `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.
+Deprecated: use `mode` instead.
+
+| quarkus.mode
+| []github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait.QuarkusMode
+| The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+In case both `jvm` and `native` are specified, two `IntegrationKit` resources are created,
+with the `native` kit having precedence over the `jvm` one once ready.
 
 |===
 
@@ -59,6 +66,6 @@ While the compilation to native executables produces integrations that start fas
 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.:
 
 [source,console]
-$ kamel run -t quarkus.package-type=fast-jar -t quarkus.package-type=native ...
+$ kamel run -t quarkus.mode=jvm -t quarkus.mode=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.
+The Integration pod will run as soon as the `hvm` build completes, and a rollout deployment to the `native` image will be triggered, as soon as the `native` build completes, with no service interruption.
diff --git a/e2e/builder/build_test.go b/e2e/builder/build_test.go
index 1b11797db..204fd7d80 100644
--- a/e2e/builder/build_test.go
+++ b/e2e/builder/build_test.go
@@ -310,7 +310,7 @@ func TestKitTimerToLogFullNativeBuild(t *testing.T) {
 			"camel:timer", "camel:log",
 		},
 		traits: []string{
-			"quarkus.package-type=native",
+			"quarkus.mode=native",
 		},
 	}, v1.BuildPhaseSucceeded, v1.IntegrationKitPhaseReady)
 }
diff --git a/e2e/common/traits/builder_test.go b/e2e/common/traits/builder_test.go
index 795b2abd3..6b1419174 100644
--- a/e2e/common/traits/builder_test.go
+++ b/e2e/common/traits/builder_test.go
@@ -123,10 +123,10 @@ func TestBuilderTrait(t *testing.T) {
 		name := "java-resource-config"
 		Expect(KamelRunWithID(operatorID, ns, "files/Java.java",
 			"--name", name,
-			"-t", "builder.request-cpu=500m",
-			"-t", "builder.limit-cpu=1000m",
-			"-t", "builder.request-memory=2Gi",
-			"-t", "builder.limit-memory=3Gi",
+			"-t", "builder.tasks-request-cpu=builder:500m",
+			"-t", "builder.tasks-limit-cpu=builder:1000m",
+			"-t", "builder.tasks-request-memory=builder:2Gi",
+			"-t", "builder.tasks-limit-memory=builder:3Gi",
 			"-t", "builder.strategy=pod",
 		).Execute()).To(Succeed())
 
diff --git a/e2e/commonwithcustominstall/catalog_builder_test.go b/e2e/commonwithcustominstall/catalog_builder_test.go
index 436856c82..bae648049 100644
--- a/e2e/commonwithcustominstall/catalog_builder_test.go
+++ b/e2e/commonwithcustominstall/catalog_builder_test.go
@@ -26,11 +26,9 @@ import (
 	"fmt"
 	"strings"
 	"testing"
-	"time"
 
 	. "github.com/onsi/gomega"
 	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 
 	. "github.com/apache/camel-k/v2/e2e/support"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -63,7 +61,7 @@ func TestCamelCatalogBuilder(t *testing.T) {
 
 			Eventually(CamelCatalog(ns, nonCompatibleCatalogName)).ShouldNot(BeNil())
 			Eventually(CamelCatalogPhase(ns, nonCompatibleCatalogName)).Should(Equal(v1.CamelCatalogPhaseError))
-			Eventually(CamelCatalogCondition(ns, nonCompatibleCatalogName, v1.CamelCatalogConditionReady)().Message).Should(ContainSubstring("missing base image"))
+			Eventually(CamelCatalogCondition(ns, nonCompatibleCatalogName, v1.CamelCatalogConditionReady)().Message).Should(ContainSubstring("Container image tool missing in catalog"))
 
 			Eventually(IntegrationKit(ns, name)).ShouldNot(Equal(""))
 			kitName := IntegrationKit(ns, name)()
@@ -140,32 +138,4 @@ func TestCamelCatalogBuilder(t *testing.T) {
 
 		Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
 	})
-
-	WithNewTestNamespace(t, func(ns string) {
-		operatorID := fmt.Sprintf("camel-k-%s", ns)
-		Expect(KamelInstallWithID(operatorID, ns).Execute()).To(Succeed())
-		Eventually(OperatorPod(ns)).ShouldNot(BeNil())
-		Eventually(Platform(ns)).ShouldNot(BeNil())
-
-		pl := Platform(ns)()
-		// set a very short timeout to simulate the timeout
-		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
-			Duration: 1 * time.Second,
-		}
-		TestClient().Update(TestContext, pl)
-		Eventually(Platform(ns)).ShouldNot(BeNil())
-		Eventually(PlatformBuildCatalogToolTimeout(ns)).Should(Equal(
-			&metav1.Duration{
-				Duration: 1 * time.Second,
-			},
-		))
-
-		Eventually(PlatformConditionStatus(ns, v1.IntegrationPlatformConditionTypeCreated), TestTimeoutShort).
-			Should(Equal(corev1.ConditionTrue))
-		catalogName := fmt.Sprintf("camel-catalog-%s", strings.ToLower(defaults.DefaultRuntimeVersion))
-
-		Eventually(CamelCatalog(ns, catalogName)).ShouldNot(BeNil())
-		Eventually(CamelCatalogPhase(ns, catalogName)).Should(Equal(v1.CamelCatalogPhaseError))
-		Eventually(CamelCatalogCondition(ns, catalogName, v1.CamelCatalogConditionReady)().Message).Should(ContainSubstring("build timeout"))
-	})
 }
diff --git a/e2e/native/native_binding_test.go b/e2e/native/native_binding_test.go
index 56f21f6ba..0f754dffa 100644
--- a/e2e/native/native_binding_test.go
+++ b/e2e/native/native_binding_test.go
@@ -27,9 +27,7 @@ import (
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	. "github.com/onsi/gomega"
 	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"testing"
-	"time"
 )
 
 func TestNativeBinding(t *testing.T) {
@@ -40,30 +38,15 @@ func TestNativeBinding(t *testing.T) {
 			"--maven-cli-option", "-Dquarkus.native.native-image-xmx=6g",
 		).Execute()).To(Succeed())
 		Eventually(PlatformPhase(ns), TestTimeoutMedium).Should(Equal(v1.IntegrationPlatformPhaseReady))
-
-		pl := Platform(ns)()
-		// set a longer timeout than default as for some reason the builder hit the timeout
-		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
-			Duration: 5 * time.Minute,
-		}
-		TestClient().Update(TestContext, pl)
-		Eventually(Platform(ns)).ShouldNot(BeNil())
-		Eventually(PlatformBuildCatalogToolTimeout(ns)).Should(Equal(
-			&metav1.Duration{
-				Duration: 5 * time.Minute,
-			},
-		))
-
 		message := "Magicstring!"
-
 		t.Run("binding with native build", func(t *testing.T) {
 			bindingName := "native-binding"
 			Expect(KamelBindWithID(operatorID, ns,
 				"timer-source",
 				"log-sink",
 				"-p", "source.message="+message,
-				"--annotation", "trait.camel.apache.org/quarkus.package-type=native",
-				"--annotation", "trait.camel.apache.org/builder.limit-memory=6.5Gi",
+				"--annotation", "trait.camel.apache.org/quarkus.mode=native",
+				"--annotation", "trait.camel.apache.org/builder.tasks-limit-memory=quarkus-native:6.5Gi",
 				"--name", bindingName,
 			).Execute()).To(Succeed())
 
diff --git a/e2e/native/native_test.go b/e2e/native/native_test.go
index 279780894..739ddf5ba 100644
--- a/e2e/native/native_test.go
+++ b/e2e/native/native_test.go
@@ -45,8 +45,8 @@ func TestNativeIntegrations(t *testing.T) {
 		t.Run("unsupported integration source language", func(t *testing.T) {
 			name := "unsupported-js"
 			Expect(KamelRunWithID(operatorID, ns, "files/JavaScript.js", "--name", name,
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=6.5Gi",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=6.5Gi",
 			).Execute()).To(Succeed())
 
 			Eventually(IntegrationPhase(ns, name)).Should(Equal(v1.IntegrationPhaseError))
@@ -60,8 +60,8 @@ func TestNativeIntegrations(t *testing.T) {
 		t.Run("xml native support", func(t *testing.T) {
 			name := "xml-native"
 			Expect(KamelRunWithID(operatorID, ns, "files/Xml.xml", "--name", name,
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=6.5Gi",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=6.5Gi",
 			).Execute()).To(Succeed())
 
 			Eventually(IntegrationPodPhase(ns, name), TestTimeoutVeryLong).Should(Equal(corev1.PodRunning))
@@ -81,9 +81,9 @@ func TestNativeIntegrations(t *testing.T) {
 			Expect(DeleteKits(ns)).To(Succeed())
 			name := "yaml-native"
 			Expect(KamelRunWithID(operatorID, ns, "files/yaml.yaml", "--name", name,
-				"-t", "quarkus.package-type=fast-jar",
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=6.5Gi",
+				"-t", "quarkus.mode=fast-jar",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=6.5Gi",
 			).Execute()).To(Succeed())
 
 			// Check that two Kits are created with distinct layout
@@ -134,8 +134,8 @@ func TestNativeIntegrations(t *testing.T) {
 			t.Run("yaml native should not rebuild", func(t *testing.T) {
 				name := "yaml-native-2"
 				Expect(KamelRunWithID(operatorID, ns, "files/yaml2.yaml", "--name", name,
-					"-t", "quarkus.package-type=native",
-					"-t", "builder.limit-memory=6.5Gi",
+					"-t", "quarkus.mode=native",
+					"-t", "builder.tasks-limit-memory=quarkus-native:6.5Gi",
 				).Execute()).To(Succeed())
 
 				// This one should run quickly as it suppose to reuse an IntegrationKit
diff --git a/e2e/native/native_test_support.go b/e2e/native/native_test_support.go
index 0332b871c..576c19d8c 100644
--- a/e2e/native/native_test_support.go
+++ b/e2e/native/native_test_support.go
@@ -33,7 +33,7 @@ import (
 
 var (
 	withFastJarLayout = KitWithLabels(map[string]string{v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutFastJar})
-	withNativeLayout  = KitWithLabels(map[string]string{v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNative})
+	withNativeLayout  = KitWithLabels(map[string]string{v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNativeSources})
 )
 
 func getContainerCommand() func(pod *corev1.Pod) string {
diff --git a/e2e/native/native_with_sources_test.go b/e2e/native/native_with_sources_test.go
index cb3101c84..6478540f5 100644
--- a/e2e/native/native_with_sources_test.go
+++ b/e2e/native/native_with_sources_test.go
@@ -43,24 +43,11 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 		).Execute()).To(Succeed())
 		Eventually(PlatformPhase(ns), TestTimeoutMedium).Should(Equal(v1.IntegrationPlatformPhaseReady))
 
-		pl := Platform(ns)()
-		// set a longer timeout than default as for some reason the builder hit the timeout
-		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
-			Duration: 5 * time.Minute,
-		}
-		TestClient().Update(TestContext, pl)
-		Eventually(Platform(ns)).ShouldNot(BeNil())
-		Eventually(PlatformBuildCatalogToolTimeout(ns)).Should(Equal(
-			&metav1.Duration{
-				Duration: 5 * time.Minute,
-			},
-		))
-
 		t.Run("java native support", func(t *testing.T) {
 			name := "java-native"
 			Expect(KamelRunWithID(operatorID, ns, "files/Java.java", "--name", name,
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=9.5Gi",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=9.5Gi",
 			).Execute()).To(Succeed())
 
 			Eventually(IntegrationPodPhase(ns, name), TestTimeoutVeryLong).Should(Equal(corev1.PodRunning))
@@ -73,8 +60,8 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 			t.Run("java native same should not rebuild", func(t *testing.T) {
 				name := "java-native-clone"
 				Expect(KamelRunWithID(operatorID, ns, "files/Java.java", "--name", name,
-					"-t", "quarkus.package-type=native",
-					"-t", "builder.limit-memory=9.5Gi",
+					"-t", "quarkus.mode=native",
+					"-t", "builder.tasks-limit-memory=quarkus-native:=9.5Gi",
 				).Execute()).To(Succeed())
 
 				// This one should run quickly as it suppose to reuse an IntegrationKit
@@ -90,8 +77,8 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 			t.Run("java native should rebuild", func(t *testing.T) {
 				name := "java-native-2"
 				Expect(KamelRunWithID(operatorID, ns, "files/Java2.java", "--name", name,
-					"-t", "quarkus.package-type=native",
-					"-t", "builder.limit-memory=9.5Gi",
+					"-t", "quarkus.mode=native",
+					"-t", "builder.tasks-limit-memory=quarkus-native:=9.5Gi",
 				).Execute()).To(Succeed())
 
 				Eventually(IntegrationPodPhase(ns, name), TestTimeoutVeryLong).Should(Equal(corev1.PodRunning))
@@ -110,8 +97,8 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 		t.Run("groovy native support", func(t *testing.T) {
 			name := "groovy-native"
 			Expect(KamelRunWithID(operatorID, ns, "files/Groovy.groovy", "--name", name,
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=9.5Gi",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=9.5Gi",
 			).Execute()).To(Succeed())
 
 			Eventually(IntegrationPodPhase(ns, name), TestTimeoutVeryLong).Should(Equal(corev1.PodRunning))
@@ -129,8 +116,8 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 		t.Run("kotlin native support", func(t *testing.T) {
 			name := "kotlin-native"
 			Expect(KamelRunWithID(operatorID, ns, "files/Kotlin.kts", "--name", name,
-				"-t", "quarkus.package-type=native",
-				"-t", "builder.limit-memory=9.5Gi",
+				"-t", "quarkus.mode=native",
+				"-t", "builder.tasks-limit-memory=quarkus-native:=9.5Gi",
 			).Execute()).To(Succeed())
 
 			Eventually(IntegrationPodPhase(ns, name), TestTimeoutVeryLong).Should(Equal(corev1.PodRunning))
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 171ba2014..bbb10228f 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -2019,16 +2019,6 @@ func PlatformProfile(ns string) func() v1.TraitProfile {
 	}
 }
 
-func PlatformBuildCatalogToolTimeout(ns string) func() *metav1.Duration {
-	return func() *metav1.Duration {
-		p := Platform(ns)()
-		if p == nil {
-			return &metav1.Duration{}
-		}
-		return p.Status.Build.BuildCatalogToolTimeout
-	}
-}
-
 func PlatformTimeout(ns string) func() *metav1.Duration {
 	return func() *metav1.Duration {
 		p := Platform(ns)()
diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml
index 359ef577c..f40c04244 100644
--- a/helm/camel-k/crds/crd-integration-kit.yaml
+++ b/helm/camel-k/crds/crd-integration-kit.yaml
@@ -311,12 +311,8 @@ spec:
                   quarkus:
                     description: 'The Quarkus trait configures the Quarkus runtime.
                       It''s enabled by default. NOTE: 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.'
+                      requires at least 4GiB of memory, so the Pod running the native
+                      build must have enough memory available.'
                     properties:
                       configuration:
                         description: 'Legacy trait configuration parameters. Deprecated:
@@ -327,19 +323,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/helm/camel-k/crds/crd-integration-platform.yaml b/helm/camel-k/crds/crd-integration-platform.yaml
index 5d3de2436..b11b568ed 100644
--- a/helm/camel-k/crds/crd-integration-platform.yaml
+++ b/helm/camel-k/crds/crd-integration-platform.yaml
@@ -97,8 +97,8 @@ spec:
                       base image with further utility softwares
                     type: string
                   buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
+                    description: 'the timeout (in seconds) to use when creating the
+                      build tools container image Deprecated: no longer in use'
                     type: string
                   buildConfiguration:
                     description: the configuration required to build an Integration
@@ -1616,19 +1616,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
@@ -1851,8 +1863,8 @@ spec:
                       base image with further utility softwares
                     type: string
                   buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
+                    description: 'the timeout (in seconds) to use when creating the
+                      build tools container image Deprecated: no longer in use'
                     type: string
                   buildConfiguration:
                     description: the configuration required to build an Integration
@@ -3418,19 +3430,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml
index f7fefbc25..e59cb1c45 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -7533,19 +7533,31 @@ spec:
                         description: Can be used to enable or disable a trait. All
                           traits share this common property.
                         type: boolean
+                      mode:
+                        description: 'The Quarkus mode to run: either `jvm` or `native`
+                          (default `jvm`). In case both `jvm` and `native` are specified,
+                          two `IntegrationKit` resources are created, with the `native`
+                          kit having precedence over the `jvm` one once ready.'
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
                       packageTypes:
-                        description: The Quarkus package types, `fast-jar`, `native-sources`
-                          or `native` (default `fast-jar`). `native` is deprecated.
-                          In case both `fast-jar` and `native` or `native-sources`
+                        description: 'The Quarkus package types, `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.
+                          Deprecated: use `mode` instead.'
                         items:
-                          description: QuarkusPackageType is the type of Quarkus build
-                            packaging.
+                          description: 'QuarkusPackageType is the type of Quarkus
+                            build packaging. Deprecated: use `QuarkusMode` instead.'
                           enum:
                           - fast-jar
                           - native-sources
diff --git a/helm/camel-k/crds/crd-kamelet-binding.yaml b/helm/camel-k/crds/crd-kamelet-binding.yaml
index 69d9aee3d..abde245c9 100644
--- a/helm/camel-k/crds/crd-kamelet-binding.yaml
+++ b/helm/camel-k/crds/crd-kamelet-binding.yaml
@@ -7828,20 +7828,34 @@ spec:
                             description: Can be used to enable or disable a trait.
                               All traits share this common property.
                             type: boolean
-                          packageTypes:
-                            description: The Quarkus package types, `fast-jar`, `native-sources`
-                              or `native` (default `fast-jar`). `native` is deprecated.
-                              In case both `fast-jar` and `native` or `native-sources`
+                          mode:
+                            description: 'The Quarkus mode to run: either `jvm` or
+                              `native` (default `jvm`). In case both `jvm` 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.
+                              with the `native` kit having precedence over the `jvm`
+                              one once ready.'
+                            items:
+                              description: QuarkusMode is the type of Quarkus build
+                                packaging.
+                              enum:
+                              - jvm
+                              - native
+                              type: string
+                            type: array
+                          packageTypes:
+                            description: 'The Quarkus package types, `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. Deprecated: use
+                              `mode` instead.'
                             items:
-                              description: QuarkusPackageType is the type of Quarkus
-                                build packaging.
+                              description: 'QuarkusPackageType is the type of Quarkus
+                                build packaging. Deprecated: use `QuarkusMode` instead.'
                               enum:
                               - fast-jar
                               - native-sources
diff --git a/helm/camel-k/crds/crd-pipe.yaml b/helm/camel-k/crds/crd-pipe.yaml
index 23a287c66..a8a40da19 100644
--- a/helm/camel-k/crds/crd-pipe.yaml
+++ b/helm/camel-k/crds/crd-pipe.yaml
@@ -7825,20 +7825,34 @@ spec:
                             description: Can be used to enable or disable a trait.
                               All traits share this common property.
                             type: boolean
-                          packageTypes:
-                            description: The Quarkus package types, `fast-jar`, `native-sources`
-                              or `native` (default `fast-jar`). `native` is deprecated.
-                              In case both `fast-jar` and `native` or `native-sources`
+                          mode:
+                            description: 'The Quarkus mode to run: either `jvm` or
+                              `native` (default `jvm`). In case both `jvm` 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.
+                              with the `native` kit having precedence over the `jvm`
+                              one once ready.'
+                            items:
+                              description: QuarkusMode is the type of Quarkus build
+                                packaging.
+                              enum:
+                              - jvm
+                              - native
+                              type: string
+                            type: array
+                          packageTypes:
+                            description: 'The Quarkus package types, `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. Deprecated: use
+                              `mode` instead.'
                             items:
-                              description: QuarkusPackageType is the type of Quarkus
-                                build packaging.
+                              description: 'QuarkusPackageType is the type of Quarkus
+                                build packaging. Deprecated: use `QuarkusMode` instead.'
                               enum:
                               - fast-jar
                               - native-sources
diff --git a/pkg/apis/camel/v1/integrationkit_types.go b/pkg/apis/camel/v1/integrationkit_types.go
index 561217f31..f5b7ad1d5 100644
--- a/pkg/apis/camel/v1/integrationkit_types.go
+++ b/pkg/apis/camel/v1/integrationkit_types.go
@@ -83,7 +83,7 @@ type IntegrationKitTraits struct {
 	Camel *trait.CamelTrait `property:"camel" json:"camel,omitempty"`
 	// The Quarkus trait configures the Quarkus runtime.
 	// It's enabled by default.
-	// NOTE: 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.
+	// NOTE: Compiling to a native executable, requires at least 4GiB of memory, so the Pod running the native build must have enough memory available.
 	Quarkus *trait.QuarkusTrait `property:"quarkus" json:"quarkus,omitempty"`
 	// The Registry trait sets up Maven to use the Image registry as a Maven repository.
 	Registry *trait.RegistryTrait `property:"registry" json:"registry,omitempty"`
@@ -155,6 +155,8 @@ const (
 	IntegrationKitLayoutFastJar = "fast-jar"
 	// IntegrationKitLayoutNative labels a kit using the Quarkus native packaging.
 	IntegrationKitLayoutNative = "native"
+	// IntegrationKitLayoutNativeSources labels a kit using the Quarkus native-sources packaging.
+	IntegrationKitLayoutNativeSources = "native-sources"
 
 	// IntegrationKitPriorityLabel labels the kit priority.
 	IntegrationKitPriorityLabel = "camel.apache.org/kit.priority"
diff --git a/pkg/apis/camel/v1/integrationplatform_types.go b/pkg/apis/camel/v1/integrationplatform_types.go
index 93c987338..9eeaff083 100644
--- a/pkg/apis/camel/v1/integrationplatform_types.go
+++ b/pkg/apis/camel/v1/integrationplatform_types.go
@@ -125,6 +125,7 @@ type IntegrationPlatformBuildSpec struct {
 	// the image registry used to push/pull Integration images
 	Registry RegistrySpec `json:"registry,omitempty"`
 	// the timeout (in seconds) to use when creating the build tools container image
+	// Deprecated: no longer in use
 	BuildCatalogToolTimeout *metav1.Duration `json:"buildCatalogToolTimeout,omitempty"`
 	// how much time to wait before time out the pipeline process
 	Timeout *metav1.Duration `json:"timeout,omitempty"`
diff --git a/pkg/apis/camel/v1/integrationplatform_types_support.go b/pkg/apis/camel/v1/integrationplatform_types_support.go
index c421bbfbb..fb216a8cd 100644
--- a/pkg/apis/camel/v1/integrationplatform_types_support.go
+++ b/pkg/apis/camel/v1/integrationplatform_types_support.go
@@ -204,14 +204,6 @@ func (b IntegrationPlatformBuildSpec) GetTimeout() metav1.Duration {
 	return *b.Timeout
 }
 
-// GetBuildCatalogToolTimeout returns the specified duration or a default one.
-func (b IntegrationPlatformBuildSpec) GetBuildCatalogToolTimeout() metav1.Duration {
-	if b.BuildCatalogToolTimeout == nil {
-		return metav1.Duration{}
-	}
-	return *b.BuildCatalogToolTimeout
-}
-
 var _ ResourceCondition = IntegrationPlatformCondition{}
 
 // GetConditions --.
diff --git a/pkg/apis/camel/v1/trait/quarkus.go b/pkg/apis/camel/v1/trait/quarkus.go
index 2d5548c1a..538f4e9df 100644
--- a/pkg/apis/camel/v1/trait/quarkus.go
+++ b/pkg/apis/camel/v1/trait/quarkus.go
@@ -28,16 +28,33 @@ package trait
 // +camel-k:trait=quarkus.
 type QuarkusTrait struct {
 	Trait `property:",squash" json:",inline"`
-	// The Quarkus package types, `fast-jar`, `native-sources` or `native` (default `fast-jar`). `native` is deprecated.
-	// In case both `fast-jar` and `native` or `native-sources` are specified, two `IntegrationKit` resources are created,
+	// The Quarkus package types, `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.
+	// Deprecated: use `mode` instead.
 	PackageTypes []QuarkusPackageType `property:"package-type" json:"packageTypes,omitempty"`
+	// The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+	// In case both `jvm` and `native` are specified, two `IntegrationKit` resources are created,
+	// with the `native` kit having precedence over the `jvm` one once ready.
+	Modes []QuarkusMode `property:"mode" json:"mode,omitempty"`
 }
 
+// QuarkusMode is the type of Quarkus build packaging.
+// +kubebuilder:validation:Enum=jvm;native
+type QuarkusMode string
+
+const (
+	// JvmQuarkusMode represents "JVM mode" Quarkus execution.
+	JvmQuarkusMode QuarkusMode = "jvm"
+	// NativeQuarkusMode represents "Native mode" Quarkus execution.
+	NativeQuarkusMode QuarkusMode = "native"
+)
+
 // QuarkusPackageType is the type of Quarkus build packaging.
+// Deprecated: use `QuarkusMode` instead.
 // +kubebuilder:validation:Enum=fast-jar;native-sources;native
 type QuarkusPackageType string
 
@@ -45,8 +62,5 @@ const (
 	// FastJarPackageType represents "fast jar" Quarkus packaging.
 	FastJarPackageType QuarkusPackageType = "fast-jar"
 	// NativePackageType represents "native" Quarkus packaging.
-	// Deprecated: use native-sources instead.
 	NativePackageType QuarkusPackageType = "native"
-	// NativeSourcesPackageType represents "native-sources" Quarkus packaging.
-	NativeSourcesPackageType QuarkusPackageType = "native-sources"
 )
diff --git a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
index 471156af8..10c0db3b9 100644
--- a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
@@ -905,6 +905,11 @@ func (in *QuarkusTrait) DeepCopyInto(out *QuarkusTrait) {
 		*out = make([]QuarkusPackageType, len(*in))
 		copy(*out, *in)
 	}
+	if in.Modes != nil {
+		in, out := &in.Modes, &out.Modes
+		*out = make([]QuarkusMode, len(*in))
+		copy(*out, *in)
+	}
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QuarkusTrait.
diff --git a/pkg/builder/image.go b/pkg/builder/image.go
index 1ea9a4983..cedf72a82 100644
--- a/pkg/builder/image.go
+++ b/pkg/builder/image.go
@@ -181,7 +181,7 @@ func imageContext(ctx *builderContext, selector artifactsSelector) error {
 
 func listPublishedImages(context *builderContext) ([]v1.IntegrationKitStatus, error) {
 	excludeNativeImages, err := labels.NewRequirement(v1.IntegrationKitLayoutLabel, selection.NotEquals, []string{
-		v1.IntegrationKitLayoutNative,
+		v1.IntegrationKitLayoutNativeSources,
 	})
 	if err != nil {
 		return nil, err
diff --git a/pkg/controller/build/build_monitor.go b/pkg/controller/build/build_monitor.go
index 44c1fcff5..2d45b2223 100644
--- a/pkg/controller/build/build_monitor.go
+++ b/pkg/controller/build/build_monitor.go
@@ -64,7 +64,7 @@ func (bm *Monitor) canSchedule(ctx context.Context, c ctrl.Reader, build *v1.Bui
 	layout := build.Labels[v1.IntegrationKitLayoutLabel]
 
 	// Native builds can be run in parallel, as incremental images is not applicable.
-	if layout == v1.IntegrationKitLayoutNative {
+	if layout == v1.IntegrationKitLayoutNativeSources {
 		return true, nil
 	}
 
diff --git a/pkg/controller/build/build_monitor_test.go b/pkg/controller/build/build_monitor_test.go
index 7a0dbec57..9f1c051b9 100644
--- a/pkg/controller/build/build_monitor_test.go
+++ b/pkg/controller/build/build_monitor_test.go
@@ -577,7 +577,7 @@ func newBuild(namespace string, name string, dependencies ...string) *v1.Build {
 }
 
 func newNativeBuild(namespace string, name string, dependencies ...string) *v1.Build {
-	return newBuildWithLayoutInPhase(namespace, name, v1.IntegrationKitLayoutNative, v1.BuildPhasePending, dependencies...)
+	return newBuildWithLayoutInPhase(namespace, name, v1.IntegrationKitLayoutNativeSources, v1.BuildPhasePending, dependencies...)
 }
 
 func newBuildInPhase(namespace string, name string, phase v1.BuildPhase, dependencies ...string) *v1.Build {
@@ -585,7 +585,7 @@ func newBuildInPhase(namespace string, name string, phase v1.BuildPhase, depende
 }
 
 func newNativeBuildInPhase(namespace string, name string, phase v1.BuildPhase, dependencies ...string) *v1.Build {
-	return newBuildWithLayoutInPhase(namespace, name, v1.IntegrationKitLayoutNative, phase, dependencies...)
+	return newBuildWithLayoutInPhase(namespace, name, v1.IntegrationKitLayoutNativeSources, phase, dependencies...)
 }
 
 func newBuildWithLayoutInPhase(namespace string, name string, layout string, phase v1.BuildPhase, dependencies ...string) *v1.Build {
diff --git a/pkg/controller/integrationkit/build.go b/pkg/controller/integrationkit/build.go
index a60ccc6c7..202b10bdf 100644
--- a/pkg/controller/integrationkit/build.go
+++ b/pkg/controller/integrationkit/build.go
@@ -100,7 +100,7 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int
 		}
 
 		timeout := env.Platform.Status.Build.GetTimeout()
-		if layout := labels[v1.IntegrationKitLayoutLabel]; env.Platform.Spec.Build.Timeout == nil && layout == v1.IntegrationKitLayoutNative {
+		if layout := labels[v1.IntegrationKitLayoutLabel]; env.Platform.Spec.Build.Timeout == nil && layout == v1.IntegrationKitLayoutNativeSources {
 			// Increase the timeout to a sensible default
 			timeout = metav1.Duration{
 				Duration: 10 * time.Minute,
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index fe732420b..1a659b181 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -307,12 +307,6 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
 		target.Status.Build.Timeout = source.Status.Build.Timeout
 	}
 
-	// Catalog tools build timeout
-	if target.Status.Build.BuildCatalogToolTimeout == nil {
-		log.Debugf("Integration Platform %s [%s]: setting build camel catalog tool timeout", target.Name, target.Namespace)
-		target.Status.Build.BuildCatalogToolTimeout = source.Status.Build.BuildCatalogToolTimeout
-	}
-
 	if target.Status.Build.MaxRunningBuilds <= 0 {
 		log.Debugf("Integration Platform %s [%s]: setting max running builds", target.Name, target.Namespace)
 		target.Status.Build.MaxRunningBuilds = source.Status.Build.MaxRunningBuilds
@@ -376,25 +370,6 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 		}
 	}
 
-	// Catalog tools build timeout
-	if p.Status.Build.GetBuildCatalogToolTimeout().Duration == 0 {
-		log.Debugf("Integration Platform %s [%s]: setting default build camel catalog tool timeout (2 minutes)", p.Name, p.Namespace)
-		p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
-			Duration: 2 * time.Minute,
-		}
-	} else {
-		d := p.Status.Build.GetBuildCatalogToolTimeout().Duration.Truncate(time.Second)
-
-		if verbose && p.Status.Build.GetBuildCatalogToolTimeout().Duration != d {
-			log.Log.Infof("Build catalog tools timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetBuildCatalogToolTimeout().Duration, d)
-		}
-
-		log.Debugf("Integration Platform %s [%s]: setting build catalog tools timeout", p.Name, p.Namespace)
-		p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
-			Duration: d,
-		}
-	}
-
 	if p.Status.Build.MaxRunningBuilds <= 0 {
 		log.Debugf("Integration Platform %s [%s]: setting max running builds", p.Name, p.Namespace)
 		if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyRoutine {
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index 23f91a87f..f40cb53f1 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -117,9 +117,9 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_builds.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_builds.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 91926,
+			uncompressedSize: 49805,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1b\x37\x96\xe8\x77\xfd\x8a\x53\xf1\x07\xcb\x55\x22\x35\xe3\xc9\xce\x66\x75\x6b\xeb\x96\x56\x4e\x66\x35\x4e\x6c\xaf\x29\x7b\x32\xb5\xb5\x55\x02\xbb\x0f\x49\x84\xdd\x40\x5f\x00\x2d\x9a\xb9\x75\xff\xfb\x2d\xbc\xfa\x21\xb2\xbb\x01\x8a\xf4\xa3\xd2\xf8\x92\x58\x44\x03\xe7\xe0\x71\xde\x38\xe7\x19\x4c\x8e\xd7\xce\x9e\xc1\xcf\x34\x41\x26\x31\x05\xc5\x41\xad\x10\xae\x0b\x92\xac\x10\x66\x7c\xa1\x36\x44\x20\xfc\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1b\x37\x96\xe8\x77\xfd\x8a\x53\xf1\x87\xc8\x55\x22\x95\x38\x33\x73\x73\x75\xeb\xd6\x96\x46\x4e\x32\x1a\xc7\x96\xd7\x94\x3d\x33\xb5\xb5\x55\x02\xbb\x0f\x49\x84\xdd\x40\x2f\x80\x16\xcd\xd9\xda\xff\xbe\x85\x57\x3f\xc8\x7e\x00\x14\x15\x67\x2a\xc4\x17\x5b\x6c\x3c\xce\x39\x38\x38\x2f\x1c\x00\x2f\x60\x72\xbc\x72\xf6\x02\x7e\xa6\x09\x32\x89\x29\x28\x0e\x6a\x85\x70\x5d\x90\x64\x85\x30\xe3\x0b\xb5\x21\x02\xe1\x [...]
 		},
 		"/crd/bases/camel.apache.org_camelcatalogs.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_camelcatalogs.yaml",
@@ -131,30 +131,30 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_integrationkits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrationkits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 23390,
+			uncompressedSize: 21596,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3c\x5d\x73\xdb\x38\x92\xef\xfa\x15\x5d\xf1\x43\xec\x2a\x49\xde\xb9\x9b\x9a\xba\xf2\xce\x4e\x95\xd7\x49\x66\x5d\x71\x12\x9f\xa5\xcc\xdc\xd4\xce\x56\x09\x22\x5b\x12\x46\x24\xc0\x05\x40\xc9\xba\x8f\xff\x7e\x85\x06\xc0\x0f\x89\xa4\x68\x39\xde\x9b\xbd\x8a\x5e\x12\x93\x40\xa3\xd1\xdf\xdd\x40\xf3\x0c\x46\x5f\xee\x37\x38\x83\x3b\x1e\xa1\xd0\x18\x83\x91\x60\x56\x08\xd7\x19\x8b\x56\x08\x13\xb9\x30\x5b\xa6\x10\xde\xc9\x5c\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3c\x5d\x73\xe3\x36\x92\xef\xfa\x15\x5d\xe3\x87\xb1\xab\x24\x79\x73\x97\x4a\x5d\x79\xb3\xa9\xf2\x3a\x93\xac\x6b\x3c\x33\xbe\x91\x27\xb9\xd4\x66\xab\xdc\x22\x5b\x12\x22\x12\x60\x00\x50\xb2\xee\xe3\xbf\x5f\xa1\x01\x50\x94\x44\x52\x1c\x39\xbe\xbd\x87\xe1\xcb\x8c\x49\xa0\xd1\x1f\xe8\x4f\x34\x74\x06\xa3\x3f\xee\x19\x9c\xc1\x9d\x48\x48\x1a\x4a\xc1\x2a\xb0\x0b\x82\xeb\x02\x93\x05\xc1\x44\xcd\xec\x1a\x35\xc1\x0f\xaa\x94\x [...]
 		},
 		"/crd/bases/camel.apache.org_integrationplatforms.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrationplatforms.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 195800,
+			uncompressedSize: 192212,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xfb\x72\xe3\x36\xb2\x38\xfc\x7f\x9e\x02\xe5\xd4\xa9\xf1\x4c\x59\xd2\xcc\xee\xc9\x6e\x8e\xcf\x66\xbf\x9f\xe3\x99\x24\xce\x5c\xec\x63\x7b\x66\x77\x2b\x49\x45\x10\xd9\x92\x10\x93\x00\x17\x00\x65\x2b\xb5\x0f\xff\x15\x1a\x00\x49\x49\x24\x48\x5d\x7c\x49\x22\x4e\x55\x62\x49\x24\xd8\x68\x34\xfa\x86\xbe\x7c\x4e\x7a\xbb\xbb\x3e\xfb\x9c\xbc\x63\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\x93\x8c\x46\x53\x20\x57\x62\xac\x6f\xa9\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdb\x36\xb6\x38\xfc\x7f\x3f\x05\xc6\x9d\x3b\x71\x32\x96\x94\xec\xde\xee\xf6\xfa\xde\xde\xe7\xe7\x3a\x69\xeb\x26\x8e\x7d\x6d\x27\xbb\x3b\x6d\xa7\x82\xc8\x23\x09\x35\x09\x70\x01\x50\xb6\x3a\xfb\xe1\x9f\xc1\x01\x40\x52\x12\x09\x52\x2f\xb6\xb3\x8d\x98\x99\xd6\x92\x48\xf0\x1c\xe0\xe0\xbc\xe1\xbc\x7c\x49\x7a\xbb\xbb\xbe\xf8\x92\xbc\x63\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\x93\x8c\x46\x53\x20\xd7\x62\xac\xef\x [...]
 		},
 		"/crd/bases/camel.apache.org_integrations.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrations.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 516345,
+			uncompressedSize: 514551,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x1d\xff\xa6\x9e\x94\x56\x92\x13\xfd\x62\xcb\x2a\x49\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x44\xc7\x99\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xf4\x7c\xe3\xb3\xcf\xc9\x5b\x9e\x30\xa1\x59\x4a\x8c\x24\x66\xce\xc8\x69\x41\x93\x39\x23\xb7\x72\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x1d\xff\xa6\x9e\x94\x56\x92\x13\xfd\x62\xcb\x2a\x49\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x44\xc7\x99\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xf4\x7c\xe3\xb3\xcf\xc9\x5b\x9e\x30\xa1\x59\x4a\x8c\x24\x66\xce\xc8\x69\x41\x93\x39\x23\xb7\x72\x [...]
 		},
 		"/crd/bases/camel.apache.org_kameletbindings.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kameletbindings.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 597743,
+			uncompressedSize: 595799,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\x1b\x37\xb6\x30\x0a\x7f\xf7\xaf\x40\xc9\xa9\x47\xd2\x8e\x48\xd9\x99\x99\xd4\x8c\xdf\xa9\x9d\xd2\xc8\x72\xa2\x37\xb6\xcc\xb2\x94\xe4\x49\x39\xd9\x09\xd8\x0d\x92\xd8\xea\x06\x7a\x00\x34\x25\xe6\xf8\xfc\xf7\x53\x58\x00\xfa\xc2\x9b\xb0\x9a\x92\x46\x9e\x69\x4c\x55\xc6\xa4\xd8\xab\x71\x59\x58\xf7\xcb\x73\x32\xb8\xbf\xf1\xec\x39\x79\xcb\x13\x26\x34\x4b\x89\x91\xc4\xcc\x18\x39\x29\x68\x32\x63\xe4\x52\x4e\xcc\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\x1b\x37\xb6\x30\x0a\x7f\xf7\xaf\x40\xc9\xa9\x47\xd2\x8e\x48\xd9\x99\x99\xd4\x8c\xdf\xa9\x9d\xd2\xc8\x72\xa2\x37\xb6\xcc\xb2\x94\xe4\x49\x39\xd9\x09\xd8\x0d\x92\xd8\xea\x06\x7a\x00\x34\x25\xe6\xf8\xfc\xf7\x53\x58\x00\xfa\xc2\x9b\xb0\x9a\x92\x46\x9e\x69\x4c\x55\xc6\xa4\xd8\xab\x71\x59\x58\xf7\xcb\x73\x32\xb8\xbf\xf1\xec\x39\x79\xcb\x13\x26\x34\x4b\x89\x91\xc4\xcc\x18\x39\x29\x68\x32\x63\xe4\x52\x4e\xcc\x [...]
 		},
 		"/crd/bases/camel.apache.org_kamelets.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kamelets.yaml",
@@ -166,26 +166,14 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_pipes.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_pipes.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 565005,
+			uncompressedSize: 563061,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\xb2\x53\x47\xd2\x0e\x49\xd9\x99\x99\xd4\x1e\xff\xa6\x4e\x4a\x5b\x96\x13\xfd\x62\xcb\x2c\x4b\x49\x4e\xca\xc9\x4e\xc0\x6e\x90\xc4\x51\x37\xd0\x1b\x40\x53\x62\xae\xef\x77\xbf\x85\x05\xa0\x1f\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x3c\x27\xc3\xfb\x1b\x5f\x3c\x27\x6f\x79\xc2\x84\x66\x29\x31\x92\x98\x39\x23\x27\x05\x4d\xe6\x8c\x5c\xca\xa9\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\xb2\x53\x47\xd2\x0e\x49\xd9\x99\x99\xd4\x1e\xff\xa6\x4e\x4a\x5b\x96\x13\xfd\x62\xcb\x2c\x4b\x49\x4e\xca\xc9\x4e\xc0\x6e\x90\xc4\x51\x37\xd0\x1b\x40\x53\x62\xae\xef\x77\xbf\x85\x05\xa0\x1f\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x3c\x27\xc3\xfb\x1b\x5f\x3c\x27\x6f\x79\xc2\x84\x66\x29\x31\x92\x98\x39\x23\x27\x05\x4d\xe6\x8c\x5c\xca\xa9\x [...]
 		},
 		"/manager": &vfsgen۰DirInfo{
 			name:    "manager",
 			modTime: time.Time{},
 		},
-		"/manager/bundle": &vfsgen۰DirInfo{
-			name:    "bundle",
-			modTime: time.Time{},
-		},
-		"/manager/bundle/manifests": &vfsgen۰DirInfo{
-			name:    "manifests",
-			modTime: time.Time{},
-		},
-		"/manager/bundle/metadata": &vfsgen۰DirInfo{
-			name:    "metadata",
-			modTime: time.Time{},
-		},
 		"/manager/operator-deployment.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "operator-deployment.yaml",
 			modTime:          time.Time{},
@@ -637,9 +625,9 @@ var assets = func() http.FileSystem {
 		"/traits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "traits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 69520,
+			uncompressedSize: 68516,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\xb9\x91\xe0\xef\xfe\x2b\xf0\xb4\xb7\x4f\x92\x8f\x1f\xf2\x64\x93\x9d\xd5\xc6\xd9\xd3\x78\x3c\x89\x32\xfe\xd0\x59\x9a\xc9\xe6\xf9\xfc\x42\xb0\x1b\x24\x61\x36\x81\x0e\x80\x96\xcc\xb9\xdc\xff\x7e\x0f\x55\x85\x8f\x6e\x36\x45\xca\x96\x66\xa3\xcd\x24\xef\x8d\x45\xb2\xbb\x50\x28\x14\x0a\x85\xfa\x74\x86\x4b\x67\x4f\x9f\x0c\x99\xe2\x2b\x71\xca\x7e\x65\x0b\x5e\x89\x27\x8c\xd5\x15\x77\x33\x6d\x56\xa7\x6c\xc6\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\xb9\x91\xe0\xef\xfe\x2b\xf0\xb4\xb7\x4f\x92\x8f\x1f\xf2\x64\x93\x9d\xd5\xc6\xd9\xd3\x78\x3c\x89\x32\xfe\xd0\x59\x9a\xc9\xe6\xf9\xfc\x42\xb0\x1b\x24\x61\x36\x81\x0e\x80\x96\xcc\xb9\xdc\xff\x7e\x0f\x55\x85\x8f\x6e\x36\x45\xca\x96\x66\xa3\xcd\x24\xef\x8d\x45\xb2\xbb\x50\x28\x14\x0a\x85\xfa\x74\x86\x4b\x67\x4f\x9f\x0c\x99\xe2\x2b\x71\xca\x7e\x65\x0b\x5e\x89\x27\x8c\xd5\x15\x77\x33\x6d\x56\xa7\x6c\xc6\x [...]
 		},
 	}
 	fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
@@ -684,7 +672,6 @@ var assets = func() http.FileSystem {
 		fs["/crd/bases/camel.apache.org_pipes.yaml"].(os.FileInfo),
 	}
 	fs["/manager"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
-		fs["/manager/bundle"].(os.FileInfo),
 		fs["/manager/operator-deployment.yaml"].(os.FileInfo),
 		fs["/manager/operator-service-account.yaml"].(os.FileInfo),
 		fs["/manager/patch-image-pull-policy-always.yaml"].(os.FileInfo),
@@ -696,10 +683,6 @@ var assets = func() http.FileSystem {
 		fs["/manager/patch-toleration.yaml"].(os.FileInfo),
 		fs["/manager/patch-watch-namespace-global.yaml"].(os.FileInfo),
 	}
-	fs["/manager/bundle"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
-		fs["/manager/bundle/manifests"].(os.FileInfo),
-		fs["/manager/bundle/metadata"].(os.FileInfo),
-	}
 	fs["/prometheus"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
 		fs["/prometheus/operator-pod-monitor.yaml"].(os.FileInfo),
 		fs["/prometheus/operator-prometheus-rule.yaml"].(os.FileInfo),
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index e11bd7339..c7cd7c7a7 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -68,6 +68,8 @@ func (t *builderTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
+	t.adaptDeprecatedFields()
+
 	if e.IntegrationKitInPhase(v1.IntegrationKitPhaseBuildSubmitted) {
 		if trait := e.Catalog.GetTrait(quarkusTraitID); trait != nil {
 			quarkus, ok := trait.(*quarkusTrait)
@@ -77,17 +79,16 @@ func (t *builderTrait) Configure(e *Environment) (bool, error) {
 				return false, err
 			}
 			if ok && pointer.BoolDeref(quarkus.Enabled, true) && (isNativeIntegration || isNativeKit) {
+				nativeArgsCd := filepath.Join("maven", "target", "native-sources")
+				command := "cd " + nativeArgsCd + " && echo NativeImage version is $(native-image --version) && echo GraalVM expected version is $(cat graalvm.version) && echo WARN: Make sure they are compatible, otherwise the native compilation may results in error && native-image $(cat native-image.args)"
+				// it should be performed as the last custom task
+				t.Tasks = append(t.Tasks, fmt.Sprintf(`quarkus-native;%s;/bin/bash -c "%s"`, e.CamelCatalog.GetQuarkusToolingImage(), command))
 				// Force the build to run in a separate Pod and strictly sequential
 				t.L.Info("This is a Quarkus native build: setting build configuration with build Pod strategy, and native container with 1 CPU core and 4 GiB memory. Make sure your cluster can handle it.")
 				t.Strategy = string(v1.BuildStrategyPod)
 				t.OrderStrategy = string(v1.BuildOrderStrategySequential)
 				t.TasksRequestCPU = append(t.TasksRequestCPU, "quarkus-native:1000m")
 				t.TasksRequestMemory = append(t.TasksRequestMemory, "quarkus-native:4Gi")
-
-				nativeArgsCd := filepath.Join("maven", "target", "native-sources")
-				command := "cd " + nativeArgsCd + " && echo NativeImage version is $(native-image --version) && echo GraalVM expected version is $(cat graalvm.version) && echo WARN: Make sure they are compatible, otherwise the native compilation may results in error && native-image $(cat native-image.args)"
-				// it should be performed as the last custom task
-				t.Tasks = append(t.Tasks, fmt.Sprintf(`quarkus-native;%s;/bin/bash -c "%s"`, e.CamelCatalog.GetQuarkusToolingImage(), command))
 			}
 		}
 
@@ -97,6 +98,25 @@ func (t *builderTrait) Configure(e *Environment) (bool, error) {
 	return false, nil
 }
 
+func (t *builderTrait) adaptDeprecatedFields() {
+	if t.RequestCPU != "" {
+		t.L.Info("The request-cpu parameter is deprecated and may be removed in future releases. Make sure to use tasks-request-cpu parameter instead.")
+		t.TasksRequestCPU = append(t.TasksRequestCPU, fmt.Sprintf("builder:%s", t.RequestCPU))
+	}
+	if t.LimitCPU != "" {
+		t.L.Info("The limit-cpu parameter is deprecated and may be removed in future releases. Make sure to use tasks-limit-cpu parameter instead.")
+		t.TasksLimitCPU = append(t.TasksLimitCPU, fmt.Sprintf("builder:%s", t.LimitCPU))
+	}
+	if t.RequestMemory != "" {
+		t.L.Info("The request-memory parameter is deprecated and may be removed in future releases. Make sure to use tasks-request-memory parameter instead.")
+		t.TasksRequestMemory = append(t.TasksRequestMemory, fmt.Sprintf("builder:%s", t.RequestMemory))
+	}
+	if t.LimitMemory != "" {
+		t.L.Info("The limit-memory parameter is deprecated and may be removed in future releases. Make sure to use tasks-limit-memory parameter instead.")
+		t.TasksLimitMemory = append(t.TasksLimitMemory, fmt.Sprintf("builder:%s", t.LimitMemory))
+	}
+}
+
 func (t *builderTrait) Apply(e *Environment) error {
 	// local pipeline tasks
 	var pipelineTasks []v1.Task
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 79f47bd86..0c060177b 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -360,10 +360,10 @@ func TestBuilderCustomTasksScript(t *testing.T) {
 
 func TestBuilderCustomTasksConfiguration(t *testing.T) {
 	builderTrait := createNominalBuilderTraitTest()
-	builderTrait.TasksRequestCPU = append(builderTrait.TasksLimitCPU, "builder:1000m")
+	builderTrait.TasksRequestCPU = append(builderTrait.TasksRequestCPU, "builder:1000m")
 	builderTrait.TasksLimitCPU = append(builderTrait.TasksLimitCPU, "custom1:500m")
-	builderTrait.TasksRequestMemory = append(builderTrait.TasksLimitCPU, "package:8Gi")
-	builderTrait.TasksLimitMemory = append(builderTrait.TasksLimitCPU, "spectrum:4Gi")
+	builderTrait.TasksRequestMemory = append(builderTrait.TasksRequestMemory, "package:8Gi")
+	builderTrait.TasksLimitMemory = append(builderTrait.TasksLimitMemory, "spectrum:4Gi")
 
 	tasksConf, err := builderTrait.parseTasksConf()
 
@@ -411,3 +411,25 @@ func TestUserTaskMultiCommands(t *testing.T) {
 	assert.Equal(t, "cat /path/to/a/resource", podCommands[0])
 	assert.Equal(t, "echo ciao", podCommands[1])
 }
+
+func TestBuilderDeprecatedParams(t *testing.T) {
+	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyRoutine)
+	builderTrait := createNominalBuilderTraitTest()
+	builderTrait.LimitCPU = "100m"
+	builderTrait.RequestCPU = "100m"
+	builderTrait.LimitMemory = "100Mi"
+	builderTrait.RequestMemory = "100Mi"
+
+	active, err := builderTrait.Configure(env)
+
+	assert.Nil(t, err)
+	assert.True(t, active)
+	assert.Len(t, builderTrait.TasksLimitCPU, 1)
+	assert.Len(t, builderTrait.TasksRequestCPU, 1)
+	assert.Len(t, builderTrait.TasksLimitMemory, 1)
+	assert.Len(t, builderTrait.TasksRequestMemory, 1)
+	assert.Equal(t, "builder:100m", builderTrait.TasksLimitCPU[0])
+	assert.Equal(t, "builder:100m", builderTrait.TasksRequestCPU[0])
+	assert.Equal(t, "builder:100Mi", builderTrait.TasksLimitMemory[0])
+	assert.Equal(t, "builder:100Mi", builderTrait.TasksRequestMemory[0])
+}
diff --git a/pkg/trait/camel_test.go b/pkg/trait/camel_test.go
index 5d035ad78..1cde2b90a 100644
--- a/pkg/trait/camel_test.go
+++ b/pkg/trait/camel_test.go
@@ -154,7 +154,7 @@ func createNominalCamelTest(withSources bool) (*camelTrait, *Environment) {
 		IntegrationKit: &v1.IntegrationKit{
 			ObjectMeta: metav1.ObjectMeta{
 				Labels: map[string]string{
-					v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNative,
+					v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNativeSources,
 				},
 				Namespace: "namespace",
 			},
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index 9bec0c22a..1db7f6f16 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -39,10 +39,16 @@ const (
 	quarkusTraitID = "quarkus"
 )
 
-var kitPriority = map[traitv1.QuarkusPackageType]string{
-	traitv1.FastJarPackageType:       "1000",
-	traitv1.NativeSourcesPackageType: "2000",
-	traitv1.NativePackageType:        "2100",
+type quarkusPackageType string
+
+const (
+	fastJarPackageType       quarkusPackageType = "fast-jar"
+	nativeSourcesPackageType quarkusPackageType = "native-sources"
+)
+
+var kitPriority = map[quarkusPackageType]string{
+	fastJarPackageType:       "1000",
+	nativeSourcesPackageType: "2000",
 }
 
 type quarkusTrait struct {
@@ -124,15 +130,15 @@ func (t *quarkusTrait) Matches(trait Trait) bool {
 		return false
 	}
 
-	if len(t.PackageTypes) == 0 && len(qt.PackageTypes) != 0 && !containsPackageType(qt.PackageTypes, traitv1.FastJarPackageType) {
+	if len(t.Modes) == 0 && len(qt.Modes) != 0 && !qt.containsMode(traitv1.JvmQuarkusMode) {
 		return false
 	}
 
-	for _, pt := range t.PackageTypes {
-		if pt == traitv1.FastJarPackageType && len(qt.PackageTypes) == 0 {
+	for _, md := range t.Modes {
+		if md == traitv1.JvmQuarkusMode && len(qt.Modes) == 0 {
 			continue
 		}
-		if containsPackageType(qt.PackageTypes, pt) {
+		if qt.containsMode(md) {
 			continue
 		}
 		return false
@@ -146,12 +152,29 @@ func (t *quarkusTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
+	t.adaptDeprecatedFields()
+
 	return e.IntegrationInPhase(v1.IntegrationPhaseBuildingKit) ||
 			e.IntegrationKitInPhase(v1.IntegrationKitPhaseBuildSubmitted) ||
 			e.IntegrationKitInPhase(v1.IntegrationKitPhaseReady) && e.IntegrationInRunningPhases(),
 		nil
 }
 
+func (t *quarkusTrait) adaptDeprecatedFields() {
+	if t.PackageTypes != nil {
+		t.L.Info("The package-type parameter is deprecated and may be removed in future releases. Make sure to use mode parameter instead.")
+		for _, pt := range t.PackageTypes {
+			if pt == traitv1.NativePackageType {
+				t.Modes = append(t.Modes, traitv1.NativeQuarkusMode)
+				continue
+			}
+			if pt == traitv1.FastJarPackageType {
+				t.Modes = append(t.Modes, traitv1.JvmQuarkusMode)
+			}
+		}
+	}
+}
+
 func (t *quarkusTrait) Apply(e *Environment) error {
 	if e.IntegrationInPhase(v1.IntegrationPhaseBuildingKit) {
 		t.applyWhileBuildingKit(e)
@@ -175,7 +198,7 @@ func (t *quarkusTrait) Apply(e *Environment) error {
 }
 
 func (t *quarkusTrait) applyWhileBuildingKit(e *Environment) {
-	if containsPackageType(t.PackageTypes, traitv1.NativePackageType) {
+	if t.containsMode(traitv1.NativeQuarkusMode) {
 		// Native compilation is only supported for a subset of languages,
 		// so let's check for compatibility, and fail-fast the Integration,
 		// to save compute resources and user time.
@@ -185,23 +208,21 @@ func (t *quarkusTrait) applyWhileBuildingKit(e *Environment) {
 		}
 	}
 
-	switch len(t.PackageTypes) {
+	switch len(t.Modes) {
 	case 0:
-		kit := t.newIntegrationKit(e, traitv1.FastJarPackageType)
+		// Default behavior
+		kit := t.newIntegrationKit(e, fastJarPackageType)
 		e.IntegrationKits = append(e.IntegrationKits, *kit)
-
 	case 1:
-		kit := t.newIntegrationKit(e, t.PackageTypes[0])
+		kit := t.newIntegrationKit(e, packageType(t.Modes[0]))
 		e.IntegrationKits = append(e.IntegrationKits, *kit)
-
 	default:
-		for _, pt := range t.PackageTypes {
-			packageType := pt
-			kit := t.newIntegrationKit(e, packageType)
+		for _, md := range t.Modes {
+			kit := t.newIntegrationKit(e, packageType(md))
 			if kit.Spec.Traits.Quarkus == nil {
 				kit.Spec.Traits.Quarkus = &traitv1.QuarkusTrait{}
 			}
-			kit.Spec.Traits.Quarkus.PackageTypes = []traitv1.QuarkusPackageType{packageType}
+			kit.Spec.Traits.Quarkus.Modes = []traitv1.QuarkusMode{md}
 			e.IntegrationKits = append(e.IntegrationKits, *kit)
 		}
 	}
@@ -225,7 +246,7 @@ func (t *quarkusTrait) validateNativeSupport(e *Environment) bool {
 	return true
 }
 
-func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType traitv1.QuarkusPackageType) *v1.IntegrationKit {
+func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType quarkusPackageType) *v1.IntegrationKit {
 	integration := e.Integration
 	kit := v1.NewIntegrationKit(integration.GetIntegrationKitNamespace(e.Platform), fmt.Sprintf("kit-%s", xid.New()))
 
@@ -262,7 +283,7 @@ func (t *quarkusTrait) newIntegrationKit(e *Environment, packageType traitv1.Qua
 		Traits:       propagateKitTraits(e),
 	}
 
-	if packageType == traitv1.NativePackageType || packageType == traitv1.NativeSourcesPackageType {
+	if packageType == nativeSourcesPackageType {
 		kit.Spec.Sources = propagateSourcesRequiredAtBuildTime(e)
 	}
 	return kit
@@ -321,7 +342,7 @@ func (t *quarkusTrait) applyWhenBuildSubmitted(e *Environment) error {
 	}
 
 	if native {
-		buildTask.Maven.Properties["quarkus.package.type"] = string(traitv1.NativeSourcesPackageType)
+		buildTask.Maven.Properties["quarkus.package.type"] = string(nativeSourcesPackageType)
 		if len(e.IntegrationKit.Spec.Sources) > 0 {
 			buildTask.Sources = e.IntegrationKit.Spec.Sources
 			buildSteps = append(buildSteps, builder.Quarkus.PrepareProjectWithSources)
@@ -331,7 +352,7 @@ func (t *quarkusTrait) applyWhenBuildSubmitted(e *Environment) error {
 		packageSteps = append(packageSteps, builder.Image.ExecutableDockerfile)
 	} else {
 		// Default, if nothing is specified
-		buildTask.Maven.Properties["quarkus.package.type"] = string(traitv1.FastJarPackageType)
+		buildTask.Maven.Properties["quarkus.package.type"] = string(fastJarPackageType)
 		packageSteps = append(packageSteps, builder.Quarkus.ComputeQuarkusDependencies)
 		// The LoadCamelQuarkusCatalog is required to have catalog information available by the builder
 		packageSteps = append(packageSteps, builder.Quarkus.LoadCamelQuarkusCatalog)
@@ -355,11 +376,11 @@ func (t *quarkusTrait) applyWhenBuildSubmitted(e *Environment) error {
 }
 
 func (t *quarkusTrait) isNativeKit(e *Environment) (bool, error) {
-	switch types := t.PackageTypes; len(types) {
+	switch modes := t.Modes; len(modes) {
 	case 0:
 		return false, nil
 	case 1:
-		return types[0] == traitv1.NativePackageType || types[0] == traitv1.NativeSourcesPackageType, nil
+		return modes[0] == traitv1.NativeQuarkusMode, nil
 	default:
 		return false, fmt.Errorf("kit %q has more than one package type", e.IntegrationKit.Name)
 	}
@@ -381,7 +402,7 @@ func (t *quarkusTrait) applyWhenKitReady(e *Environment) error {
 
 func (t *quarkusTrait) isNativeIntegration(e *Environment) bool {
 	// The current IntegrationKit determines the Integration runtime type
-	return e.IntegrationKit.Labels[v1.IntegrationKitLayoutLabel] == v1.IntegrationKitLayoutNative
+	return e.IntegrationKit.Labels[v1.IntegrationKitLayoutLabel] == v1.IntegrationKitLayoutNativeSources
 }
 
 // Indicates whether the given source code is embedded into the final binary.
@@ -395,15 +416,26 @@ func (t *quarkusTrait) isEmbedded(e *Environment, source v1.SourceSpec) bool {
 	return false
 }
 
-func containsPackageType(types []traitv1.QuarkusPackageType, t traitv1.QuarkusPackageType) bool {
-	for _, ti := range types {
-		if t == ti {
+func (t *quarkusTrait) containsMode(m traitv1.QuarkusMode) bool {
+	for _, mode := range t.Modes {
+		if mode == m {
 			return true
 		}
 	}
 	return false
 }
 
+func packageType(mode traitv1.QuarkusMode) quarkusPackageType {
+	if mode == traitv1.NativeQuarkusMode {
+		return nativeSourcesPackageType
+	}
+	if mode == traitv1.JvmQuarkusMode {
+		return fastJarPackageType
+	}
+
+	return ""
+}
+
 // Indicates whether the given source file is required at build time for native compilation.
 func sourcesRequiredAtBuildTime(e *Environment, source v1.SourceSpec) bool {
 	settings := getLanguageSettings(e, source.InferLanguage())
diff --git a/pkg/trait/trait_test.go b/pkg/trait/trait_test.go
index df38dc472..edefb8586 100644
--- a/pkg/trait/trait_test.go
+++ b/pkg/trait/trait_test.go
@@ -318,7 +318,7 @@ func TestConfigureVolumesAndMountsSourcesInNativeMode(t *testing.T) {
 	traitList := make([]Trait, 0, len(FactoryList))
 	trait, ok := newQuarkusTrait().(*quarkusTrait)
 	assert.True(t, ok, "A Quarkus trait was expected")
-	trait.PackageTypes = []traitv1.QuarkusPackageType{traitv1.NativePackageType}
+	trait.Modes = []traitv1.QuarkusMode{traitv1.NativeQuarkusMode}
 	traitList = append(traitList, trait)
 	env := Environment{
 		Resources: kubernetes.NewCollection(),
@@ -368,7 +368,7 @@ func TestConfigureVolumesAndMountsSourcesInNativeMode(t *testing.T) {
 		IntegrationKit: &v1.IntegrationKit{
 			ObjectMeta: metav1.ObjectMeta{
 				Labels: map[string]string{
-					v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNative,
+					v1.IntegrationKitLayoutLabel: v1.IntegrationKitLayoutNativeSources,
 				},
 				Namespace: "ns",
 			},
diff --git a/resources/traits.yaml b/resources/traits.yaml
index 5919692f0..2f2a340ce 100755
--- a/resources/traits.yaml
+++ b/resources/traits.yaml
@@ -1331,13 +1331,19 @@ traits:
       property.
   - name: package-type
     type: '[]github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait.QuarkusPackageType'
-    description: The Quarkus package types, `fast-jar`, `native-sources` or `native`
-      (default `fast-jar`). `native` is deprecated. In case both `fast-jar` and `native`
-      or `native-sources` 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.
+    description: 'The Quarkus package types, `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. Deprecated: use
+      `mode` instead.'
+  - name: mode
+    type: '[]github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait.QuarkusMode'
+    description: 'The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+      In case both `jvm` and `native` are specified, two `IntegrationKit` resources
+      are created, with the `native` kit having precedence over the `jvm` one once
+      ready.'
 - name: registry
   platform: false
   profiles: