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 2026/06/02 07:41:19 UTC

(camel-k) branch main updated (51aa34e85 -> a78316d86)

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

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


    from 51aa34e85 chore(deps): bump github.com/prometheus/common from 0.67.5 to 0.68.0
     new c0f3c253b feat(ctrl): default plain quarkus runtime
     new a78316d86 chore(ctrl): catalog clone on catalog ctrl

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../workflows/nightly-quarkus-plain-runtime.yml    | 140 ---------------------
 docs/antora.yml                                    |  14 +--
 docs/modules/ROOT/pages/concepts/dependencies.adoc |  13 +-
 .../ROOT/pages/configuration/runtime-version.adoc  |   4 +-
 docs/modules/ROOT/pages/installation/builds.adoc   |   8 +-
 docs/modules/ROOT/pages/running/running.adoc       |  26 ----
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |   4 +-
 docs/modules/traits/pages/camel.adoc               |   4 +-
 e2e/advanced/catalog_builder_test.go               | 114 -----------------
 e2e/advanced/files/timer-kamelet-usage.yaml        |   2 +-
 e2e/install/upgrade/upgrade_test.go                |  22 +++-
 e2e/support/test_support.go                        |   2 +-
 helm/camel-k/crds/camel-k-crds.yaml                |  18 +--
 pkg/apis/camel/v1/trait/camel.go                   |   4 +-
 pkg/builder/quarkus.go                             |   2 +-
 pkg/builder/quarkus_test.go                        |   6 +-
 pkg/controller/catalog/initialize.go               | 122 +++++++++++++++++-
 pkg/controller/integration/build_kit_test.go       |  14 +--
 pkg/controller/integration/build_test.go           |   2 +-
 pkg/controller/integration/monitor_test.go         |   3 +-
 pkg/controller/integrationkit/initialize.go        |   2 +-
 pkg/controller/integrationplatform/create.go       |  13 +-
 pkg/controller/integrationplatform/create_test.go  |  16 +--
 .../integrationplatform/initialize_test.go         |   2 +-
 pkg/controller/integrationplatform/monitor.go      |  98 +--------------
 pkg/controller/integrationplatform/monitor_test.go |  20 +--
 pkg/platform/defaults.go                           |   2 +-
 pkg/platform/env_platform.go                       |  26 ++--
 .../bases/camel.apache.org_integrationkits.yaml    |   2 +-
 .../camel.apache.org_integrationplatforms.yaml     |   4 +-
 .../camel.apache.org_integrationprofiles.yaml      |   4 +-
 .../crd/bases/camel.apache.org_integrations.yaml   |   4 +-
 .../config/crd/bases/camel.apache.org_pipes.yaml   |   4 +-
 pkg/trait/camel.go                                 | 108 ++++++++++++----
 pkg/trait/trait_test.go                            |   4 +-
 pkg/util/camel/camel_runtime.go                    |  21 ++++
 pkg/util/camel/camel_runtime_test.go               |   6 +-
 pkg/util/camel/catalog.go                          |   2 +-
 pkg/util/camel/catalog_test.go                     |   8 +-
 pkg/util/defaults/defaults.go                      |   8 +-
 script/Makefile                                    |  26 ++--
 script/package_maven_artifacts.sh                  |  80 ------------
 script/update_docs.sh                              |  50 --------
 43 files changed, 380 insertions(+), 654 deletions(-)
 delete mode 100644 .github/workflows/nightly-quarkus-plain-runtime.yml
 delete mode 100644 e2e/advanced/catalog_builder_test.go
 delete mode 100755 script/package_maven_artifacts.sh


(camel-k) 02/02: chore(ctrl): catalog clone on catalog ctrl

Posted by pc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a78316d86fab234c69eafbae088f8742c2d6a78a
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Thu May 28 08:41:31 2026 +0200

    chore(ctrl): catalog clone on catalog ctrl
---
 docs/antora.yml                                    |  14 +--
 docs/modules/ROOT/pages/concepts/dependencies.adoc |  13 +--
 .../ROOT/pages/configuration/runtime-version.adoc  |   4 +-
 docs/modules/ROOT/pages/installation/builds.adoc   |   8 +-
 docs/modules/ROOT/pages/running/running.adoc       |  26 -----
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |   4 +-
 docs/modules/traits/pages/camel.adoc               |   4 +-
 e2e/advanced/catalog_builder_test.go               | 114 ---------------------
 e2e/advanced/files/timer-kamelet-usage.yaml        |   2 +-
 e2e/install/upgrade/upgrade_test.go                |  22 +++-
 helm/camel-k/crds/camel-k-crds.yaml                |  18 ++--
 pkg/apis/camel/v1/trait/camel.go                   |   4 +-
 pkg/builder/quarkus.go                             |   2 +-
 pkg/controller/integrationkit/initialize.go        |   2 +-
 pkg/controller/integrationplatform/create.go       |  13 +--
 pkg/controller/integrationplatform/create_test.go  |   1 +
 pkg/controller/integrationplatform/monitor.go      |   3 +
 pkg/controller/integrationplatform/monitor_test.go |   8 +-
 pkg/platform/env_platform.go                       |  26 ++---
 .../bases/camel.apache.org_integrationkits.yaml    |   2 +-
 .../camel.apache.org_integrationplatforms.yaml     |   4 +-
 .../camel.apache.org_integrationprofiles.yaml      |   4 +-
 .../crd/bases/camel.apache.org_integrations.yaml   |   4 +-
 .../config/crd/bases/camel.apache.org_pipes.yaml   |   4 +-
 pkg/trait/camel.go                                 |  95 ++++++++++++-----
 pkg/util/camel/camel_runtime.go                    |  21 ++++
 pkg/util/defaults/defaults.go                      |   2 +-
 script/Makefile                                    |   2 +-
 script/update_docs.sh                              |  50 ---------
 29 files changed, 190 insertions(+), 286 deletions(-)

diff --git a/docs/antora.yml b/docs/antora.yml
index ac0331860..b6d979d23 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -22,19 +22,19 @@ prerelease: true
 display-version: Next (Pre-release)
 nav:
   - modules/ROOT/nav.adoc
-# It should be automatically generated by an action running nightly
 asciidoc:
   attributes:
     requires: "'util=camel-website-util,ck=xref:js/ck.js'"
     prerelease: true
     last-released-version: 2.10.0
     camel-k-runtime-version: 3.15.3
-    camel-api-versions: camel.apache.org/v1 camel.apache.org/v1alpha1 # from Makefile BUNDLE_CAMEL_APIS
-    camel-version: 4.8.5
-    camel-docs-version: 4.8.x
-    camel-quarkus-version: 3.15.3
-    camel-quarkus-docs-version: 3.15.x
-    quarkus-version: 3.15.4
+    camel-api-versions: camel.apache.org/v1 # from Makefile BUNDLE_CAMEL_APIS
+    camel-version: 4.18.0
+    camel-docs-version: 4.18.x
+    camel-quarkus-version: 3.33.1
+    camel-quarkus-docs-version: 3.33.x
+    quarkus-version: 3.33.2
+    # The params below should be automatically generated by an action running nightly
     kustomize-version: 5.7.1
     kubernetes-api-version: 0.36.0
     operator-fwk-api-version: 0.42.0
diff --git a/docs/modules/ROOT/pages/concepts/dependencies.adoc b/docs/modules/ROOT/pages/concepts/dependencies.adoc
index 61ad44ede..e263b8620 100644
--- a/docs/modules/ROOT/pages/concepts/dependencies.adoc
+++ b/docs/modules/ROOT/pages/concepts/dependencies.adoc
@@ -1,24 +1,21 @@
 = Camel dependencies matrix
 
-Camel K was originally equipped with a dedicated runtime known as Camel K Runtime. This is a lightweight layer on top of Camel Quarkus. However, you can directly run plain regular Camel Quarkus runtime applications as well. This will become the standard only from version 3.x onward in order to avoid breaking backward compatibility. In the while you're strongly encouraged to use `plain-quarkus` Camel runtime configuration to ease any future 3.x migration.
-
-NOTE: you can use any available Camel Quarkus runtime version. Alternatively you can also build any other Camel runtimes building from a Git hosted repository.
-
 [caption=]
 .Camel dependencies matrix
-[width="100%",cols="4,2,2,2,2,2,3",options="header"]
+[width="100%",cols="4,2,2,2,2,3",options="header"]
 |===
 |Camel K Version
 |Last release
-|(Default) Camel K Runtime
+|Default Quarkus Platform
 |Camel Quarkus
 |Camel
-|Quarkus
 |Branch
 |===
 
 //cannot use top level index.adoc as the page with the query is always omitted.
-indexTable::[version="*",relative="running/running.adoc",cellformats="util.ckRef(pageComponentDisplayVersion, pageComponentVersion)|lastReleasedVersion|camelKRuntimeVersion|camelQuarkusVersion|camelVersion|quarkusVersion|ck.branch(pageComponentVersion)", requires={requires},transform=util.sortCompatibilityItems]
+indexTable::[version="*",relative="running/running.adoc",cellformats="util.ckRef(pageComponentDisplayVersion, pageComponentVersion)|lastReleasedVersion|quarkusVersion|camelQuarkusVersion|camelVersion|ck.branch(pageComponentVersion)", requires={requires},transform=util.sortCompatibilityItems]
+
+NOTE: you can use any available Camel Quarkus runtime version. Alternatively you can also build any other Camel runtimes building from a Git hosted repository.
 
 == Other APIs version matrix
 
diff --git a/docs/modules/ROOT/pages/configuration/runtime-version.adoc b/docs/modules/ROOT/pages/configuration/runtime-version.adoc
index 74fd2ef6b..1d1e87095 100644
--- a/docs/modules/ROOT/pages/configuration/runtime-version.adoc
+++ b/docs/modules/ROOT/pages/configuration/runtime-version.adoc
@@ -16,6 +16,6 @@ This feature requires the dynamic generation of a builder that contains all the
 
 When you are creating a new runtime for which a xref:architecture/cr/camel-catalog.adoc[CamelCatalog] does not yest exist, Camel K Operator is in charge to create such a catalog. Every CamelCatalog may carry the definition of a container image builder which may later be used by the builder `Pod` to build a Camel application which is specific to such a runtime (for instance, when running a Quarkus Native build).
 
-== Pin a runtime version
+== Pin a runtime version and provider
 
-By default each Camel K version uses the runtime version provided in the `BUILD_RUNTIME_VERSION` environment variable configuration. Using the trait will let you pin to a well defined version, avoiding to unintentionally upgrade the runtime of the integrations running when you perform an operator upgrade. See more info in the xref:installation/upgrade.adoc#maintain-runtime-integrations[Camel K upgrade documentation].
+By default each Camel K version uses the runtime version provided in the `BUILD_RUNTIME_PROVIDER` and `BUILD_RUNTIME_VERSION` environment variable configuration. Using the `camel` trait will let you pin to a well defined version, avoiding to unintentionally upgrade the runtime of the integrations running when you perform an operator upgrade. See more info in the xref:installation/upgrade.adoc#maintain-runtime-integrations[Camel K upgrade documentation].
diff --git a/docs/modules/ROOT/pages/installation/builds.adoc b/docs/modules/ROOT/pages/installation/builds.adoc
index 296f465f9..57963f9bd 100644
--- a/docs/modules/ROOT/pages/installation/builds.adoc
+++ b/docs/modules/ROOT/pages/installation/builds.adoc
@@ -11,9 +11,13 @@ Here a quick resume of the parameters you can configure as environment variables
 |===
 | Name | Description | Default
 
+| BUILD_RUNTIME_PROVIDER
+| Provider of the Apache Camel runtime used for builds.
+| `plain-quarkus`
+
 | BUILD_RUNTIME_VERSION
-| Version of the runtime used for builds.
-| The Camel K runtime specified by the Camel K operator version released
+| Version of the Apache Camel runtime used for builds.
+| The default version specified by the Camel K operator version released
 
 | BUILD_TIMEOUT_SECONDS
 | Timeout (in seconds) for a build before it is terminated.
diff --git a/docs/modules/ROOT/pages/running/running.adoc b/docs/modules/ROOT/pages/running/running.adoc
index bf6462856..fea5e083b 100644
--- a/docs/modules/ROOT/pages/running/running.adoc
+++ b/docs/modules/ROOT/pages/running/running.adoc
@@ -92,32 +92,6 @@ spec:
 
 You can see the specification is a lot neater, so, try choosing Yaml DSL whenever it's possible.
 
-== Runtime provider
-
-Camel K was originally equipped with a dedicated runtime known as Camel K Runtime. This is a lightweight layer on top of Camel Quarkus. However, you can directly run plain regular Camel Quarkus runtime applications as well. You will learn the concept of traits later on. For now, just be aware that you can run any Integration setting the plain Quarkus runtime using `camel` trait configuration. Here an example of how that would be:
-
-```yaml
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: my-plain-quarkus-it
-spec:
-  flows:
-  - from:
-      parameters:
-        period: "1000"
-      steps:
-      - setBody:
-          simple: Hello Camel from ${routeId}
-      - log: ${body}
-      uri: timer:yaml
-  traits:
-    camel:
-      runtimeProvider: plain-quarkus
-```
-
-NOTE: we plan to graduate plain Camel Quarkus runtime as default runtime in the future (likely in the next major release). We therefore recommend to use the plain Camel Quarkus runtime in any of your Integrations already.
-
 == Using Kamel CLI
 
 Camel K works very well with any Kubernetes compatible user interface (such as CLI as `kubectl`, `oc` or any other visual tooling). However we do provide a simple CLI that helps you performing most of the Integration works in an easier fashion: it's xref:running/running-cli.adoc[`kamel` CLI].
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 18646c705..b6d710201 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -6748,7 +6748,7 @@ Path to the PEM-encoded CA certificate file to import.
 * <<#_camel_apache_org_v1_IntegrationKitTraits, IntegrationKitTraits>>
 * <<#_camel_apache_org_v1_Traits, Traits>>
 
-The Camel trait can be used to configure versions of Apache Camel K runtime and related libraries, it cannot be disabled.
+The Camel trait can be used to configure versions of Camel runtime and related libraries, it cannot be disabled.
 
 
 [cols="2,2a",options="header"]
@@ -6768,7 +6768,7 @@ string
 |
 
 
-The runtime provider to use for the integration. (Default, Camel K Runtime).
+The runtime provider to use for the integration. (Default, plain Quarkus).
 
 |`runtimeVersion` +
 string
diff --git a/docs/modules/traits/pages/camel.adoc b/docs/modules/traits/pages/camel.adoc
index 1f82067aa..ed6e8a7d8 100755
--- a/docs/modules/traits/pages/camel.adoc
+++ b/docs/modules/traits/pages/camel.adoc
@@ -3,7 +3,7 @@
 // Start of autogenerated code - DO NOT EDIT! (badges)
 // End of autogenerated code - DO NOT EDIT! (badges)
 // Start of autogenerated code - DO NOT EDIT! (description)
-The Camel trait can be used to configure versions of Apache Camel K runtime and related libraries, it cannot be disabled.
+The Camel trait can be used to configure versions of Camel runtime and related libraries, it cannot be disabled.
 
 
 This trait is available in the following profiles: **Kubernetes, Knative, OpenShift**.
@@ -31,7 +31,7 @@ The following configuration options are available:
 
 | camel.runtimeProvider
 | string
-| The runtime provider to use for the integration. (Default, Camel K Runtime).
+| The runtime provider to use for the integration. (Default, plain Quarkus).
 
 | camel.runtimeVersion
 | string
diff --git a/e2e/advanced/catalog_builder_test.go b/e2e/advanced/catalog_builder_test.go
deleted file mode 100644
index 2f9329a05..000000000
--- a/e2e/advanced/catalog_builder_test.go
+++ /dev/null
@@ -1,114 +0,0 @@
-//go:build integration
-// +build integration
-
-// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration"
-
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package advanced
-
-import (
-	"context"
-	"strings"
-	"testing"
-
-	. "github.com/onsi/gomega"
-	corev1 "k8s.io/api/core/v1"
-
-	. "github.com/apache/camel-k/v2/e2e/support"
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-)
-
-func TestCamelCatalogBuilder(t *testing.T) {
-	t.Parallel()
-
-	WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) {
-		InstallOperator(t, ctx, g, ns)
-
-		// Run an integration with a catalog not compatible
-		// The operator should create the catalog, but fail on reconciliation as it is not compatible
-		// and the integration should fail as well
-		t.Run("Run catalog not compatible", func(t *testing.T) {
-			name := RandomizedSuffixName("java-1-15")
-			nonCompatibleCatalogName := "camel-catalog-1.15.0"
-			g.Expect(
-				KamelRun(t, ctx, ns, "files/Java.java", "--name", name, "-t", "camel.runtime-version=1.15.0").Execute()).To(Succeed())
-
-			g.Eventually(CamelCatalog(t, ctx, ns, nonCompatibleCatalogName), TestTimeoutMedium).ShouldNot(BeNil())
-			g.Eventually(CamelCatalogPhase(t, ctx, ns, nonCompatibleCatalogName)).Should(Equal(v1.CamelCatalogPhaseError))
-			g.Eventually(CamelCatalogCondition(t, ctx, ns, nonCompatibleCatalogName, v1.CamelCatalogConditionReady)().Message).Should(ContainSubstring("Container image tool missing in catalog"))
-
-			g.Eventually(IntegrationKitName(t, ctx, ns, name)).ShouldNot(Equal(""))
-			kitName := IntegrationKitName(t, ctx, ns, name)()
-			g.Eventually(KitPhase(t, ctx, ns, kitName)).Should(Equal(v1.IntegrationKitPhaseError))
-			g.Eventually(KitCondition(t, ctx, ns, kitName, v1.IntegrationKitConditionCatalogAvailable)().Reason).Should(Equal("Camel Catalog 1.15.0 error"))
-			g.Eventually(IntegrationPhase(t, ctx, ns, name)).Should(Equal(v1.IntegrationPhaseError))
-			g.Eventually(IntegrationCondition(t, ctx, ns, name, v1.IntegrationConditionKitAvailable)().Status).Should(Equal(corev1.ConditionFalse))
-		})
-
-		// Run an integration with a compatible catalog
-		// The operator should create the catalog, reconcile it properly and run the Integration accordingly
-		t.Run("Run catalog compatible", func(t *testing.T) {
-			name := RandomizedSuffixName("java-1-17")
-			compatibleVersion := "1.17.0"
-			compatibleCatalogName := "camel-catalog-" + strings.ToLower(compatibleVersion)
-
-			// First of all we delete the catalog, if by any chance it was created previously
-			g.Expect(DeleteCamelCatalog(t, ctx, ns, compatibleCatalogName)()).Should(BeTrue())
-			g.Eventually(CamelCatalog(t, ctx, ns, compatibleCatalogName)).Should(BeNil())
-
-			g.Expect(
-				KamelRun(t, ctx, ns, "files/Java.java", "--name", name, "-t", "camel.runtime-version="+compatibleVersion).Execute()).To(Succeed())
-
-			g.Eventually(CamelCatalog(t, ctx, ns, compatibleCatalogName)).ShouldNot(BeNil())
-			g.Eventually(CamelCatalogPhase(t, ctx, ns, compatibleCatalogName)).Should(Equal(v1.CamelCatalogPhaseReady))
-			g.Eventually(CamelCatalogCondition(t, ctx, ns, compatibleCatalogName, v1.CamelCatalogConditionReady)().Message).Should(Equal("Container image tool found in catalog"))
-			g.Eventually(IntegrationPodPhase(t, ctx, ns, name), TestTimeoutMedium).Should(Equal(corev1.PodRunning))
-			g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutMedium).
-				Should(Equal(corev1.ConditionTrue))
-			g.Eventually(IntegrationLogs(t, ctx, ns, name), TestTimeoutMedium).Should(ContainSubstring("Magicstring!"))
-		})
-
-		t.Run("Run catalog container exists", func(t *testing.T) {
-			name := RandomizedSuffixName("java")
-			compatibleVersion := "1.17.0"
-			compatibleCatalogName := "camel-catalog-" + strings.ToLower(compatibleVersion)
-
-			// First of all we delete the catalog, if by any chance it was created previously
-			g.Expect(DeleteCamelCatalog(t, ctx, ns, compatibleCatalogName)()).Should(BeTrue())
-			g.Eventually(CamelCatalog(t, ctx, ns, compatibleCatalogName)).Should(BeNil())
-
-			g.Expect(
-				KamelRun(t, ctx, ns, "files/Java.java", "--name", name, "-t", "camel.runtime-version="+compatibleVersion).Execute()).To(Succeed())
-
-			g.Eventually(CamelCatalog(t, ctx, ns, compatibleCatalogName)).ShouldNot(BeNil())
-			g.Eventually(CamelCatalogPhase(t, ctx, ns, compatibleCatalogName)).Should(Equal(v1.CamelCatalogPhaseReady))
-			g.Eventually(CamelCatalogCondition(t, ctx, ns, compatibleCatalogName, v1.CamelCatalogConditionReady)().Message).Should(
-				Equal("Container image tool found in catalog"),
-			)
-
-			g.Eventually(IntegrationKitName(t, ctx, ns, name)).ShouldNot(Equal(""))
-			kitName := IntegrationKitName(t, ctx, ns, name)()
-			g.Eventually(KitPhase(t, ctx, ns, kitName)).Should(Equal(v1.IntegrationKitPhaseReady))
-			g.Eventually(IntegrationPodPhase(t, ctx, ns, name)).Should(Equal(corev1.PodRunning))
-			g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutShort).
-				Should(Equal(corev1.ConditionTrue))
-			g.Eventually(IntegrationLogs(t, ctx, ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
-		})
-	})
-}
diff --git a/e2e/advanced/files/timer-kamelet-usage.yaml b/e2e/advanced/files/timer-kamelet-usage.yaml
index 206ba027b..c5de4322c 100644
--- a/e2e/advanced/files/timer-kamelet-usage.yaml
+++ b/e2e/advanced/files/timer-kamelet-usage.yaml
@@ -16,6 +16,6 @@
 # ---------------------------------------------------------------------------
 
 - from:
-    uri: "kamelet:my-own-timer-source?message=Hello+world"
+    uri: "kamelet:my-own-timer-source?message=Hello world"
     steps:
       - to: "log:info?showAll=false"
diff --git a/e2e/install/upgrade/upgrade_test.go b/e2e/install/upgrade/upgrade_test.go
index e924f77e2..24c2b1b80 100644
--- a/e2e/install/upgrade/upgrade_test.go
+++ b/e2e/install/upgrade/upgrade_test.go
@@ -37,6 +37,7 @@ import (
 	. "github.com/apache/camel-k/v2/e2e/support"
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/v2/pkg/util/defaults"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 func TestUpgrade(t *testing.T) {
@@ -81,7 +82,7 @@ func TestUpgrade(t *testing.T) {
 		installPrevCmd.Dir = lastVersionDir
 		ExpectExecSucceed(t, g, installPrevCmd)
 
-		// TODO: In 2.11 we should move to this one instead
+		// TODO: In 2.12 we should move to this one instead
 		//
 		// kustomizeCmd := exec.Command(
 		// 	"kubectl",
@@ -142,6 +143,11 @@ func TestUpgrade(t *testing.T) {
 			// Check the operator pod is running
 			g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning))
 
+			// TODO: In 2.12 we should remove the IntegrationPlatform removal
+			// which was still default in 2.10 and installed and it is required
+			// for this test to complete. Also remove the DeleteIntegrationPlatform func
+			g.Expect(DeleteIntegrationPlatform(t, ctx, ns, "camel-k")).To(Succeed())
+
 			// Check the Integration hasn't been upgraded
 			g.Consistently(IntegrationVersion(t, ctx, nsIntegration, name), 15*time.Second, 3*time.Second).
 				Should(Equal(lastVersion))
@@ -182,3 +188,17 @@ func TestUpgrade(t *testing.T) {
 		// TODO: we should verify new CRDs installed are the same as the one defined in the source core here
 	})
 }
+
+func DeleteIntegrationPlatform(t *testing.T, ctx context.Context, ns string, name string) error {
+	itp := v1.IntegrationPlatform{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "IntegrationPlatform",
+			APIVersion: v1.SchemeGroupVersion.String(),
+		},
+		ObjectMeta: metav1.ObjectMeta{
+			Namespace: ns,
+			Name:      name,
+		},
+	}
+	return TestClient(t).Delete(ctx, &itp)
+}
diff --git a/helm/camel-k/crds/camel-k-crds.yaml b/helm/camel-k/crds/camel-k-crds.yaml
index 91aa72c72..ad761c78d 100644
--- a/helm/camel-k/crds/camel-k-crds.yaml
+++ b/helm/camel-k/crds/camel-k-crds.yaml
@@ -3084,7 +3084,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -4040,7 +4040,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -6570,7 +6570,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -8994,7 +8994,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -11404,7 +11404,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -20670,7 +20670,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -23041,7 +23041,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -33668,7 +33668,7 @@ spec:
                             type: array
                           runtimeProvider:
                             description: The runtime provider to use for the integration.
-                              (Default, Camel K Runtime).
+                              (Default, plain Quarkus).
                             enum:
                             - quarkus
                             - plain-quarkus
@@ -35963,7 +35963,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/apis/camel/v1/trait/camel.go b/pkg/apis/camel/v1/trait/camel.go
index 08d63d27d..502bef4aa 100644
--- a/pkg/apis/camel/v1/trait/camel.go
+++ b/pkg/apis/camel/v1/trait/camel.go
@@ -17,7 +17,7 @@ limitations under the License.
 
 package trait
 
-// The Camel trait can be used to configure versions of Apache Camel K runtime and related libraries, it cannot be disabled.
+// The Camel trait can be used to configure versions of Camel runtime and related libraries, it cannot be disabled.
 //
 // +camel-k:trait=camel.
 //
@@ -25,7 +25,7 @@ package trait
 type CamelTrait struct {
 	PlatformBaseTrait `json:",inline" property:",squash"`
 
-	// The runtime provider to use for the integration. (Default, Camel K Runtime).
+	// The runtime provider to use for the integration. (Default, plain Quarkus).
 	// +kubebuilder:validation:Enum=quarkus;plain-quarkus
 	RuntimeProvider string `json:"runtimeProvider,omitempty" property:"runtime-provider"`
 	// The runtime version to use for the integration. It overrides the default version set in the Integration Platform.
diff --git a/pkg/builder/quarkus.go b/pkg/builder/quarkus.go
index 9aafa5e63..707319c5d 100644
--- a/pkg/builder/quarkus.go
+++ b/pkg/builder/quarkus.go
@@ -111,7 +111,7 @@ func loadCamelQuarkusCatalog(ctx *builderContext) error {
 	if runtime.Provider == v1.RuntimeProviderPlainQuarkus {
 		// We need this workaround to load the last existing catalog
 		// TODO: this part will be subject to future refactoring
-		runtime.Version = defaults.DefaultRuntimeVersion
+		runtime.Version = defaults.CamelKRuntimeCatalogVersion
 	}
 
 	catalog, err := camel.LoadCatalog(ctx.C, ctx.Client, ctx.Namespace, *runtime)
diff --git a/pkg/controller/integrationkit/initialize.go b/pkg/controller/integrationkit/initialize.go
index bcdbe8970..9d5d1db7b 100644
--- a/pkg/controller/integrationkit/initialize.go
+++ b/pkg/controller/integrationkit/initialize.go
@@ -83,7 +83,7 @@ func (action *initializeAction) image(ctx context.Context, env *trait.Environmen
 	if env.CamelCatalog.GetRuntimeProvider() == v1.RuntimeProviderPlainQuarkus {
 		// We need this workaround to load the last existing catalog
 		// TODO: this part will be subject to future refactoring
-		catalogName = "camel-catalog-quarkus-" + strings.ToLower(defaults.DefaultRuntimeVersion)
+		catalogName = "camel-catalog-quarkus-" + strings.ToLower(defaults.CamelKRuntimeCatalogVersion)
 	}
 	// Wait for CamelCatalog to be ready
 	catalog, err := kubernetes.GetCamelCatalog(
diff --git a/pkg/controller/integrationplatform/create.go b/pkg/controller/integrationplatform/create.go
index f7e54ac46..9e431f039 100644
--- a/pkg/controller/integrationplatform/create.go
+++ b/pkg/controller/integrationplatform/create.go
@@ -62,9 +62,10 @@ func (action *createAction) Handle(ctx context.Context, platform *v1.Integration
 		return nil, err
 	}
 
-	// if bundled version, load catalog spec from resources
-	if platform.Status.Build.RuntimeVersion == defaults.CamelKRuntimeCatalogVersion {
-		if platform, err = action.handleBundledCatalog(ctx, platform, catalog); err != nil {
+	// if Plain Quarkus or last bundled version, load catalog spec from resources
+	if platform.Status.Build.RuntimeProvider == v1.RuntimeProviderPlainQuarkus ||
+		platform.Status.Build.RuntimeVersion == defaults.CamelKRuntimeCatalogVersion {
+		if platform, err = action.handleBundledCatalog(ctx, platform, catalog, defaults.CamelKRuntimeCatalogVersion); err != nil {
 			return platform, err
 		}
 	} else {
@@ -111,11 +112,11 @@ func loadCatalog(ctx context.Context, c client.Client, namespace string, runtime
 }
 
 //nolint:staticcheck
-func (action *createAction) handleBundledCatalog(ctx context.Context, platform *v1.IntegrationPlatform, catalog *v1.CamelCatalog) (*v1.IntegrationPlatform, error) {
+func (action *createAction) handleBundledCatalog(ctx context.Context, platform *v1.IntegrationPlatform, catalog *v1.CamelCatalog, version string) (*v1.IntegrationPlatform, error) {
 	var camelVersion string
 	// Create the catalog only if it was not yet created
 	if catalog == nil {
-		camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", platform.Status.Build.RuntimeVersion))
+		camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", version))
 		if err != nil {
 			return nil, err
 		}
@@ -126,7 +127,7 @@ func (action *createAction) handleBundledCatalog(ctx context.Context, platform *
 		// Copy platform annotations to the catalog
 		cat.SetAnnotations(platform.Annotations)
 		cat.SetNamespace(platform.Namespace)
-		action.L.Infof("Installing bundled camel catalog: %s", platform.Status.Build.RuntimeVersion)
+		action.L.Infof("Installing bundled camel catalog: %s", version)
 		if err = action.client.Create(ctx, &cat); err != nil {
 			return nil, err
 		}
diff --git a/pkg/controller/integrationplatform/create_test.go b/pkg/controller/integrationplatform/create_test.go
index d7c9077fe..c697412c5 100644
--- a/pkg/controller/integrationplatform/create_test.go
+++ b/pkg/controller/integrationplatform/create_test.go
@@ -228,6 +228,7 @@ func TestCreateCatalogError(t *testing.T) {
 	ip := v1.IntegrationPlatform{}
 	ip.Namespace = "ns"
 	ip.Name = "ck"
+	ip.Spec.Build.RuntimeProvider = v1.RuntimeProviderQuarkus
 	ip.Spec.Build.RuntimeVersion = "0.0.0"
 	c, err := internal.NewFakeClient(&ip)
 	require.NoError(t, err)
diff --git a/pkg/controller/integrationplatform/monitor.go b/pkg/controller/integrationplatform/monitor.go
index aa0f0ac24..951656fbe 100644
--- a/pkg/controller/integrationplatform/monitor.go
+++ b/pkg/controller/integrationplatform/monitor.go
@@ -66,6 +66,9 @@ func (action *monitorAction) Handle(ctx context.Context, platform *v1.Integratio
 		Version:  platform.Status.Build.RuntimeVersion,
 		Provider: platform.Status.Build.RuntimeProvider,
 	}
+	if runtimeSpec.Provider == v1.RuntimeProviderPlainQuarkus {
+		runtimeSpec.Version = defaults.CamelKRuntimeCatalogVersion
+	}
 	catalog, err := loadCatalog(ctx, action.client, platform.Namespace, runtimeSpec)
 	if catalog == nil || err != nil {
 		// error, a catalog must be available
diff --git a/pkg/controller/integrationplatform/monitor_test.go b/pkg/controller/integrationplatform/monitor_test.go
index 7c8cad6c6..c71e89487 100644
--- a/pkg/controller/integrationplatform/monitor_test.go
+++ b/pkg/controller/integrationplatform/monitor_test.go
@@ -123,8 +123,8 @@ func TestMonitorDriftRuntime(t *testing.T) {
 }
 
 func TestMonitorDriftDefault(t *testing.T) {
-	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.CamelKRuntimeCatalogVersion))
-	catalog.Spec.Runtime.Version = defaults.DefaultRuntimeVersion
+	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-quarkus-%s", defaults.CamelKRuntimeCatalogVersion))
+	catalog.Spec.Runtime.Version = defaults.CamelKRuntimeCatalogVersion
 	catalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel.version": "3.2.1",
@@ -156,7 +156,7 @@ func TestMonitorDriftDefault(t *testing.T) {
 
 func TestMonitorDriftConfiguration(t *testing.T) {
 	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.CamelKRuntimeCatalogVersion))
-	catalog.Spec.Runtime.Version = defaults.DefaultRuntimeVersion
+	catalog.Spec.Runtime.Version = defaults.CamelKRuntimeCatalogVersion
 	catalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel.version": "3.2.1",
@@ -281,7 +281,7 @@ func TestMonitorMissingCatalogError(t *testing.T) {
 	assert.Equal(t, v1.IntegrationPlatformConditionCamelCatalogAvailableReason, answer.Status.GetCondition(
 		v1.IntegrationPlatformConditionCamelCatalogAvailable).Reason)
 	assert.Equal(t, fmt.Sprintf("camel catalog %s not available, please review given runtime version",
-		defaults.DefaultRuntimeVersion), answer.Status.GetCondition(
+		defaults.CamelKRuntimeCatalogVersion), answer.Status.GetCondition(
 		v1.IntegrationPlatformConditionCamelCatalogAvailable).Message)
 }
 
diff --git a/pkg/platform/env_platform.go b/pkg/platform/env_platform.go
index 1de1f91db..644cc0ff0 100644
--- a/pkg/platform/env_platform.go
+++ b/pkg/platform/env_platform.go
@@ -40,15 +40,16 @@ var SingletonPlatform = getEnvPlatform()
 
 // Platform contains a series of configuration required during build and packaging.
 type Platform struct {
-	CatalogNamespace    string
-	BuildRuntimeVersion string
-	BuildTimeout        time.Duration
-	BuildConfiguration  v1.BuildConfiguration
-	BuildBaseImage      string
-	PublishStrategy     v1.IntegrationPlatformBuildPublishStrategy
-	Registry            v1.RegistrySpec
-	Maven               v1.MavenBuildSpec
-	MaxRunningBuilds    int32
+	CatalogNamespace     string
+	BuildRuntimeVersion  string
+	BuildRuntimeProvider v1.RuntimeProvider
+	BuildTimeout         time.Duration
+	BuildConfiguration   v1.BuildConfiguration
+	BuildBaseImage       string
+	PublishStrategy      v1.IntegrationPlatformBuildPublishStrategy
+	Registry             v1.RegistrySpec
+	Maven                v1.MavenBuildSpec
+	MaxRunningBuilds     int32
 }
 
 // getEnvPlatform is in charge to parse the environment variables of the operator and return the Platform object.
@@ -63,9 +64,10 @@ func getEnvPlatform() Platform {
 	}
 
 	return Platform{
-		CatalogNamespace:    GetOperatorNamespace(),
-		BuildRuntimeVersion: GetEnvOrDefault("BUILD_RUNTIME_VERSION", defaults.DefaultRuntimeVersion),
-		BuildTimeout:        buildTimeout(),
+		CatalogNamespace:     GetOperatorNamespace(),
+		BuildRuntimeVersion:  GetEnvOrDefault("BUILD_RUNTIME_VERSION", defaults.DefaultRuntimeVersion),
+		BuildRuntimeProvider: v1.RuntimeProvider(GetEnvOrDefault("BUILD_RUNTIME_PROVIDER", defaults.DefaultRuntimeProvider)),
+		BuildTimeout:         buildTimeout(),
 		BuildConfiguration: v1.BuildConfiguration{
 			Strategy:       buildStrategy(),
 			OrderStrategy:  orderStrategy(),
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
index 53b69620e..a27762f95 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -376,7 +376,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index e128e6acd..1ec9afa42 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -739,7 +739,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -3269,7 +3269,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
index 764f65c4d..6dff2fcd2 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationprofiles.yaml
@@ -597,7 +597,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -3007,7 +3007,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
index 928b78e44..b52aac2b6 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
@@ -7442,7 +7442,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
@@ -9813,7 +9813,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
index a9a1b206f..cad0e7697 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
@@ -7495,7 +7495,7 @@ spec:
                             type: array
                           runtimeProvider:
                             description: The runtime provider to use for the integration.
-                              (Default, Camel K Runtime).
+                              (Default, plain Quarkus).
                             enum:
                             - quarkus
                             - plain-quarkus
@@ -9790,7 +9790,7 @@ spec:
                         type: array
                       runtimeProvider:
                         description: The runtime provider to use for the integration.
-                          (Default, Camel K Runtime).
+                          (Default, plain Quarkus).
                         enum:
                         - quarkus
                         - plain-quarkus
diff --git a/pkg/trait/camel.go b/pkg/trait/camel.go
index fe55655d8..7cd76e053 100644
--- a/pkg/trait/camel.go
+++ b/pkg/trait/camel.go
@@ -18,13 +18,16 @@ limitations under the License.
 package trait
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"strconv"
 	"strings"
+	"time"
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/util/wait"
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -34,6 +37,7 @@ import (
 	"github.com/apache/camel-k/v2/pkg/util/defaults"
 	"github.com/apache/camel-k/v2/pkg/util/kubernetes"
 	"github.com/apache/camel-k/v2/pkg/util/property"
+	apierrors "k8s.io/apimachinery/pkg/api/errors"
 )
 
 const (
@@ -48,7 +52,7 @@ type camelTrait struct {
 
 	// private configuration used only internally
 	runtimeVersion  string
-	runtimeProvider string
+	runtimeProvider v1.RuntimeProvider
 }
 
 func newCamelTrait() Trait {
@@ -76,17 +80,13 @@ func (t *camelTrait) Configure(e *Environment) (bool, *TraitCondition, error) {
 		return false, NewIntegrationConditionPlatformDisabledWithMessage("Camel", "synthetic integration"), nil
 	}
 
-	if t.RuntimeVersion == "" {
+	if t.RuntimeProvider == "" {
 		t.runtimeProvider = determineRuntimeProvider(e)
 	} else {
-		t.runtimeProvider = t.RuntimeProvider
+		t.runtimeProvider = v1.RuntimeProvider(t.RuntimeProvider)
 	}
 	if t.RuntimeVersion == "" {
-		if runtimeVersion, err := determineRuntimeVersion(e); err != nil {
-			return false, nil, err
-		} else {
-			t.runtimeVersion = runtimeVersion
-		}
+		t.runtimeVersion = determineRuntimeVersion(e)
 	} else {
 		t.runtimeVersion = t.RuntimeVersion
 	}
@@ -125,8 +125,8 @@ func (t *camelTrait) Apply(e *Environment) error {
 	if e.Integration != nil {
 		if e.Integration.IsManagedBuild() && !e.Integration.IsGitBuild() {
 			// If it's not managed we don't know which is the runtime running
-			e.Integration.Status.RuntimeVersion = e.CamelCatalog.Runtime.Version
-			e.Integration.Status.RuntimeProvider = e.CamelCatalog.Runtime.Provider
+			e.Integration.Status.RuntimeVersion = t.runtimeVersion
+			e.Integration.Status.RuntimeProvider = t.runtimeProvider
 		}
 		e.Integration.Status.Catalog = &v1.Catalog{
 			Version:  e.CamelCatalog.Runtime.Version,
@@ -136,8 +136,8 @@ func (t *camelTrait) Apply(e *Environment) error {
 	if e.IntegrationKit != nil {
 		//nolint: staticcheck
 		if !e.IntegrationKit.IsSynthetic() {
-			e.IntegrationKit.Status.RuntimeVersion = e.CamelCatalog.Runtime.Version
-			e.IntegrationKit.Status.RuntimeProvider = e.CamelCatalog.Runtime.Provider
+			e.IntegrationKit.Status.RuntimeVersion = t.runtimeVersion
+			e.IntegrationKit.Status.RuntimeProvider = t.runtimeProvider
 		}
 		e.IntegrationKit.Status.Catalog = &v1.Catalog{
 			Version:  e.CamelCatalog.Runtime.Version,
@@ -161,7 +161,7 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment) error {
 
 	runtime := v1.RuntimeSpec{
 		Version:  t.runtimeVersion,
-		Provider: v1.RuntimeProvider(t.runtimeProvider),
+		Provider: t.runtimeProvider,
 	}
 	if runtime.Provider == v1.RuntimeProviderPlainQuarkus {
 		// We need this workaround to load the last existing catalog
@@ -206,6 +206,48 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment) error {
 				return err
 			}
 		}
+
+		// If the catalog is a plain-quarkus one, then, we need to wait for it to be available
+		// as the logic is that it is cloned after a legacy camel k runtime catalog.
+		// NOTE: the CamelCatalog is meant to disappear anytime soon, so we can maintain this workaround
+		// as long as the CamelCatalog is supported
+		if runtime.Provider == v1.RuntimeProviderPlainQuarkus {
+			err = wait.PollUntilContextTimeout(
+				e.Ctx,
+				//nolint:mnd
+				2*time.Second,
+				1*time.Minute,
+				true,
+				func(ctx context.Context) (bool, error) {
+					c, err := camel.LoadCatalogFixedRuntime(
+						ctx,
+						e.Client,
+						catalogNamespace,
+						runtime,
+					)
+
+					if apierrors.IsNotFound(err) {
+						return false, nil
+					}
+
+					if err != nil {
+						return false, err
+					}
+
+					if c == nil {
+						return false, nil
+					}
+
+					catalog = c
+
+					return true, nil
+				},
+			)
+		}
+
+		if err != nil {
+			return err
+		}
 	}
 
 	if catalog == nil {
@@ -213,46 +255,49 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment) error {
 			runtime.Version,
 			runtime.Provider)
 	}
+
 	if runtime.Provider == v1.RuntimeProviderPlainQuarkus {
 		// We need this workaround to load the last existing catalog
 		// TODO: this part will be subject to future refactoring
 		catalog.Runtime.Version = t.runtimeVersion
 	}
-
 	e.CamelCatalog = catalog
 
 	return nil
 }
 
-func determineRuntimeVersion(e *Environment) (string, error) {
+func determineRuntimeVersion(e *Environment) string {
 	if e.Integration != nil && e.Integration.Status.RuntimeVersion != "" {
-		return e.Integration.Status.RuntimeVersion, nil
+		return e.Integration.Status.RuntimeVersion
 	}
 	if e.IntegrationKit != nil && e.IntegrationKit.Status.RuntimeVersion != "" {
-		return e.IntegrationKit.Status.RuntimeVersion, nil
+		return e.IntegrationKit.Status.RuntimeVersion
 	}
 	if e.IntegrationProfile != nil && e.IntegrationProfile.Spec.Build.RuntimeVersion != "" {
-		return e.IntegrationProfile.Spec.Build.RuntimeVersion, nil
+		return e.IntegrationProfile.Spec.Build.RuntimeVersion
 	}
 	if e.Platform.BuildRuntimeVersion != "" {
-		return e.Platform.BuildRuntimeVersion, nil
+		return e.Platform.BuildRuntimeVersion
 	}
 
-	return "", errors.New("unable to determine runtime version")
+	return defaults.DefaultRuntimeVersion
 }
 
-func determineRuntimeProvider(e *Environment) string {
+func determineRuntimeProvider(e *Environment) v1.RuntimeProvider {
 	if e.Integration != nil && e.Integration.Status.RuntimeProvider != "" {
-		return string(e.Integration.Status.RuntimeProvider)
+		return e.Integration.Status.RuntimeProvider
 	}
 	if e.IntegrationKit != nil && e.IntegrationKit.Status.RuntimeProvider != "" {
-		return string(e.IntegrationKit.Status.RuntimeProvider)
+		return e.IntegrationKit.Status.RuntimeProvider
 	}
 	if e.IntegrationProfile != nil && e.IntegrationProfile.Spec.Build.RuntimeProvider != "" {
-		return string(e.IntegrationProfile.Spec.Build.RuntimeProvider)
+		return e.IntegrationProfile.Spec.Build.RuntimeProvider
+	}
+	if e.Platform.BuildRuntimeProvider != "" {
+		return e.Platform.BuildRuntimeProvider
 	}
 
-	return defaults.DefaultRuntimeProvider
+	return v1.RuntimeProvider(defaults.DefaultRuntimeProvider)
 }
 
 func (t *camelTrait) computeUserProperties(e *Environment) []ctrl.Object {
diff --git a/pkg/util/camel/camel_runtime.go b/pkg/util/camel/camel_runtime.go
index 5c534a504..2945acb30 100644
--- a/pkg/util/camel/camel_runtime.go
+++ b/pkg/util/camel/camel_runtime.go
@@ -112,3 +112,24 @@ func LoadCatalog(ctx context.Context, client client.Client, namespace string, ru
 
 	return catalog, nil
 }
+
+// LoadCatalogFixedRuntime loads a catalog matching exactly the runtime provided.
+func LoadCatalogFixedRuntime(ctx context.Context, client client.Client, namespace string, runtime v1.RuntimeSpec) (*RuntimeCatalog, error) {
+	options := []k8sclient.ListOption{
+		k8sclient.InNamespace(namespace),
+	}
+
+	list := v1.NewCamelCatalogList()
+	err := client.List(ctx, &list, options...)
+	if err != nil {
+		return nil, err
+	}
+
+	for _, catalog := range list.Items {
+		if catalog.Spec.Runtime.Version == runtime.Version && catalog.Spec.Runtime.Provider == runtime.Provider {
+			return NewRuntimeCatalog(catalog), nil
+		}
+	}
+
+	return nil, nil
+}
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index fd7faa3f9..901b55b8d 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -29,7 +29,7 @@ const (
 	DefaultRuntimeProvider = "plain-quarkus"
 
 	// DefaultRuntimeVersion --
-	DefaultRuntimeVersion = "3.35.1"
+	DefaultRuntimeVersion = "3.33.2"
 
 	// CamelKRuntimeCatalogVersion --
 	CamelKRuntimeCatalogVersion = "3.15.3"
diff --git a/script/Makefile b/script/Makefile
index 3059fda90..2c47a48ba 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -28,7 +28,7 @@ VERSION ?= 2.11.0-SNAPSHOT
 LAST_RELEASED_IMAGE_NAME := camel-k-operator
 LAST_RELEASED_VERSION ?= 2.10.0
 DEFAULT_RUNTIME_PROVIDER := plain-quarkus
-DEFAULT_RUNTIME_VERSION := 3.35.1
+DEFAULT_RUNTIME_VERSION := 3.33.2
 # The last camel-k-runtime catalog
 # we keep using it until we support the CamelCatalog CR
 CK_RUNTIME_CATALOG_VERSION := 3.15.3
diff --git a/script/update_docs.sh b/script/update_docs.sh
index 88afc9f5d..be817b378 100755
--- a/script/update_docs.sh
+++ b/script/update_docs.sh
@@ -17,56 +17,6 @@
 
 location=$(dirname $0)
 
-echo "Scraping information from Makefile"
-LAST_RELEASED_VERSION=$(grep '^LAST_RELEASED_VERSION ?= ' Makefile | sed 's/^.* \?= //')
-RUNTIME_VERSION=$(grep '^DEFAULT_RUNTIME_VERSION := ' Makefile | sed 's/^.* \?= //')
-
-CATALOG="$location/../pkg/resources/resources/camel-catalog-$RUNTIME_VERSION.yaml"
-# This script requires the catalog to be available (via make build-resources for instance)
-if [ ! -f $CATALOG ]; then
-    echo "❗ catalog not available. Make sure to download it before calling this script."
-    exit 1
-fi
-
-KUSTOMIZE_VERSION=$(grep '^KUSTOMIZE_VERSION := ' Makefile | sed 's/^.* \?= //' | sed 's/^.//')
-
-echo "Camel K Runtime version: $RUNTIME_VERSION"
-echo "Kustomize version: $KUSTOMIZE_VERSION"
-
-yq -i ".asciidoc.attributes.kustomize-version = \"$KUSTOMIZE_VERSION\"" $location/../docs/antora.yml
-
-echo "Scraping information from catalog available at: $CATALOG"
-RUNTIME_VERSION=$(yq '.spec.runtime.version' $CATALOG)
-CAMEL_VERSION=$(yq '.spec.runtime.metadata."camel.version"' $CATALOG)
-re="^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)$"
-if ! [[ $CAMEL_VERSION =~ $re ]]; then
-    echo "❗ argument must match semantic version: $CAMEL_VERSION"
-    exit 1
-fi
-CAMEL_DOCS_VERSION="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.x"
-CAMEL_QUARKUS_VERSION=$(yq '.spec.runtime.metadata."camel-quarkus.version"' $CATALOG)
-re="^([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)$"
-if ! [[ $CAMEL_QUARKUS_VERSION =~ $re ]]; then
-    echo "❗ argument must match semantic version: $CAMEL_QUARKUS_VERSION"
-    exit 1
-fi
-CAMEL_QUARKUS_DOCS_VERSION="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.x"
-QUARKUS_VERSION=$(yq '.spec.runtime.metadata."quarkus.version"' $CATALOG)
-
-echo "Camel K latest version: $LAST_RELEASED_VERSION"
-echo "Camel K Runtime version: $RUNTIME_VERSION"
-echo "Camel version: $CAMEL_VERSION"
-echo "Camel Quarkus version: $CAMEL_QUARKUS_VERSION"
-echo "Quarkus version: $QUARKUS_VERSION"
-
-yq -i ".asciidoc.attributes.last-released-version = \"$LAST_RELEASED_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.camel-k-runtime-version = \"$RUNTIME_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.camel-version = \"$CAMEL_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.camel-docs-version = \"$CAMEL_DOCS_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.camel-quarkus-version = \"$CAMEL_QUARKUS_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.camel-quarkus-docs-version = \"$CAMEL_QUARKUS_DOCS_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.quarkus-version = \"$QUARKUS_VERSION\"" $location/../docs/antora.yml
-
 echo "Scraping information from go.mod"
 KNATIVE_API_VERSION=$(grep '^.*knative.dev/eventing ' $location/../go.mod | sed 's/^.* //' | sed 's/^.//')
 KUBE_API_VERSION=$(grep '^.*k8s.io/api ' $location/../go.mod | sed 's/^.* //' | sed 's/^.//')


(camel-k) 01/02: feat(ctrl): default plain quarkus runtime

Posted by pc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c0f3c253b6b99062827219a143d2e5cfcece4b9e
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Sat May 23 11:04:59 2026 +0200

    feat(ctrl): default plain quarkus runtime
    
    Closes #6623
---
 .../workflows/nightly-quarkus-plain-runtime.yml    | 140 ---------------------
 e2e/support/test_support.go                        |   2 +-
 pkg/builder/quarkus_test.go                        |   6 +-
 pkg/controller/catalog/initialize.go               | 122 +++++++++++++++++-
 pkg/controller/integration/build_kit_test.go       |  14 +--
 pkg/controller/integration/build_test.go           |   2 +-
 pkg/controller/integration/monitor_test.go         |   3 +-
 pkg/controller/integrationplatform/create.go       |   2 +-
 pkg/controller/integrationplatform/create_test.go  |  15 +--
 .../integrationplatform/initialize_test.go         |   2 +-
 pkg/controller/integrationplatform/monitor.go      |  95 --------------
 pkg/controller/integrationplatform/monitor_test.go |  14 +--
 pkg/platform/defaults.go                           |   2 +-
 pkg/trait/camel.go                                 |  27 ++--
 pkg/trait/trait_test.go                            |   4 +-
 pkg/util/camel/camel_runtime_test.go               |   6 +-
 pkg/util/camel/catalog.go                          |   2 +-
 pkg/util/camel/catalog_test.go                     |   8 +-
 pkg/util/defaults/defaults.go                      |   8 +-
 script/Makefile                                    |  26 ++--
 script/package_maven_artifacts.sh                  |  80 ------------
 21 files changed, 201 insertions(+), 379 deletions(-)

diff --git a/.github/workflows/nightly-quarkus-plain-runtime.yml b/.github/workflows/nightly-quarkus-plain-runtime.yml
deleted file mode 100644
index ab2187bbc..000000000
--- a/.github/workflows/nightly-quarkus-plain-runtime.yml
+++ /dev/null
@@ -1,140 +0,0 @@
---- # ---------------------------------------------------------------------------
-
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: Nightly check against plain Quarkus runtime
-
-env:
-  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-  CAMEL_K_TEST_TIMEOUT_SHORT: 2m
-  CAMEL_K_TEST_TIMEOUT_MEDIUM: 5m
-  CAMEL_K_TEST_TIMEOUT_LONG: 10m
-  CAMEL_K_TEST_TIMEOUT_VERY_LONG: 30m
-
-on:
-  schedule:
-    - cron: "30 3 * * *"
-  workflow_dispatch:
-
-jobs:
-  common:
-    strategy:
-      matrix:
-        # We want to check this on latest development branch only
-        ref-branch: [main]
-
-    if: github.repository == 'apache/camel-k'
-    runs-on: ubuntu-latest
-    steps:
-
-    - name: "Checkout code"
-      uses: actions/checkout@v4
-      with:
-        ref: ${{ matrix.ref-branch }}
-        persist-credentials: false
-        submodules: recursive
-
-    - name: Infra setting
-      uses: ./.github/actions/infra-setting
-
-    - name: Install operator
-      shell: bash
-      run: |
-        kubectl create ns camel-k
-        make install-k8s-global
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-        kubectl patch itp camel-k -n camel-k -p '{"spec":{"traits":{"camel":{"runtimeProvider":"plain-quarkus", "runtimeVersion":"3.32.1"}}}}' --type=merge
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-
-    - name: Run test
-      shell: bash
-      run: |
-        DO_TEST_PREBUILD=false GOTESTFMT="-json 2>&1 | gotestfmt" make test-common
-
-  quarkus-native:
-    strategy:
-      matrix:
-        # We want to check this on latest development branch only
-        ref-branch: [main]
-
-    if: github.repository == 'apache/camel-k'
-    runs-on: ubuntu-latest
-    steps:
-
-    - name: "Checkout code"
-      uses: actions/checkout@v4
-      with:
-        ref: ${{ matrix.ref-branch }}
-        persist-credentials: false
-        submodules: recursive
-
-    - name: Infra setting
-      uses: ./.github/actions/infra-setting
-
-    - name: Install operator
-      shell: bash
-      run: |
-        kubectl create ns camel-k
-        make install-k8s-global
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-        kubectl patch itp camel-k -n camel-k -p '{"spec":{"traits":{"camel":{"runtimeProvider":"plain-quarkus", "runtimeVersion":"3.32.1"}}}}' --type=merge
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-
-    - name: Run test
-      shell: bash
-      run: |
-        DO_TEST_PREBUILD=false GOTESTFMT="-json 2>&1 | gotestfmt" make test-quarkus-native
-
-  knative:
-    strategy:
-      matrix:
-        # We want to check this on latest development branch only
-        ref-branch: [main]
-
-    if: github.repository == 'apache/camel-k'
-    runs-on: ubuntu-latest
-    steps:
-
-    - name: "Checkout code"
-      uses: actions/checkout@v4
-      with:
-        ref: ${{ matrix.ref-branch }}
-        persist-credentials: false
-        submodules: recursive
-
-    - name: Infra setting
-      uses: ./.github/actions/infra-setting
-
-    - name: Install Knative
-      shell: bash
-      run: |
-        ./e2e/knative/files/setup.sh
-
-    - name: Install operator
-      shell: bash
-      run: |
-        kubectl create ns camel-k
-        make install-k8s-global
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-        kubectl patch itp camel-k -n camel-k -p '{"spec":{"traits":{"camel":{"runtimeProvider":"plain-quarkus", "runtimeVersion":"3.32.1"}}}}' --type=merge
-        kubectl wait --for=jsonpath='{.status.phase}'=Ready itp camel-k -n camel-k --timeout=60s
-
-    - name: Run test
-      shell: bash
-      run: |
-        DO_TEST_PREBUILD=false GOTESTFMT="-json 2>&1 | gotestfmt" make test-knative
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index f12407b9b..156f7cde9 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -2042,7 +2042,7 @@ func DeleteCamelCatalog(t *testing.T, ctx context.Context, ns, name string) func
 
 func DefaultCamelCatalogPhase(t *testing.T, ctx context.Context, ns string) func() v1.CamelCatalogPhase {
 	return func() v1.CamelCatalogPhase {
-		catalogName := fmt.Sprintf("camel-catalog-%s", strings.ToLower(defaults.DefaultRuntimeVersion))
+		catalogName := fmt.Sprintf("camel-catalog-%s", strings.ToLower(defaults.CamelKRuntimeCatalogVersion))
 		c := CamelCatalog(t, ctx, ns, catalogName)()
 		if c == nil {
 			return ""
diff --git a/pkg/builder/quarkus_test.go b/pkg/builder/quarkus_test.go
index 1fd8b9a4e..51de9f22a 100644
--- a/pkg/builder/quarkus_test.go
+++ b/pkg/builder/quarkus_test.go
@@ -231,7 +231,7 @@ func TestBuildQuarkusRunner(t *testing.T) {
 	c, err := internal.NewFakeClient(&v1.CamelCatalog{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: "default",
-			Name:      "camel-catalog-" + defaults.DefaultRuntimeVersion,
+			Name:      "camel-catalog-" + defaults.CamelKRuntimeCatalogVersion,
 		},
 		Spec: v1.CamelCatalogSpec{
 			Runtime: defaultCatalog.Runtime,
@@ -256,7 +256,7 @@ func TestBuildQuarkusRunner(t *testing.T) {
 			Dependencies: []string{"mvn:org.apache.camel.k:camel-k-runtime"},
 		},
 	}
-	if strings.Contains(defaults.DefaultRuntimeVersion, "SNAPSHOT") {
+	if strings.Contains(defaults.CamelKRuntimeCatalogVersion, "SNAPSHOT") {
 		builderContext.Build.Maven.Repositories = []v1.Repository{
 			{
 				ID:   "APACHE-SNAPSHOT",
@@ -304,7 +304,7 @@ func TestBuildQuarkusRunner(t *testing.T) {
 	require.NoError(t, err)
 	assert.NotEmpty(t, builderContext.Artifacts)
 	camelRuntimeDepFound := false
-	expectedArtifact := fmt.Sprintf("org.apache.camel.k.camel-k-runtime-%s.jar", defaults.DefaultRuntimeVersion)
+	expectedArtifact := fmt.Sprintf("org.apache.camel.k.camel-k-runtime-%s.jar", defaults.CamelKRuntimeCatalogVersion)
 	for _, artifact := range builderContext.Artifacts {
 		if artifact.ID == expectedArtifact {
 			camelRuntimeDepFound = true
diff --git a/pkg/controller/catalog/initialize.go b/pkg/controller/catalog/initialize.go
index d5a023cbf..4e8825837 100644
--- a/pkg/controller/catalog/initialize.go
+++ b/pkg/controller/catalog/initialize.go
@@ -19,9 +19,13 @@ package catalog
 
 import (
 	"context"
+	"strings"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
+	"github.com/apache/camel-k/v2/pkg/client"
 	corev1 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 // NewInitializeAction returns a action that initializes the catalog configuration when not provided by the user.
@@ -43,11 +47,6 @@ func (action *initializeAction) CanHandle(catalog *v1.CamelCatalog) bool {
 
 func (action *initializeAction) Handle(ctx context.Context, catalog *v1.CamelCatalog) (*v1.CamelCatalog, error) {
 	action.L.Info("Initializing CamelCatalog")
-
-	return initialize(catalog)
-}
-
-func initialize(catalog *v1.CamelCatalog) (*v1.CamelCatalog, error) {
 	target := catalog.DeepCopy()
 
 	if catalog.Spec.GetQuarkusToolingImage() == "" {
@@ -68,5 +67,118 @@ func initialize(catalog *v1.CamelCatalog) (*v1.CamelCatalog, error) {
 		)
 	}
 
+	action.L.Info("Cloning CamelCatalog for Plain Quarkus runtime")
+	if err := action.addPlainQuarkusCatalog(ctx, catalog); err != nil {
+		// Only warn the user, we don't want to fail
+		action.L.Infof(
+			"WARN: the operator wasn't able to clone %s catalog. You won't be able to run a plain Quarkus runtime provider.",
+			catalog.Name,
+		)
+	}
+
 	return target, nil
 }
+
+// addPlainQuarkusCatalog is a workaround while a CamelCatalog custom resource is required. The goal is to clone any existing
+// Camel K Runtime catalog and adjust to make it work with plain Quarkus runtime provider.
+func (action *initializeAction) addPlainQuarkusCatalog(ctx context.Context, catalog *v1.CamelCatalog) error {
+	runtimeSpec := v1.RuntimeSpec{
+		Version:  catalog.Spec.GetRuntimeVersion(),
+		Provider: v1.RuntimeProviderPlainQuarkus,
+	}
+	cat, err := loadCatalog(ctx, action.client, catalog.Namespace, runtimeSpec)
+	if err != nil {
+		return err
+	}
+	if cat == nil {
+		// Clone the catalog to enable Quarkus Plain runtime
+		clonedCatalog := catalog.DeepCopy()
+		clonedCatalog.Status = v1.CamelCatalogStatus{}
+		clonedCatalog.ObjectMeta = metav1.ObjectMeta{
+			Namespace:   catalog.Namespace,
+			Name:        strings.ReplaceAll(catalog.Name, "camel-catalog", "camel-catalog-quarkus"),
+			Labels:      catalog.Labels,
+			Annotations: catalog.Annotations,
+		}
+		clonedCatalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
+		clonedCatalog.Spec.Runtime.Dependencies = []v1.MavenArtifact{
+			{
+				GroupID:    v1.MavenQuarkusGroupID,
+				ArtifactID: "camel-quarkus-core",
+			},
+		}
+		if clonedCatalog.Spec.Runtime.Capabilities != nil {
+			clonedCatalog.Spec.Runtime.Capabilities["cron"] = v1.Capability{
+				Dependencies: []v1.MavenArtifact{},
+			}
+			clonedCatalog.Spec.Runtime.Capabilities["knative"] = v1.Capability{
+				Dependencies: []v1.MavenArtifact{
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-knative",
+					},
+				},
+			}
+			runtimesProps := clonedCatalog.Spec.Runtime.Capabilities["master"].RuntimeProperties
+			clonedCatalog.Spec.Runtime.Capabilities["master"] = v1.Capability{
+				Dependencies: []v1.MavenArtifact{
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-master",
+					},
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-kubernetes",
+					},
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-kubernetes-cluster-service",
+					},
+				},
+				RuntimeProperties: runtimesProps,
+			}
+			clonedCatalog.Spec.Runtime.Capabilities["resume-kafka"] = v1.Capability{
+				Dependencies: []v1.MavenArtifact{},
+			}
+			clonedCatalog.Spec.Runtime.Capabilities["jolokia"] = v1.Capability{
+				Dependencies: []v1.MavenArtifact{
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-jaxb",
+					},
+					{
+						GroupID:    v1.MavenQuarkusGroupID,
+						ArtifactID: "camel-quarkus-management",
+					},
+					{
+						GroupID:    "org.jolokia",
+						ArtifactID: "jolokia-agent-jvm",
+						Classifier: "javaagent",
+						Version:    "2.1.1",
+					},
+				},
+			}
+		}
+
+		return action.client.Create(ctx, clonedCatalog)
+	}
+
+	return nil
+}
+
+func loadCatalog(ctx context.Context, c client.Client, namespace string, runtimeSpec v1.RuntimeSpec) (*v1.CamelCatalog, error) {
+	options := []k8sclient.ListOption{
+		k8sclient.InNamespace(namespace),
+	}
+	list := v1.NewCamelCatalogList()
+	if err := c.List(ctx, &list, options...); err != nil {
+		return nil, err
+	}
+	for _, cc := range list.Items {
+		if cc.Spec.Runtime.Provider == runtimeSpec.Provider && cc.Spec.Runtime.Version == runtimeSpec.Version {
+			return &cc, nil
+		}
+	}
+
+	return nil, nil
+}
diff --git a/pkg/controller/integration/build_kit_test.go b/pkg/controller/integration/build_kit_test.go
index f17ebf859..0add666ba 100644
--- a/pkg/controller/integration/build_kit_test.go
+++ b/pkg/controller/integration/build_kit_test.go
@@ -167,7 +167,7 @@ func TestCamelBuildKitKitLookupExistingKit(t *testing.T) {
 		Spec: v1.CamelCatalogSpec{
 			Runtime: v1.RuntimeSpec{
 				Provider: v1.RuntimeProviderQuarkus,
-				Version:  defaults.DefaultRuntimeVersion,
+				Version:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
@@ -181,13 +181,13 @@ func TestCamelBuildKitKitLookupExistingKit(t *testing.T) {
 			Name:      "my-ik",
 			Labels: map[string]string{
 				v1.IntegrationKitTypeLabel:           v1.IntegrationKitTypePlatform,
-				kubernetes.CamelLabelRuntimeVersion:  defaults.DefaultRuntimeVersion,
+				kubernetes.CamelLabelRuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 				kubernetes.CamelLabelRuntimeProvider: string(v1.RuntimeProviderQuarkus),
 			},
 		},
 		Status: v1.IntegrationKitStatus{
 			Phase:           v1.IntegrationKitPhaseBuildRunning,
-			RuntimeVersion:  defaults.DefaultRuntimeVersion,
+			RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 			RuntimeProvider: v1.RuntimeProviderQuarkus,
 		},
 	}
@@ -202,7 +202,7 @@ func TestCamelBuildKitKitLookupExistingKit(t *testing.T) {
 		},
 		Status: v1.IntegrationStatus{
 			Phase:           v1.IntegrationPhaseBuildingKit,
-			RuntimeVersion:  defaults.DefaultRuntimeVersion,
+			RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 			RuntimeProvider: v1.RuntimeProviderQuarkus,
 		},
 	}
@@ -262,7 +262,7 @@ func TestCamelBuildKitKitLookupNoMatchingKits(t *testing.T) {
 		Spec: v1.CamelCatalogSpec{
 			Runtime: v1.RuntimeSpec{
 				Provider: v1.RuntimeProviderQuarkus,
-				Version:  defaults.DefaultRuntimeVersion,
+				Version:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
@@ -276,7 +276,7 @@ func TestCamelBuildKitKitLookupNoMatchingKits(t *testing.T) {
 			Name:      "my-ik",
 			Labels: map[string]string{
 				v1.IntegrationKitTypeLabel:           v1.IntegrationKitTypePlatform,
-				kubernetes.CamelLabelRuntimeVersion:  defaults.DefaultRuntimeVersion,
+				kubernetes.CamelLabelRuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 				kubernetes.CamelLabelRuntimeProvider: string(v1.RuntimeProviderQuarkus),
 			},
 		},
@@ -297,7 +297,7 @@ func TestCamelBuildKitKitLookupNoMatchingKits(t *testing.T) {
 		},
 		Status: v1.IntegrationStatus{
 			Phase:           v1.IntegrationPhaseBuildingKit,
-			RuntimeVersion:  defaults.DefaultRuntimeVersion,
+			RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 			RuntimeProvider: v1.RuntimeProviderQuarkus,
 		},
 	}
diff --git a/pkg/controller/integration/build_test.go b/pkg/controller/integration/build_test.go
index 70e9c6ad4..682edd41d 100644
--- a/pkg/controller/integration/build_test.go
+++ b/pkg/controller/integration/build_test.go
@@ -64,7 +64,7 @@ func TestIntegrationBuildSubmitted(t *testing.T) {
 		Spec: v1.CamelCatalogSpec{
 			Runtime: v1.RuntimeSpec{
 				Provider: v1.RuntimeProviderQuarkus,
-				Version:  defaults.DefaultRuntimeVersion,
+				Version:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
diff --git a/pkg/controller/integration/monitor_test.go b/pkg/controller/integration/monitor_test.go
index 925c22466..2062e4db8 100644
--- a/pkg/controller/integration/monitor_test.go
+++ b/pkg/controller/integration/monitor_test.go
@@ -122,6 +122,7 @@ func TestMonitorFailureIntegration(t *testing.T) {
 	require.NoError(t, err)
 
 	// simulate a trait execution failure
+	it.Status.RuntimeProvider = v1.RuntimeProviderQuarkus
 	it.Status.RuntimeVersion = "0.0.0"
 
 	a := monitorAction{}
@@ -150,7 +151,7 @@ func nominalEnvironment() (client.Client, *v1.Integration, error) {
 		Spec: v1.CamelCatalogSpec{
 			Runtime: v1.RuntimeSpec{
 				Provider: v1.RuntimeProviderQuarkus,
-				Version:  defaults.DefaultRuntimeVersion,
+				Version:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
diff --git a/pkg/controller/integrationplatform/create.go b/pkg/controller/integrationplatform/create.go
index 2e01dfec9..f7e54ac46 100644
--- a/pkg/controller/integrationplatform/create.go
+++ b/pkg/controller/integrationplatform/create.go
@@ -63,7 +63,7 @@ func (action *createAction) Handle(ctx context.Context, platform *v1.Integration
 	}
 
 	// if bundled version, load catalog spec from resources
-	if platform.Status.Build.RuntimeVersion == defaults.DefaultRuntimeVersion {
+	if platform.Status.Build.RuntimeVersion == defaults.CamelKRuntimeCatalogVersion {
 		if platform, err = action.handleBundledCatalog(ctx, platform, catalog); err != nil {
 			return platform, err
 		}
diff --git a/pkg/controller/integrationplatform/create_test.go b/pkg/controller/integrationplatform/create_test.go
index 36a52e891..d7c9077fe 100644
--- a/pkg/controller/integrationplatform/create_test.go
+++ b/pkg/controller/integrationplatform/create_test.go
@@ -50,7 +50,7 @@ func TestCreate(t *testing.T) {
 		IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
 				RuntimeProvider: v1.RuntimeProviderQuarkus,
-				RuntimeVersion:  defaults.DefaultRuntimeVersion,
+				RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
@@ -67,7 +67,7 @@ func TestCreate(t *testing.T) {
 	require.NoError(t, err)
 	assert.NotNil(t, answer)
 	assert.Equal(t, v1.IntegrationPlatformPhaseReady, answer.Status.Phase)
-	assert.Equal(t, defaults.DefaultRuntimeVersion, answer.Status.Build.RuntimeVersion)
+	assert.Equal(t, defaults.CamelKRuntimeCatalogVersion, answer.Status.Build.RuntimeVersion)
 	assert.Equal(t, v1.RuntimeProviderQuarkus, answer.Status.Build.RuntimeProvider)
 	assert.NotEqual(t, "", answer.Status.Build.RuntimeCoreVersion)
 	assert.Equal(t, corev1.ConditionTrue, answer.Status.GetCondition(v1.IntegrationPlatformConditionCamelCatalogAvailable).Status)
@@ -86,13 +86,13 @@ func TestCatalogAlreadyPresent(t *testing.T) {
 		IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
 				RuntimeProvider: v1.RuntimeProviderQuarkus,
-				RuntimeVersion:  defaults.DefaultRuntimeVersion,
+				RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 			},
 		},
 	}
 
-	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.DefaultRuntimeVersion))
-	catalog.Spec.Runtime.Version = defaults.DefaultRuntimeVersion
+	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.CamelKRuntimeCatalogVersion))
+	catalog.Spec.Runtime.Version = defaults.CamelKRuntimeCatalogVersion
 	catalog.Spec.Runtime.Provider = v1.RuntimeProviderQuarkus
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel.version": "4.4.0",
@@ -127,12 +127,13 @@ func TestCreateNewCatalog(t *testing.T) {
 		Maven: v1.MavenSpec{
 			LocalRepository: m2RepoTmpDir,
 		},
+		RuntimeVersion: defaults.CamelKRuntimeCatalogVersion,
 	}
 	ip.Status = v1.IntegrationPlatformStatus{
 		IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
 				RuntimeProvider: v1.RuntimeProviderQuarkus,
-				RuntimeVersion:  defaults.DefaultRuntimeVersion,
+				RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 				Timeout: &metav1.Duration{
 					Duration: 1 * time.Minute,
 				},
@@ -200,7 +201,7 @@ func TestCreateNewCatalog(t *testing.T) {
 		IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
 				RuntimeProvider: v1.RuntimeProviderQuarkus,
-				RuntimeVersion:  defaults.DefaultRuntimeVersion,
+				RuntimeVersion:  defaults.CamelKRuntimeCatalogVersion,
 				Timeout: &metav1.Duration{
 					Duration: 1 * time.Minute,
 				},
diff --git a/pkg/controller/integrationplatform/initialize_test.go b/pkg/controller/integrationplatform/initialize_test.go
index 1ad5bcf6c..2cf76278b 100644
--- a/pkg/controller/integrationplatform/initialize_test.go
+++ b/pkg/controller/integrationplatform/initialize_test.go
@@ -48,7 +48,7 @@ func TestDefaultRuntimeSpec(t *testing.T) {
 	require.NoError(t, err)
 	assert.Equal(t, v1.IntegrationPlatformPhaseCreating, answer.Status.Phase)
 	assert.Equal(t, defaults.DefaultRuntimeVersion, answer.Status.Build.RuntimeVersion)
-	assert.Equal(t, v1.RuntimeProviderQuarkus, answer.Status.Build.RuntimeProvider)
+	assert.Equal(t, v1.RuntimeProviderPlainQuarkus, answer.Status.Build.RuntimeProvider)
 }
 
 func TestUserRuntimeSpec(t *testing.T) {
diff --git a/pkg/controller/integrationplatform/monitor.go b/pkg/controller/integrationplatform/monitor.go
index f1afad53b..aa0f0ac24 100644
--- a/pkg/controller/integrationplatform/monitor.go
+++ b/pkg/controller/integrationplatform/monitor.go
@@ -27,7 +27,6 @@ import (
 	"github.com/apache/camel-k/v2/pkg/util/defaults"
 	"github.com/apache/camel-k/v2/pkg/util/openshift"
 	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 // NewMonitorAction returns an action that monitors the integration platform after it's fully initialized.
@@ -131,13 +130,6 @@ func (action *monitorAction) Handle(ctx context.Context, platform *v1.Integratio
 	action.checkTraitAnnotationsDeprecatedNotice(platform)
 	action.checkMavenSettings(platform)
 	action.checkKameletsCatalogRepoDeprecatedNotice(platform)
-	if err = action.addPlainQuarkusCatalog(ctx, catalog); err != nil {
-		// Only warn the user, we don't want to fail
-		action.L.Infof(
-			"WARN: the operator wasn't able to clone %s catalog. You won't be able to run a plain Quarkus runtime provider.",
-			catalog.Name,
-		)
-	}
 
 	platform.Status.SetCondition(
 		v1.IntegrationPlatformConditionType("IntegrationPlatformDeprecated"),
@@ -218,90 +210,3 @@ func specOrDefault(runtimeVersionSpec string) string {
 
 	return runtimeVersionSpec
 }
-
-// addPlainQuarkusCatalog is a workaround while a CamelCatalog custom resource is required. The goal is to clone any existing
-// Camel K Runtime catalog and adjust to make it work with plain Quarkus runtime provider.
-func (action *monitorAction) addPlainQuarkusCatalog(ctx context.Context, catalog *v1.CamelCatalog) error {
-	runtimeSpec := v1.RuntimeSpec{
-		Version:  catalog.Spec.GetRuntimeVersion(),
-		Provider: v1.RuntimeProviderPlainQuarkus,
-	}
-	cat, err := loadCatalog(ctx, action.client, catalog.Namespace, runtimeSpec)
-	if err != nil {
-		return err
-	}
-	if cat == nil {
-		// Clone the catalog to enable Quarkus Plain runtime
-		clonedCatalog := catalog.DeepCopy()
-		clonedCatalog.Status = v1.CamelCatalogStatus{}
-		clonedCatalog.ObjectMeta = metav1.ObjectMeta{
-			Namespace:   catalog.Namespace,
-			Name:        strings.ReplaceAll(catalog.Name, "camel-catalog", "camel-catalog-quarkus"),
-			Labels:      catalog.Labels,
-			Annotations: catalog.Annotations,
-		}
-		clonedCatalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
-		clonedCatalog.Spec.Runtime.Dependencies = []v1.MavenArtifact{
-			{
-				GroupID:    v1.MavenQuarkusGroupID,
-				ArtifactID: "camel-quarkus-core",
-			},
-		}
-		if clonedCatalog.Spec.Runtime.Capabilities != nil {
-			clonedCatalog.Spec.Runtime.Capabilities["cron"] = v1.Capability{
-				Dependencies: []v1.MavenArtifact{},
-			}
-			clonedCatalog.Spec.Runtime.Capabilities["knative"] = v1.Capability{
-				Dependencies: []v1.MavenArtifact{
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-knative",
-					},
-				},
-			}
-			runtimesProps := clonedCatalog.Spec.Runtime.Capabilities["master"].RuntimeProperties
-			clonedCatalog.Spec.Runtime.Capabilities["master"] = v1.Capability{
-				Dependencies: []v1.MavenArtifact{
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-master",
-					},
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-kubernetes",
-					},
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-kubernetes-cluster-service",
-					},
-				},
-				RuntimeProperties: runtimesProps,
-			}
-			clonedCatalog.Spec.Runtime.Capabilities["resume-kafka"] = v1.Capability{
-				Dependencies: []v1.MavenArtifact{},
-			}
-			clonedCatalog.Spec.Runtime.Capabilities["jolokia"] = v1.Capability{
-				Dependencies: []v1.MavenArtifact{
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-jaxb",
-					},
-					{
-						GroupID:    v1.MavenQuarkusGroupID,
-						ArtifactID: "camel-quarkus-management",
-					},
-					{
-						GroupID:    "org.jolokia",
-						ArtifactID: "jolokia-agent-jvm",
-						Classifier: "javaagent",
-						Version:    "2.1.1",
-					},
-				},
-			}
-		}
-
-		return action.client.Create(ctx, clonedCatalog)
-	}
-
-	return nil
-}
diff --git a/pkg/controller/integrationplatform/monitor_test.go b/pkg/controller/integrationplatform/monitor_test.go
index dd71daa70..7c8cad6c6 100644
--- a/pkg/controller/integrationplatform/monitor_test.go
+++ b/pkg/controller/integrationplatform/monitor_test.go
@@ -123,9 +123,9 @@ func TestMonitorDriftRuntime(t *testing.T) {
 }
 
 func TestMonitorDriftDefault(t *testing.T) {
-	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.DefaultRuntimeVersion))
+	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.CamelKRuntimeCatalogVersion))
 	catalog.Spec.Runtime.Version = defaults.DefaultRuntimeVersion
-	catalog.Spec.Runtime.Provider = v1.RuntimeProviderQuarkus
+	catalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel.version": "3.2.1",
 	}
@@ -134,7 +134,7 @@ func TestMonitorDriftDefault(t *testing.T) {
 	ip.Name = "ck"
 	ip.Spec.Build.Registry.Address = "1.2.3.4"
 	ip.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
-	ip.Status.Build.RuntimeProvider = v1.RuntimeProviderQuarkus
+	ip.Status.Build.RuntimeProvider = v1.RuntimeProviderPlainQuarkus
 	ip.Status.Build.Registry.Address = "1.2.3.4"
 	ip.Status.Phase = v1.IntegrationPlatformPhaseReady
 	c, err := internal.NewFakeClient(&ip, &catalog)
@@ -155,9 +155,9 @@ func TestMonitorDriftDefault(t *testing.T) {
 }
 
 func TestMonitorDriftConfiguration(t *testing.T) {
-	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.DefaultRuntimeVersion))
+	catalog := v1.NewCamelCatalog("ns", fmt.Sprintf("camel-catalog-%s", defaults.CamelKRuntimeCatalogVersion))
 	catalog.Spec.Runtime.Version = defaults.DefaultRuntimeVersion
-	catalog.Spec.Runtime.Provider = v1.RuntimeProviderQuarkus
+	catalog.Spec.Runtime.Provider = v1.RuntimeProviderPlainQuarkus
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel.version": "3.2.1",
 	}
@@ -178,7 +178,7 @@ func TestMonitorDriftConfiguration(t *testing.T) {
 			IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
 				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion:     defaults.DefaultRuntimeVersion,
-					RuntimeProvider:    v1.RuntimeProviderQuarkus,
+					RuntimeProvider:    v1.RuntimeProviderPlainQuarkus,
 					RuntimeCoreVersion: "3.2.1",
 					Registry: v1.RegistrySpec{
 						Address: "1.2.3.4",
@@ -205,7 +205,7 @@ func TestMonitorDriftConfiguration(t *testing.T) {
 	assert.Equal(t, v1.IntegrationPlatformPhaseReady, answer.Status.Phase)
 	assert.Equal(t, defaults.Version, answer.Status.Version)
 	assert.Equal(t, defaults.DefaultRuntimeVersion, answer.Status.Build.RuntimeVersion)
-	assert.Equal(t, v1.RuntimeProviderQuarkus, answer.Status.Build.RuntimeProvider)
+	assert.Equal(t, v1.RuntimeProviderPlainQuarkus, answer.Status.Build.RuntimeProvider)
 	assert.Equal(t, "3.2.1", answer.Status.Build.RuntimeCoreVersion)
 	assert.Equal(t, "override", answer.Status.Traits.Container.Name)
 }
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index 9977ec371..28175c98a 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -64,7 +64,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
 	}
 
 	if p.Status.Build.RuntimeProvider == "" {
-		p.Status.Build.RuntimeProvider = v1.RuntimeProviderQuarkus
+		p.Status.Build.RuntimeProvider = defaults.DefaultRuntimeProvider
 		log.Debugf("Integration Platform %s [%s]: setting default runtime provider %s", p.Name, p.Namespace, v1.RuntimeProviderQuarkus)
 	}
 	if p.Status.Build.RuntimeVersion == "" {
diff --git a/pkg/trait/camel.go b/pkg/trait/camel.go
index acb79c19e..fe55655d8 100644
--- a/pkg/trait/camel.go
+++ b/pkg/trait/camel.go
@@ -76,6 +76,11 @@ func (t *camelTrait) Configure(e *Environment) (bool, *TraitCondition, error) {
 		return false, NewIntegrationConditionPlatformDisabledWithMessage("Camel", "synthetic integration"), nil
 	}
 
+	if t.RuntimeVersion == "" {
+		t.runtimeProvider = determineRuntimeProvider(e)
+	} else {
+		t.runtimeProvider = t.RuntimeProvider
+	}
 	if t.RuntimeVersion == "" {
 		if runtimeVersion, err := determineRuntimeVersion(e); err != nil {
 			return false, nil, err
@@ -86,12 +91,6 @@ func (t *camelTrait) Configure(e *Environment) (bool, *TraitCondition, error) {
 		t.runtimeVersion = t.RuntimeVersion
 	}
 
-	if t.RuntimeProvider == "" {
-		t.runtimeProvider = "quarkus"
-	} else {
-		t.runtimeProvider = t.RuntimeProvider
-	}
-
 	var cond *TraitCondition
 	//nolint: staticcheck
 	if (e.Integration != nil && (!e.Integration.IsManagedBuild() || e.Integration.IsGitBuild())) ||
@@ -167,7 +166,7 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment) error {
 	if runtime.Provider == v1.RuntimeProviderPlainQuarkus {
 		// We need this workaround to load the last existing catalog
 		// TODO: this part will be subject to future refactoring
-		runtime.Version = defaults.DefaultRuntimeVersion
+		runtime.Version = defaults.CamelKRuntimeCatalogVersion
 	}
 
 	catalog, err := camel.LoadCatalog(e.Ctx, e.Client, catalogNamespace, runtime)
@@ -242,6 +241,20 @@ func determineRuntimeVersion(e *Environment) (string, error) {
 	return "", errors.New("unable to determine runtime version")
 }
 
+func determineRuntimeProvider(e *Environment) string {
+	if e.Integration != nil && e.Integration.Status.RuntimeProvider != "" {
+		return string(e.Integration.Status.RuntimeProvider)
+	}
+	if e.IntegrationKit != nil && e.IntegrationKit.Status.RuntimeProvider != "" {
+		return string(e.IntegrationKit.Status.RuntimeProvider)
+	}
+	if e.IntegrationProfile != nil && e.IntegrationProfile.Spec.Build.RuntimeProvider != "" {
+		return string(e.IntegrationProfile.Spec.Build.RuntimeProvider)
+	}
+
+	return defaults.DefaultRuntimeProvider
+}
+
 func (t *camelTrait) computeUserProperties(e *Environment) []ctrl.Object {
 	sources := e.Integration.AllSources()
 	maps := make([]ctrl.Object, 0, len(sources)+1)
diff --git a/pkg/trait/trait_test.go b/pkg/trait/trait_test.go
index 29e4ba5c2..9fb4f7598 100644
--- a/pkg/trait/trait_test.go
+++ b/pkg/trait/trait_test.go
@@ -301,7 +301,7 @@ func testDefaultIntegrationPhaseTraitsSetting(t *testing.T, phase v1.Integration
 		},
 	}
 	// Load the default catalog
-	camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", defaults.DefaultRuntimeVersion))
+	camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", defaults.CamelKRuntimeCatalogVersion))
 	require.NoError(t, err)
 	var cat v1.CamelCatalog
 	err = yaml.Unmarshal(camelCatalogData, &cat)
@@ -388,7 +388,7 @@ func TestIntegrationTraitsSetting(t *testing.T) {
 		},
 	}
 	// Load the default catalog
-	camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", defaults.DefaultRuntimeVersion))
+	camelCatalogData, err := resources.Resource(fmt.Sprintf("/resources/camel-catalog-%s.yaml", defaults.CamelKRuntimeCatalogVersion))
 	require.NoError(t, err)
 	var cat v1.CamelCatalog
 	err = yaml.Unmarshal(camelCatalogData, &cat)
diff --git a/pkg/util/camel/camel_runtime_test.go b/pkg/util/camel/camel_runtime_test.go
index 8e431fb18..581d4cc61 100644
--- a/pkg/util/camel/camel_runtime_test.go
+++ b/pkg/util/camel/camel_runtime_test.go
@@ -42,7 +42,7 @@ func TestCreateCatalog(t *testing.T) {
 	if !ok {
 		t.Setenv("MAVEN_CMD", "mvn")
 	}
-	if strings.Contains(defaults.DefaultRuntimeVersion, "SNAPSHOT") {
+	if strings.Contains(defaults.CamelKRuntimeCatalogVersion, "SNAPSHOT") {
 		maven.DefaultMavenRepositories += ",https://repository.apache.org/content/repositories/snapshots-group@snapshots@id=apache-snapshots"
 	}
 	catalog, err := CreateCatalog(
@@ -51,13 +51,13 @@ func TestCreateCatalog(t *testing.T) {
 		"",
 		platform.SingletonPlatform.Maven.MavenSpec,
 		platform.SingletonPlatform.BuildTimeout,
-		v1.RuntimeSpec{Provider: v1.RuntimeProviderQuarkus, Version: defaults.DefaultRuntimeVersion},
+		v1.RuntimeSpec{Provider: v1.RuntimeProviderQuarkus, Version: defaults.CamelKRuntimeCatalogVersion},
 		nil,
 		"",
 	)
 	require.NoError(t, err)
 	assert.NotNil(t, catalog)
-	assert.Equal(t, defaults.DefaultRuntimeVersion, catalog.Runtime.Version)
+	assert.Equal(t, defaults.CamelKRuntimeCatalogVersion, catalog.Runtime.Version)
 	assert.Equal(t, v1.RuntimeProviderQuarkus, catalog.Runtime.Provider)
 	assert.NotEmpty(t, catalog.Runtime.Capabilities)
 
diff --git a/pkg/util/camel/catalog.go b/pkg/util/camel/catalog.go
index 048dd7b0b..bc17f2e70 100644
--- a/pkg/util/camel/catalog.go
+++ b/pkg/util/camel/catalog.go
@@ -65,7 +65,7 @@ func catalogForRuntimeProvider(provider v1.RuntimeProvider) (*RuntimeCatalog, er
 	}
 
 	return findBestMatch(catalogs, v1.RuntimeSpec{
-		Version:  defaults.DefaultRuntimeVersion,
+		Version:  defaults.CamelKRuntimeCatalogVersion,
 		Provider: provider,
 		Metadata: make(map[string]string),
 	})
diff --git a/pkg/util/camel/catalog_test.go b/pkg/util/camel/catalog_test.go
index 9ef830b80..bd7728a09 100644
--- a/pkg/util/camel/catalog_test.go
+++ b/pkg/util/camel/catalog_test.go
@@ -50,7 +50,7 @@ func TestRuntimeContainsEmbeddedArtifacts(t *testing.T) {
 	catalog, err := DefaultCatalog()
 	require.NoError(t, err)
 
-	assert.Equal(t, defaults.DefaultRuntimeVersion, catalog.Runtime.Version)
+	assert.Equal(t, defaults.CamelKRuntimeCatalogVersion, catalog.Runtime.Version)
 
 	artifact := catalog.GetArtifactByScheme("knative")
 	assert.Equal(t, 1, len(artifact.Schemes))
@@ -61,3 +61,9 @@ func TestRuntimeContainsEmbeddedArtifacts(t *testing.T) {
 	assert.True(t, found)
 	assert.True(t, scheme.HTTP)
 }
+
+func TestDefaultCatalog(t *testing.T) {
+	catalog, err := DefaultCatalog()
+	require.Nil(t, err)
+	assert.NotNil(t, catalog)
+}
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index 25affd91a..fd7faa3f9 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -25,8 +25,14 @@ const (
 	// Version --
 	Version = "2.11.0-SNAPSHOT"
 
+	// DefaultRuntimeProvider --
+	DefaultRuntimeProvider = "plain-quarkus"
+
 	// DefaultRuntimeVersion --
-	DefaultRuntimeVersion = "3.15.3"
+	DefaultRuntimeVersion = "3.35.1"
+
+	// CamelKRuntimeCatalogVersion --
+	CamelKRuntimeCatalogVersion = "3.15.3"
 
 	// baseImage --
 	baseImage = "eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23"
diff --git a/script/Makefile b/script/Makefile
index f997086da..3059fda90 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -27,7 +27,11 @@ VERSIONFILE := pkg/util/defaults/defaults.go
 VERSION ?= 2.11.0-SNAPSHOT
 LAST_RELEASED_IMAGE_NAME := camel-k-operator
 LAST_RELEASED_VERSION ?= 2.10.0
-DEFAULT_RUNTIME_VERSION := 3.15.3
+DEFAULT_RUNTIME_PROVIDER := plain-quarkus
+DEFAULT_RUNTIME_VERSION := 3.35.1
+# The last camel-k-runtime catalog
+# we keep using it until we support the CamelCatalog CR
+CK_RUNTIME_CATALOG_VERSION := 3.15.3
 # Kubernetes tooling
 CONTROLLER_GEN_VERSION := v0.20.0
 CONTROLLER_GEN=$(GOBIN)/controller-gen
@@ -113,15 +117,6 @@ TEST_PREBUILD = build
 TEST_COMMON_PARALLEL_COUNT ?= 2
 TEST_ADVANCED_PARALLEL_COUNT ?= 2
 
-# OLM (Operator Lifecycle Manager and Operator Hub): uncomment to override operator settings at build time
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultOperatorName=camel-k-operator
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultPackage=camel-k
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultChannel=alpha
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultSource=community-operators
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultSourceNamespace=openshift-marketplace
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultStartingCSV=
-#GOLDFLAGS += -X github.com/apache/camel-k/v2/pkg/util/olm.DefaultGlobalNamespace=openshift-operators
-
 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
 ifeq (,$(shell go env GOBIN))
 GOBIN=$(shell go env GOPATH)/bin
@@ -192,9 +187,15 @@ codegen:
 	@echo "  // Version -- " >> $(VERSIONFILE)
 	@echo "  Version = \"$(CUSTOM_VERSION)\"" >> $(VERSIONFILE)
 	@echo "" >> $(VERSIONFILE)
+	@echo "  // DefaultRuntimeProvider -- " >> $(VERSIONFILE)
+	@echo "  DefaultRuntimeProvider = \"$(DEFAULT_RUNTIME_PROVIDER)\"" >> $(VERSIONFILE)
+	@echo "" >> $(VERSIONFILE)
 	@echo "  // DefaultRuntimeVersion -- " >> $(VERSIONFILE)
 	@echo "  DefaultRuntimeVersion = \"$(DEFAULT_RUNTIME_VERSION)\"" >> $(VERSIONFILE)
 	@echo "" >> $(VERSIONFILE)
+	@echo "  // CamelKRuntimeCatalogVersion -- " >> $(VERSIONFILE)
+	@echo "  CamelKRuntimeCatalogVersion = \"$(CK_RUNTIME_CATALOG_VERSION)\"" >> $(VERSIONFILE)
+	@echo "" >> $(VERSIONFILE)
 	@echo "  // baseImage -- " >> $(VERSIONFILE)
 	@echo "  baseImage = \"$(BASE_IMAGE)\"" >> $(VERSIONFILE)
 	@echo "" >> $(VERSIONFILE)
@@ -363,7 +364,7 @@ ifneq ($(shell uname -s 2>/dev/null || echo Unknown),Linux)
 endif
 
 build-resources:
-	./script/get_catalog.sh $(DEFAULT_RUNTIME_VERSION)
+	./script/get_catalog.sh $(CK_RUNTIME_CATALOG_VERSION)
 
 build-compile-integration-tests:
 ifndef NOTEST
@@ -448,9 +449,6 @@ DOCKER_TAG := $(CUSTOM_IMAGE):$(CUSTOM_VERSION)-$(BASE_IMAGE_VERSION)-$(IMAGE_AR
 images: build image-build build-kamel-platform
 
 image-build:
-ifneq (,$(findstring SNAPSHOT,$(DEFAULT_RUNTIME_VERSION)))
-	./script/package_maven_artifacts.sh -d "$(CAMEL_K_RUNTIME_DIR)" $(DEFAULT_RUNTIME_VERSION)
-endif
 	@echo "####### Building Camel K operator jdk $(BASE_IMAGE_VERSION) arch $(IMAGE_ARCH) container image..."
 	mkdir -p build/_maven_output
 	docker buildx build --target $(TARGET_STAGE) \
diff --git a/script/package_maven_artifacts.sh b/script/package_maven_artifacts.sh
deleted file mode 100755
index 26be424bb..000000000
--- a/script/package_maven_artifacts.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-location=$(dirname $0)
-rootdir=$(realpath ${location}/../)
-
-while getopts "d:s:" opt; do
-  case "${opt}" in
-    d)
-      local_runtime_dir="${OPTARG}"
-      ;;
-    s)
-      staging_repo="${OPTARG}"
-      ;;
-    *)
-      ;;
-  esac
-done
-shift $((OPTIND-1))
-
-if [ "$#" -lt 1 ]; then
-    echo "usage: $0 [-s <staging repository>] [-d <local Camel K runtime project directory>] <Camel K runtime version>"
-    exit 1
-fi
-
-camel_k_destination="$PWD/build/_maven_output"
-camel_k_runtime_version=$1
-maven_repo=${staging_repo:-https://repo1.maven.org/maven2}
-
-# Refresh m2 distro project
-rm -rf ${rootdir}/build/m2
-mkdir -p ${rootdir}/build/m2
-
-# Refresh maven output dir
-rm -rf ${camel_k_destination}
-mkdir -p ${camel_k_destination}
-
-if [ -z "${local_runtime_dir}" ]; then
-  # Remote M2 distro
-  if [ ! -z $staging_repo ]; then
-    # Change the settings to include the staging repo if it's not already there
-    echo "INFO: updating the settings staging repository"
-    sed -i "s;<url>https://repository\.apache\.org/content/repositories/orgapachecamel-.*</url>;<url>$staging_repo</url>;" $location/maven-settings.xml
-  fi
-
-  #TODO: remove this check once Camel K 1.16.0 is released
-  if [[ $camel_k_runtime_version != *"SNAPSHOT"* ]]; then
-    echo "WARN: Package Camel K runtime artifacts temporary removed because of https://github.com/apache/camel-k-runtime/pull/928 issue"
-    echo "Please, remove this check when Camel K Runtime 1.16.0 is officially released"
-    exit 0
-  fi
-  echo "Downloading Camel K runtime $camel_k_runtime_version M2 (may take some minute ...)"
-  mvn -q dependency:copy -Dartifact="org.apache.camel.k:apache-camel-k-runtime:$camel_k_runtime_version:zip:m2" \
-    -Dmdep.useBaseVersion=true \
-    -DoutputDirectory=${rootdir}/build/m2 \
-    -s $location/maven-settings.xml \
-    -Papache
-  unzip -q -o $PWD/build/m2/apache-camel-k-runtime-${camel_k_runtime_version}-m2.zip -d $camel_k_destination
-else
-  # Local M2 distro
-  echo "Installing local Camel K runtime $camel_k_runtime_version M2 from $local_runtime_dir (may take some minute ...)"
-  mvn -q -f $local_runtime_dir/distribution clean install
-  unzip -q -o $local_runtime_dir/distribution/target/apache-camel-k-runtime-${camel_k_runtime_version}-m2.zip -d $camel_k_destination
-fi
-
-