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 2024/01/16 11:24:01 UTC

(camel-k) 01/03: chore: remove deprecated publishing strategies

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

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

commit d9a29ebfcce553d72dece4ae5d0fb5f26d9e8cc9
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Fri Jan 12 11:57:45 2024 +0100

    chore: remove deprecated publishing strategies
    
    Removed Buildah and Kaniko which were deprecated already some time ago
---
 .github/workflows/builder.yml                      |   2 +-
 config/crd/bases/camel.apache.org_builds.yaml      |   4 +-
 .../bases/camel.apache.org_integrationkits.yaml    |   3 +-
 .../camel.apache.org_integrationplatforms.yaml     |   6 +-
 .../crd/bases/camel.apache.org_integrations.yaml   |   3 +-
 .../bases/camel.apache.org_kameletbindings.yaml    |   3 +-
 config/crd/bases/camel.apache.org_pipes.yaml       |   3 +-
 docs/antora.yml                                    |   2 -
 .../ROOT/pages/contributing/developers.adoc        |   1 -
 .../pages/installation/advanced/build-config.adoc  |   2 -
 .../ROOT/pages/installation/advanced/offline.adoc  |   8 -
 .../ROOT/pages/installation/registry/gcr.adoc      |  15 -
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |   5 +-
 e2e/install/cli/install_test.go                    |  15 -
 helm/camel-k/crds/crd-build.yaml                   |   4 +-
 helm/camel-k/crds/crd-integration-kit.yaml         |   3 +-
 helm/camel-k/crds/crd-integration-platform.yaml    |   6 +-
 helm/camel-k/crds/crd-integration.yaml             |   3 +-
 helm/camel-k/crds/crd-kamelet-binding.yaml         |   3 +-
 helm/camel-k/crds/crd-pipe.yaml                    |   3 +-
 pkg/apis/camel/v1/build_types.go                   |   4 +-
 pkg/apis/camel/v1/build_types_support.go           |   6 -
 pkg/apis/camel/v1/integrationplatform_types.go     |  11 +-
 .../camel/v1/integrationplatform_types_support.go  |  15 -
 pkg/apis/camel/v1/trait/builder.go                 |   1 +
 pkg/builder/buildah.go                             |  35 --
 pkg/builder/builder_support.go                     |  69 ----
 pkg/builder/kaniko.go                              |  49 ---
 pkg/builder/tasks.go                               |  22 --
 pkg/cmd/install.go                                 | 130 +++----
 pkg/cmd/install_test.go                            |   8 -
 pkg/controller/build/build_pod.go                  | 419 +--------------------
 pkg/controller/build/monitor_pod.go                |  15 +-
 pkg/controller/integrationplatform/initialize.go   |  70 +---
 .../integrationplatform_controller.go              |   1 -
 pkg/controller/integrationplatform/kaniko_cache.go | 120 ------
 pkg/controller/integrationplatform/warm.go         |  82 ----
 pkg/controller/integrationplatform/warm_test.go    | 138 -------
 pkg/platform/defaults.go                           |  42 ---
 pkg/platform/defaults_test.go                      |  20 +-
 pkg/resources/resources.go                         |   4 +-
 pkg/trait/builder.go                               |  67 ----
 pkg/trait/builder_test.go                          |  23 +-
 pkg/util/defaults/defaults.go                      |   6 -
 script/Makefile                                    |   8 -
 script/update_docs.sh                              |   6 -
 46 files changed, 100 insertions(+), 1365 deletions(-)

diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml
index 9938707fd..759873174 100644
--- a/.github/workflows/builder.yml
+++ b/.github/workflows/builder.yml
@@ -74,7 +74,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        publisher: ["Spectrum", "Jib"]
+        publisher: ["Jib", "Spectrum"]
 
     steps:
     - name: Checkout code
diff --git a/config/crd/bases/camel.apache.org_builds.yaml b/config/crd/bases/camel.apache.org_builds.yaml
index 3cb3ea1b6..6fd600e23 100644
--- a/config/crd/bases/camel.apache.org_builds.yaml
+++ b/config/crd/bases/camel.apache.org_builds.yaml
@@ -149,7 +149,7 @@ spec:
                   properties:
                     buildah:
                       description: 'a BuildahTask, for Buildah strategy Deprecated:
-                        use spectrum, jib or s2i instead'
+                        use spectrum, jib, s2i or a custom publishing strategy instead'
                       properties:
                         baseImage:
                           description: base image layer
@@ -914,7 +914,7 @@ spec:
                       type: object
                     kaniko:
                       description: 'a KanikoTask, for Kaniko strategy Deprecated:
-                        use spectrum, jib or s2i instead'
+                        use spectrum, jib, s2i or a custom publishing strategy instead'
                       properties:
                         baseImage:
                           description: base image layer
diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml b/config/crd/bases/camel.apache.org_integrationkits.yaml
index 72b9037b8..da6585701 100644
--- a/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -317,7 +317,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/config/crd/bases/camel.apache.org_integrationplatforms.yaml b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index 85ae39af3..55e738b24 100644
--- a/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -622,7 +622,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
@@ -2512,7 +2513,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml
index 1a25cc2cb..c22c6db6b 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -6535,7 +6535,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/config/crd/bases/camel.apache.org_kameletbindings.yaml b/config/crd/bases/camel.apache.org_kameletbindings.yaml
index 6b119dfa4..dd9edf480 100644
--- a/config/crd/bases/camel.apache.org_kameletbindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -6820,7 +6820,8 @@ spec:
                             type: array
                           verbose:
                             description: Enable verbose logging on build components
-                              that support it (e.g. Kaniko build pod).
+                              that support it (e.g. Kaniko build pod). Deprecated
+                              no longer in use
                             type: boolean
                         type: object
                       camel:
diff --git a/config/crd/bases/camel.apache.org_pipes.yaml b/config/crd/bases/camel.apache.org_pipes.yaml
index 223dbb9fc..eb1bfe2f6 100644
--- a/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/config/crd/bases/camel.apache.org_pipes.yaml
@@ -6818,7 +6818,8 @@ spec:
                             type: array
                           verbose:
                             description: Enable verbose logging on build components
-                              that support it (e.g. Kaniko build pod).
+                              that support it (e.g. Kaniko build pod). Deprecated
+                              no longer in use
                             type: boolean
                         type: object
                       camel:
diff --git a/docs/antora.yml b/docs/antora.yml
index e19fc0874..d07a4a098 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -37,8 +37,6 @@ asciidoc:
     camel-quarkus-version: 3.2.3
     camel-quarkus-docs-version: 3.2.x
     quarkus-version: 3.2.9.Final
-    buildah-version: 1.30.0
-    kaniko-version: 1.9.1
     kustomize-version: 4.5.4
     kubernetes-api-version: 0.27.7
     operator-fwk-api-version: 0.20.0
diff --git a/docs/modules/ROOT/pages/contributing/developers.adoc b/docs/modules/ROOT/pages/contributing/developers.adoc
index 5629b98ce..8d662ba3b 100644
--- a/docs/modules/ROOT/pages/contributing/developers.adoc
+++ b/docs/modules/ROOT/pages/contributing/developers.adoc
@@ -222,7 +222,6 @@ When configuring the IDE task, make sure to add all required environment variabl
 After you set up the IDE task, with Java 11+ to be used by default, you can run and debug the operator process.
 
 NOTE: The operator can be fully debugged in CRC, because it uses OpenShift S2I binary builds under the hood.
-The build phase cannot be (currently) debugged in Minikube because the Kaniko builder requires that the operator and the publisher pod share a common persistent volume.
 
 [[publishing]]
 == Building Metadata for Publishing the Operator in Operator Hub
diff --git a/docs/modules/ROOT/pages/installation/advanced/build-config.adoc b/docs/modules/ROOT/pages/installation/advanced/build-config.adoc
index 6c6b6d4a6..0de388415 100644
--- a/docs/modules/ROOT/pages/installation/advanced/build-config.adoc
+++ b/docs/modules/ROOT/pages/installation/advanced/build-config.adoc
@@ -11,8 +11,6 @@ The `routine` strategy (default) is in general faster as it does not require Kub
 
 The `pod` strategy is **always** used when running a Quarkus native build (as it requires certain tools not available in the operator container). You can also use this strategy when you want to have a higher level of concurrency. Although a bit slower (it requires Kubernetes to spin off a new Pod), this strategy will guarantee the execution of each parallel build in a timely manner.
 
-NOTE: the `pod` strategy was also required when using the now deprecated Buildah or Kaniko publishing strategy.
-
 Beside the build strategy, there are other configuration you can fine tune for each single build (via builder trait) or in the `.spec.build.buildConfiguration` of the IntegrationPlatform if you want to apply such configuration to all your builds. See the Builder trait page for more information.
 
 The most relevant are the `resource` and `limit` parameters which can be used to control how much resources to give to builder Pods. Then you can configure the `orderStrategy`, setting a `sequential` (single build), `fifo` (parallel build started in FIFO order) or `dependencies` (parallel build holding those applications which may depends on other because of xref:architecture/incremental-image.adoc[incremental image]). Finally you can include any `mavenProfile` to the build in order to i [...]
diff --git a/docs/modules/ROOT/pages/installation/advanced/offline.adoc b/docs/modules/ROOT/pages/installation/advanced/offline.adoc
index 6edf96e65..f221dc196 100644
--- a/docs/modules/ROOT/pages/installation/advanced/offline.adoc
+++ b/docs/modules/ROOT/pages/installation/advanced/offline.adoc
@@ -23,14 +23,6 @@ We cannot provide any specific guideline on how to preload images in the cluster
 
 The last one is the image used in the Camel K Runtime 2.16.0 version (the default one at the time of writing). Make sure to identify in the catalog (`.spec.runtime.metadata.quarkus.native-builder-image`) the one required in your installation.
 
-If you also plan to use Buildah or Kaniko strategy, you need to provide those images as well:
-
-* `quay.io/buildah/stable`
-* `gcr.io/kaniko-project/executor`
-* `gcr.io/kaniko-project/warmer`
-
-Same thing if you are planning to use any xref:pipeline/pipeline.adoc[custom pipeline]. You need to upload the expected image ahead of time.
-
 If all the above is set, then, you should be ready to pull and push from the container registry in Camel K as well.
 
 [[maven]]
diff --git a/docs/modules/ROOT/pages/installation/registry/gcr.adoc b/docs/modules/ROOT/pages/installation/registry/gcr.adoc
index bc6cdfb0c..df470f70c 100644
--- a/docs/modules/ROOT/pages/installation/registry/gcr.adoc
+++ b/docs/modules/ROOT/pages/installation/registry/gcr.adoc
@@ -17,21 +17,6 @@ The best way to obtain a valid key is from the Google web console:
 
 A `.json` file with the key will be downloaded to your machine. You need to store that key in a Kubernetes secret.
 
-It's **important** to rename the file you've just downloaded to `kaniko-secret.json` (make sure you write it correctly).
-After the renaming, execute the following command to create the secret:
-
-```
-kubectl create secret generic kaniko-secret --from-file=kaniko-secret.json
-```
-
-Ensure you have the https://github.com/apache/camel-k/releases[*kamel* CLI] on your system path.
-
-You should now execute the following command to install cluster resources and the operator (in the current namespace):
-
-```
-kamel install --build-publish-strategy=Kaniko --registry gcr.io --organization <<your-project-id>> --registry-secret kaniko-secret
-```
-
 Use the project id of your project on GKE. Usually this can be obtained from the connection string.
 
 NOTE: the project id is **NOT** the cluster id!
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 7cafb6fc3..0a65eef48 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -5206,7 +5206,7 @@ a PackageTask, used to package the project
 
 
 a BuildahTask, for Buildah strategy
-Deprecated: use spectrum, jib or s2i instead
+Deprecated: use spectrum, jib, s2i or a custom publishing strategy instead
 
 |`kaniko` +
 *xref:#_camel_apache_org_v1_KanikoTask[KanikoTask]*
@@ -5214,7 +5214,7 @@ Deprecated: use spectrum, jib or s2i instead
 
 
 a KanikoTask, for Kaniko strategy
-Deprecated: use spectrum, jib or s2i instead
+Deprecated: use spectrum, jib, s2i or a custom publishing strategy instead
 
 |`spectrum` +
 *xref:#_camel_apache_org_v1_SpectrumTask[SpectrumTask]*
@@ -5817,6 +5817,7 @@ bool
 
 
 Enable verbose logging on build components that support it (e.g. Kaniko build pod).
+Deprecated no longer in use
 
 |`properties` +
 []string
diff --git a/e2e/install/cli/install_test.go b/e2e/install/cli/install_test.go
index 5d58a6575..f5d8780ca 100644
--- a/e2e/install/cli/install_test.go
+++ b/e2e/install/cli/install_test.go
@@ -220,18 +220,3 @@ func TestInstallDebugLogging(t *testing.T) {
 		Eventually(OperatorEnvVarValue(ns, "LOG_LEVEL"), TestTimeoutLong).Should(Equal("debug"))
 	})
 }
-
-func TestInstallWithPublishStrategyOptions(t *testing.T) {
-	WithNewTestNamespace(t, func(ns string) {
-		operatorID := fmt.Sprintf("camel-k-%s", ns)
-		Expect(KamelInstallWithID(operatorID, ns, "--build-publish-strategy", "Kaniko", "--build-publish-strategy-option", "KanikoExecutorImage=foo", "--build-publish-strategy-option", "KanikoWarmerImage=bar").Execute()).To(Succeed())
-		Eventually(OperatorPod(ns)).ShouldNot(BeNil())
-		Eventually(Platform(ns)).ShouldNot(BeNil())
-		Eventually(func() map[string]string {
-			return Platform(ns)().Spec.Build.PublishStrategyOptions
-		}).Should(HaveKeyWithValue("KanikoExecutorImage", "foo"))
-		Eventually(func() map[string]string {
-			return Platform(ns)().Spec.Build.PublishStrategyOptions
-		}).Should(HaveKeyWithValue("KanikoWarmerImage", "bar"))
-	})
-}
diff --git a/helm/camel-k/crds/crd-build.yaml b/helm/camel-k/crds/crd-build.yaml
index 3cb3ea1b6..6fd600e23 100644
--- a/helm/camel-k/crds/crd-build.yaml
+++ b/helm/camel-k/crds/crd-build.yaml
@@ -149,7 +149,7 @@ spec:
                   properties:
                     buildah:
                       description: 'a BuildahTask, for Buildah strategy Deprecated:
-                        use spectrum, jib or s2i instead'
+                        use spectrum, jib, s2i or a custom publishing strategy instead'
                       properties:
                         baseImage:
                           description: base image layer
@@ -914,7 +914,7 @@ spec:
                       type: object
                     kaniko:
                       description: 'a KanikoTask, for Kaniko strategy Deprecated:
-                        use spectrum, jib or s2i instead'
+                        use spectrum, jib, s2i or a custom publishing strategy instead'
                       properties:
                         baseImage:
                           description: base image layer
diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml
index 72b9037b8..da6585701 100644
--- a/helm/camel-k/crds/crd-integration-kit.yaml
+++ b/helm/camel-k/crds/crd-integration-kit.yaml
@@ -317,7 +317,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/helm/camel-k/crds/crd-integration-platform.yaml b/helm/camel-k/crds/crd-integration-platform.yaml
index 85ae39af3..55e738b24 100644
--- a/helm/camel-k/crds/crd-integration-platform.yaml
+++ b/helm/camel-k/crds/crd-integration-platform.yaml
@@ -622,7 +622,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
@@ -2512,7 +2513,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml
index 1a25cc2cb..c22c6db6b 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -6535,7 +6535,8 @@ spec:
                         type: array
                       verbose:
                         description: Enable verbose logging on build components that
-                          support it (e.g. Kaniko build pod).
+                          support it (e.g. Kaniko build pod). Deprecated no longer
+                          in use
                         type: boolean
                     type: object
                   camel:
diff --git a/helm/camel-k/crds/crd-kamelet-binding.yaml b/helm/camel-k/crds/crd-kamelet-binding.yaml
index 6b119dfa4..dd9edf480 100644
--- a/helm/camel-k/crds/crd-kamelet-binding.yaml
+++ b/helm/camel-k/crds/crd-kamelet-binding.yaml
@@ -6820,7 +6820,8 @@ spec:
                             type: array
                           verbose:
                             description: Enable verbose logging on build components
-                              that support it (e.g. Kaniko build pod).
+                              that support it (e.g. Kaniko build pod). Deprecated
+                              no longer in use
                             type: boolean
                         type: object
                       camel:
diff --git a/helm/camel-k/crds/crd-pipe.yaml b/helm/camel-k/crds/crd-pipe.yaml
index 223dbb9fc..eb1bfe2f6 100644
--- a/helm/camel-k/crds/crd-pipe.yaml
+++ b/helm/camel-k/crds/crd-pipe.yaml
@@ -6818,7 +6818,8 @@ spec:
                             type: array
                           verbose:
                             description: Enable verbose logging on build components
-                              that support it (e.g. Kaniko build pod).
+                              that support it (e.g. Kaniko build pod). Deprecated
+                              no longer in use
                             type: boolean
                         type: object
                       camel:
diff --git a/pkg/apis/camel/v1/build_types.go b/pkg/apis/camel/v1/build_types.go
index a843eea5b..188aa0ad1 100644
--- a/pkg/apis/camel/v1/build_types.go
+++ b/pkg/apis/camel/v1/build_types.go
@@ -67,10 +67,10 @@ type Task struct {
 	// Application Publishing
 
 	// a BuildahTask, for Buildah strategy
-	// Deprecated: use spectrum, jib or s2i instead
+	// Deprecated: use spectrum, jib, s2i or a custom publishing strategy instead
 	Buildah *BuildahTask `json:"buildah,omitempty"`
 	// a KanikoTask, for Kaniko strategy
-	// Deprecated: use spectrum, jib or s2i instead
+	// Deprecated: use spectrum, jib, s2i or a custom publishing strategy instead
 	Kaniko *KanikoTask `json:"kaniko,omitempty"`
 	// a SpectrumTask, for Spectrum strategy
 	Spectrum *SpectrumTask `json:"spectrum,omitempty"`
diff --git a/pkg/apis/camel/v1/build_types_support.go b/pkg/apis/camel/v1/build_types_support.go
index a9777b65f..251e1cf8e 100644
--- a/pkg/apis/camel/v1/build_types_support.go
+++ b/pkg/apis/camel/v1/build_types_support.go
@@ -104,12 +104,6 @@ func ConfigurationTasksByName(tasks []Task, name string) *BuildConfiguration {
 		if t.Jib != nil && t.Jib.Name == name {
 			return &t.Jib.Configuration
 		}
-		if t.Buildah != nil && t.Buildah.Name == name {
-			return &t.Buildah.Configuration
-		}
-		if t.Kaniko != nil && t.Kaniko.Name == name {
-			return &t.Kaniko.Configuration
-		}
 	}
 	return &BuildConfiguration{}
 }
diff --git a/pkg/apis/camel/v1/integrationplatform_types.go b/pkg/apis/camel/v1/integrationplatform_types.go
index 8f5dea268..62470188c 100644
--- a/pkg/apis/camel/v1/integrationplatform_types.go
+++ b/pkg/apis/camel/v1/integrationplatform_types.go
@@ -153,14 +153,6 @@ type IntegrationPlatformKameletRepositorySpec struct {
 type IntegrationPlatformBuildPublishStrategy string
 
 const (
-	// IntegrationPlatformBuildPublishStrategyBuildah uses Buildah project (https://buildah.io/)
-	// in order to push the incremental images to the image repository. It can be used with `pod` BuildStrategy.
-	// Deprecated: use Spectrum, Jib or S2I instead.
-	IntegrationPlatformBuildPublishStrategyBuildah IntegrationPlatformBuildPublishStrategy = "Buildah"
-	// IntegrationPlatformBuildPublishStrategyKaniko uses Kaniko project (https://github.com/GoogleContainerTools/kaniko)
-	// in order to push the incremental images to the image repository. It can be used with `pod` BuildStrategy.
-	// Deprecated: use Spectrum, Jib or S2I instead.
-	IntegrationPlatformBuildPublishStrategyKaniko IntegrationPlatformBuildPublishStrategy = "Kaniko"
 	// IntegrationPlatformBuildPublishStrategyS2I uses the Source to Images (S2I) feature
 	// (https://docs.openshift.com/container-platform/4.9/openshift_images/create-images.html#images-create-s2i_create-images)
 	// provided by an OpenShift cluster in order to create and push the images to the registry. It is the default choice on OpenShift cluster.
@@ -175,8 +167,6 @@ const (
 
 // IntegrationPlatformBuildPublishStrategies the list of all available publish strategies.
 var IntegrationPlatformBuildPublishStrategies = []IntegrationPlatformBuildPublishStrategy{
-	IntegrationPlatformBuildPublishStrategyBuildah,
-	IntegrationPlatformBuildPublishStrategyKaniko,
 	IntegrationPlatformBuildPublishStrategyS2I,
 	IntegrationPlatformBuildPublishStrategySpectrum,
 	IntegrationPlatformBuildPublishStrategyJib,
@@ -197,6 +187,7 @@ const (
 	// IntegrationPlatformPhaseCreating when the IntegrationPlatform is under creation process.
 	IntegrationPlatformPhaseCreating IntegrationPlatformPhase = "Creating"
 	// IntegrationPlatformPhaseWarming when the IntegrationPlatform is warming (ie, creating Kaniko cache).
+	// Deprecated no longer in use.
 	IntegrationPlatformPhaseWarming IntegrationPlatformPhase = "Warming"
 	// IntegrationPlatformPhaseReady when the IntegrationPlatform is ready.
 	IntegrationPlatformPhaseReady IntegrationPlatformPhase = "Ready"
diff --git a/pkg/apis/camel/v1/integrationplatform_types_support.go b/pkg/apis/camel/v1/integrationplatform_types_support.go
index fb216a8cd..e3f9e4fbd 100644
--- a/pkg/apis/camel/v1/integrationplatform_types_support.go
+++ b/pkg/apis/camel/v1/integrationplatform_types_support.go
@@ -18,8 +18,6 @@ limitations under the License.
 package v1
 
 import (
-	"strconv"
-
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
@@ -173,19 +171,6 @@ func (in *IntegrationPlatformStatus) RemoveCondition(condType IntegrationPlatfor
 	in.Conditions = newConditions
 }
 
-// IsOptionEnabled tells if provided option key is present in PublishStrategyOptions and enabled.
-func (b IntegrationPlatformBuildSpec) IsOptionEnabled(option string) bool {
-	// Key defined in builder/kaniko.go
-	if enabled, ok := b.PublishStrategyOptions[option]; ok {
-		res, err := strconv.ParseBool(enabled)
-		if err != nil {
-			return false
-		}
-		return res
-	}
-	return false
-}
-
 // AddOption add a publish strategy option.
 func (b *IntegrationPlatformBuildSpec) AddOption(option string, value string) {
 	options := b.PublishStrategyOptions
diff --git a/pkg/apis/camel/v1/trait/builder.go b/pkg/apis/camel/v1/trait/builder.go
index c98feafa6..b628a190f 100644
--- a/pkg/apis/camel/v1/trait/builder.go
+++ b/pkg/apis/camel/v1/trait/builder.go
@@ -24,6 +24,7 @@ package trait
 type BuilderTrait struct {
 	PlatformBaseTrait `property:",squash" json:",inline"`
 	// Enable verbose logging on build components that support it (e.g. Kaniko build pod).
+	// Deprecated no longer in use
 	Verbose *bool `property:"verbose" json:"verbose,omitempty"`
 	// A list of properties to be provided to the build task
 	Properties []string `property:"properties" json:"properties,omitempty"`
diff --git a/pkg/builder/buildah.go b/pkg/builder/buildah.go
deleted file mode 100644
index d1ca940cb..000000000
--- a/pkg/builder/buildah.go
+++ /dev/null
@@ -1,35 +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.
-*/
-
-package builder
-
-const BuildahPlatform = "BuildahPlatform"
-const BuildahImage = "BuildahImage"
-const BuildahDefaultImageName = "quay.io/buildah/stable"
-const BuildahDefaultBaseImageName = "docker.io/library/eclipse-temurin:17"
-
-var buildahSupportedOptions = map[string]PublishStrategyOption{
-	BuildahPlatform: {
-		Name:        BuildahPlatform,
-		description: "The attribute platform for buildah",
-	},
-	BuildahImage: {
-		Name:         BuildahImage,
-		description:  "The docker image to use for Buildah",
-		defaultValue: BuildahDefaultImageName,
-	},
-}
diff --git a/pkg/builder/builder_support.go b/pkg/builder/builder_support.go
deleted file mode 100644
index beef7ef63..000000000
--- a/pkg/builder/builder_support.go
+++ /dev/null
@@ -1,69 +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.
-*/
-
-package builder
-
-import (
-	"fmt"
-
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-)
-
-type PublishStrategyOption struct {
-	Name         string
-	description  string
-	defaultValue string
-}
-
-func (o *PublishStrategyOption) ToString() string {
-	if o.defaultValue == "" {
-		return fmt.Sprintf("%s: %s", o.Name, o.description)
-	}
-	return fmt.Sprintf("%s: %s, default %s", o.Name, o.description, o.defaultValue)
-}
-
-// GetSupportedPublishStrategyOptions provides the supported options for the given strategy. Returns nil if no options are supported.
-func GetSupportedPublishStrategyOptions(strategy v1.IntegrationPlatformBuildPublishStrategy) []PublishStrategyOption {
-	var supportedOptions map[string]PublishStrategyOption
-	switch strategy {
-	case v1.IntegrationPlatformBuildPublishStrategyKaniko:
-		supportedOptions = kanikoSupportedOptions
-	case v1.IntegrationPlatformBuildPublishStrategyBuildah:
-		supportedOptions = buildahSupportedOptions
-	default:
-		return nil
-	}
-	result := make([]PublishStrategyOption, 0, len(supportedOptions))
-	for _, value := range supportedOptions {
-		result = append(result, value)
-	}
-	return result
-}
-
-// IsSupportedPublishStrategyOption indicates whether the given option name is supported for the given strategy.
-func IsSupportedPublishStrategyOption(strategy v1.IntegrationPlatformBuildPublishStrategy, name string) bool {
-	var supportedOption bool
-	switch strategy {
-	case v1.IntegrationPlatformBuildPublishStrategyKaniko:
-		_, supportedOption = kanikoSupportedOptions[name]
-	case v1.IntegrationPlatformBuildPublishStrategyBuildah:
-		_, supportedOption = buildahSupportedOptions[name]
-	default:
-		supportedOption = false
-	}
-	return supportedOption
-}
diff --git a/pkg/builder/kaniko.go b/pkg/builder/kaniko.go
deleted file mode 100644
index 5800cfb60..000000000
--- a/pkg/builder/kaniko.go
+++ /dev/null
@@ -1,49 +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.
-*/
-
-package builder
-
-// KanikoCacheDir is the cache directory for Kaniko builds (mounted into the Kaniko pod).
-const KanikoCacheDir = "/kaniko/cache"
-const KanikoPVCName = "KanikoPersistentVolumeClaim"
-const KanikoBuildCacheEnabled = "KanikoBuildCacheEnabled"
-const KanikoExecutorImage = "KanikoExecutorImage"
-const KanikoWarmerImage = "KanikoWarmerImage"
-const KanikoDefaultExecutorImageName = "gcr.io/kaniko-project/executor"
-const KanikoDefaultWarmerImageName = "gcr.io/kaniko-project/warmer"
-
-var kanikoSupportedOptions = map[string]PublishStrategyOption{
-	KanikoPVCName: {
-		Name:        KanikoPVCName,
-		description: "The name of the PersistentVolumeClaim",
-	},
-	KanikoBuildCacheEnabled: {
-		Name:         KanikoBuildCacheEnabled,
-		description:  "To enable or disable the Kaniko cache",
-		defaultValue: "false",
-	},
-	KanikoExecutorImage: {
-		Name:         KanikoExecutorImage,
-		description:  "The docker image of the Kaniko executor",
-		defaultValue: KanikoDefaultExecutorImageName,
-	},
-	KanikoWarmerImage: {
-		Name:         KanikoWarmerImage,
-		description:  "The docker image of the Kaniko warmer",
-		defaultValue: KanikoDefaultWarmerImageName,
-	},
-}
diff --git a/pkg/builder/tasks.go b/pkg/builder/tasks.go
index c61a8df2f..2e18403ce 100644
--- a/pkg/builder/tasks.go
+++ b/pkg/builder/tasks.go
@@ -55,18 +55,6 @@ func (b *Build) Task(task v1.Task) Task {
 			build: b.build,
 			task:  task.Package,
 		}
-	// Buildah tasks are not supported in routines
-	case task.Buildah != nil:
-		return &unsupportedTask{
-			build: b.build,
-			name:  task.Buildah.Name,
-		}
-	// Kaniko tasks are not supported in routines
-	case task.Kaniko != nil:
-		return &unsupportedTask{
-			build: b.build,
-			name:  task.Kaniko.Name,
-		}
 	case task.Spectrum != nil:
 		return &spectrumTask{
 			c:     b.builder.client,
@@ -152,16 +140,6 @@ func (b *Build) TaskByName(name string) Task {
 				build: b.build,
 				task:  task.Package,
 			}
-		case task.Buildah != nil && task.Buildah.Name == name:
-			return &unsupportedTask{
-				build: b.build,
-				name:  task.Buildah.Name,
-			}
-		case task.Kaniko != nil && task.Kaniko.Name == name:
-			return &unsupportedTask{
-				build: b.build,
-				name:  task.Kaniko.Name,
-			}
 		case task.Spectrum != nil && task.Spectrum.Name == name:
 			return &spectrumTask{
 				c:     b.builder.client,
diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go
index 7c55ea409..80a0f66fe 100644
--- a/pkg/cmd/install.go
+++ b/pkg/cmd/install.go
@@ -43,7 +43,6 @@ import (
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/builder"
 	"github.com/apache/camel-k/v2/pkg/client"
 	"github.com/apache/camel-k/v2/pkg/install"
 	"github.com/apache/camel-k/v2/pkg/util"
@@ -162,53 +161,52 @@ func newCmdInstall(rootCmdOptions *RootCmdOptions) (*cobra.Command, *installCmdO
 
 type installCmdOptions struct {
 	*RootCmdOptions
-	Wait                        bool `mapstructure:"wait"`
-	ClusterSetupOnly            bool `mapstructure:"cluster-setup"`
-	SkipOperatorSetup           bool `mapstructure:"skip-operator-setup"`
-	SkipClusterSetup            bool `mapstructure:"skip-cluster-setup"`
-	SkipRegistrySetup           bool `mapstructure:"skip-registry-setup"`
-	SkipDefaultKameletsSetup    bool `mapstructure:"skip-default-kamelets-setup"`
-	ExampleSetup                bool `mapstructure:"example"`
-	Global                      bool `mapstructure:"global"`
-	Save                        bool `mapstructure:"save" kamel:"omitsave"`
-	Force                       bool `mapstructure:"force"`
-	Olm                         bool `mapstructure:"olm"`
-	olmOptions                  olm.Options
-	ClusterType                 string   `mapstructure:"cluster-type"`
-	OutputFormat                string   `mapstructure:"output"`
-	RuntimeVersion              string   `mapstructure:"runtime-version"`
-	BaseImage                   string   `mapstructure:"base-image"`
-	OperatorID                  string   `mapstructure:"operator-id"`
-	OperatorImage               string   `mapstructure:"operator-image"`
-	OperatorImagePullPolicy     string   `mapstructure:"operator-image-pull-policy"`
-	BuildStrategy               string   `mapstructure:"build-strategy"`
-	BuildOrderStrategy          string   `mapstructure:"build-order-strategy"`
-	BuildPublishStrategy        string   `mapstructure:"build-publish-strategy"`
-	BuildPublishStrategyOptions []string `mapstructure:"build-publish-strategy-options"`
-	BuildTimeout                string   `mapstructure:"build-timeout"`
-	MavenExtensions             []string `mapstructure:"maven-extensions"`
-	MavenLocalRepository        string   `mapstructure:"maven-local-repository"`
-	MavenProperties             []string `mapstructure:"maven-properties"`
-	MavenRepositories           []string `mapstructure:"maven-repositories"`
-	MavenSettings               string   `mapstructure:"maven-settings"`
-	MavenCASecret               string   `mapstructure:"maven-ca-secret"`
-	MavenCLIOptions             []string `mapstructure:"maven-cli-options"`
-	HealthPort                  int32    `mapstructure:"health-port"`
-	MaxRunningBuilds            int32    `mapstructure:"max-running-pipelines"`
-	Monitoring                  bool     `mapstructure:"monitoring"`
-	MonitoringPort              int32    `mapstructure:"monitoring-port"`
-	Debugging                   bool     `mapstructure:"debugging"`
-	DebuggingPort               int32    `mapstructure:"debugging-port"`
-	DebuggingPath               string   `mapstructure:"debugging-path"`
-	TraitProfile                string   `mapstructure:"trait-profile"`
-	Tolerations                 []string `mapstructure:"tolerations"`
-	NodeSelectors               []string `mapstructure:"node-selectors"`
-	ResourcesRequirements       []string `mapstructure:"operator-resources"`
-	LogLevel                    string   `mapstructure:"log-level"`
-	EnvVars                     []string `mapstructure:"operator-env-vars"`
-	registry                    v1.RegistrySpec
-	registryAuth                registry.Auth
-	RegistryAuthFile            string `mapstructure:"registry-auth-file"`
+	Wait                     bool `mapstructure:"wait"`
+	ClusterSetupOnly         bool `mapstructure:"cluster-setup"`
+	SkipOperatorSetup        bool `mapstructure:"skip-operator-setup"`
+	SkipClusterSetup         bool `mapstructure:"skip-cluster-setup"`
+	SkipRegistrySetup        bool `mapstructure:"skip-registry-setup"`
+	SkipDefaultKameletsSetup bool `mapstructure:"skip-default-kamelets-setup"`
+	ExampleSetup             bool `mapstructure:"example"`
+	Global                   bool `mapstructure:"global"`
+	Save                     bool `mapstructure:"save" kamel:"omitsave"`
+	Force                    bool `mapstructure:"force"`
+	Olm                      bool `mapstructure:"olm"`
+	olmOptions               olm.Options
+	ClusterType              string   `mapstructure:"cluster-type"`
+	OutputFormat             string   `mapstructure:"output"`
+	RuntimeVersion           string   `mapstructure:"runtime-version"`
+	BaseImage                string   `mapstructure:"base-image"`
+	OperatorID               string   `mapstructure:"operator-id"`
+	OperatorImage            string   `mapstructure:"operator-image"`
+	OperatorImagePullPolicy  string   `mapstructure:"operator-image-pull-policy"`
+	BuildStrategy            string   `mapstructure:"build-strategy"`
+	BuildOrderStrategy       string   `mapstructure:"build-order-strategy"`
+	BuildPublishStrategy     string   `mapstructure:"build-publish-strategy"`
+	BuildTimeout             string   `mapstructure:"build-timeout"`
+	MavenExtensions          []string `mapstructure:"maven-extensions"`
+	MavenLocalRepository     string   `mapstructure:"maven-local-repository"`
+	MavenProperties          []string `mapstructure:"maven-properties"`
+	MavenRepositories        []string `mapstructure:"maven-repositories"`
+	MavenSettings            string   `mapstructure:"maven-settings"`
+	MavenCASecret            string   `mapstructure:"maven-ca-secret"`
+	MavenCLIOptions          []string `mapstructure:"maven-cli-options"`
+	HealthPort               int32    `mapstructure:"health-port"`
+	MaxRunningBuilds         int32    `mapstructure:"max-running-pipelines"`
+	Monitoring               bool     `mapstructure:"monitoring"`
+	MonitoringPort           int32    `mapstructure:"monitoring-port"`
+	Debugging                bool     `mapstructure:"debugging"`
+	DebuggingPort            int32    `mapstructure:"debugging-port"`
+	DebuggingPath            string   `mapstructure:"debugging-path"`
+	TraitProfile             string   `mapstructure:"trait-profile"`
+	Tolerations              []string `mapstructure:"tolerations"`
+	NodeSelectors            []string `mapstructure:"node-selectors"`
+	ResourcesRequirements    []string `mapstructure:"operator-resources"`
+	LogLevel                 string   `mapstructure:"log-level"`
+	EnvVars                  []string `mapstructure:"operator-env-vars"`
+	registry                 v1.RegistrySpec
+	registryAuth             registry.Auth
+	RegistryAuthFile         string `mapstructure:"registry-auth-file"`
 }
 
 func (o *installCmdOptions) install(cmd *cobra.Command, _ []string) error {
@@ -591,11 +589,6 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 			}
 		}
 	}
-	if len(o.BuildPublishStrategyOptions) > 0 {
-		if err = o.addBuildPublishStrategyOptions(&platform.Spec.Build); err != nil {
-			return nil, err
-		}
-	}
 	// Always create a platform in the namespace where the operator is located
 	err = install.ObjectOrCollect(o.Context, c, namespace, output, o.Force, platform)
 	if err != nil {
@@ -792,37 +785,6 @@ func (o *installCmdOptions) validate(_ *cobra.Command, _ []string) error {
 	return result
 }
 
-// addBuildPublishStrategyOptions parses and adds all the build publish strategy options to the given IntegrationPlatformBuildSpec.
-func (o *installCmdOptions) addBuildPublishStrategyOptions(pipeline *v1.IntegrationPlatformBuildSpec) error {
-	for _, option := range o.BuildPublishStrategyOptions {
-		kv := strings.Split(option, "=")
-		if len(kv) == 2 {
-			key := kv[0]
-			if builder.IsSupportedPublishStrategyOption(pipeline.PublishStrategy, key) {
-				pipeline.AddOption(key, kv[1])
-			} else {
-				return fmt.Errorf("build publish strategy option '%s' not supported. %s", option, supportedOptionsAsString(pipeline.PublishStrategy))
-			}
-		} else {
-			return fmt.Errorf("build publish strategy option '%s' not in the expected format (name=value)", option)
-		}
-	}
-	return nil
-}
-
-// supportedOptionsAsString provides all the supported options for the given strategy as string.
-func supportedOptionsAsString(strategy v1.IntegrationPlatformBuildPublishStrategy) string {
-	options := builder.GetSupportedPublishStrategyOptions(strategy)
-	if len(options) == 0 {
-		return fmt.Sprintf("no options are supported for the strategy '%s'.", strategy)
-	}
-	var sb strings.Builder
-	for _, supportedOption := range builder.GetSupportedPublishStrategyOptions(strategy) {
-		sb.WriteString(fmt.Sprintf("* %s\n", supportedOption.ToString()))
-	}
-	return fmt.Sprintf("\n\nSupported options for the strategy '%s':\n\n%s", strategy, sb.String())
-}
-
 func decodeMavenSettings(mavenSettings string) (v1.ValueSource, error) {
 	return v1.DecodeValueSource(mavenSettings, "settings.xml", "illegal maven setting definition, syntax: configmap|secret:resource-name[/settings path]")
 }
diff --git a/pkg/cmd/install_test.go b/pkg/cmd/install_test.go
index ad222ab26..09f778bee 100644
--- a/pkg/cmd/install_test.go
+++ b/pkg/cmd/install_test.go
@@ -163,14 +163,6 @@ func TestInstallHealthFlag(t *testing.T) {
 	assert.Equal(t, int32(7777), installCmdOptions.HealthPort)
 }
 
-func TestInstallBuildPublishStrategyOptions(t *testing.T) {
-	installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
-	_, err := test.ExecuteCommand(rootCmd, cmdInstall, "--build-publish-strategy-option", "foo1=bar1", "--build-publish-strategy-option", "foo2=bar2")
-	assert.Nil(t, err)
-	assert.Equal(t, "foo1=bar1", installCmdOptions.BuildPublishStrategyOptions[0])
-	assert.Equal(t, "foo2=bar2", installCmdOptions.BuildPublishStrategyOptions[1])
-}
-
 func TestInstallLocalRepositoryFlag(t *testing.T) {
 	installCmdOptions, rootCmd, _ := initializeInstallCmdOptions(t)
 	_, err := test.ExecuteCommand(rootCmd, cmdInstall, "--maven-local-repository", "someString")
diff --git a/pkg/controller/build/build_pod.go b/pkg/controller/build/build_pod.go
index 46fd34d55..ab9c433d5 100644
--- a/pkg/controller/build/build_pod.go
+++ b/pkg/controller/build/build_pod.go
@@ -19,12 +19,8 @@ package build
 
 import (
 	"context"
-	"errors"
-	"fmt"
 	"os"
 	"path/filepath"
-	"strconv"
-	"strings"
 
 	corev1 "k8s.io/api/core/v1"
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -32,10 +28,8 @@ import (
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/builder"
 	"github.com/apache/camel-k/v2/pkg/client"
 	"github.com/apache/camel-k/v2/pkg/platform"
-	"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/openshift"
 )
@@ -45,76 +39,7 @@ const (
 	builderVolume = "camel-k-builder"
 )
 
-type registryConfigMap struct {
-	fileName    string
-	mountPath   string
-	destination string
-}
-
-var (
-	serviceCABuildahRegistryConfigMap = registryConfigMap{
-		fileName:    "service-ca.crt",
-		mountPath:   "/etc/containers/certs.d",
-		destination: "service-ca.crt",
-	}
-
-	buildahRegistryConfigMaps = []registryConfigMap{
-		serviceCABuildahRegistryConfigMap,
-	}
-)
-
-type registrySecret struct {
-	fileName    string
-	mountPath   string
-	destination string
-	refEnv      string
-}
-
-var (
-	plainDockerBuildahRegistrySecret = registrySecret{
-		fileName:    corev1.DockerConfigKey,
-		mountPath:   "/buildah/.docker",
-		destination: "config.json",
-	}
-	standardDockerBuildahRegistrySecret = registrySecret{
-		fileName:    corev1.DockerConfigJsonKey,
-		mountPath:   "/buildah/.docker",
-		destination: "config.json",
-		refEnv:      "REGISTRY_AUTH_FILE",
-	}
-
-	buildahRegistrySecrets = []registrySecret{
-		plainDockerBuildahRegistrySecret,
-		standardDockerBuildahRegistrySecret,
-	}
-)
-
-var (
-	gcrKanikoRegistrySecret = registrySecret{
-		fileName:    "kaniko-secret.json",
-		mountPath:   "/secret",
-		destination: "kaniko-secret.json",
-		refEnv:      "GOOGLE_APPLICATION_CREDENTIALS",
-	}
-	plainDockerKanikoRegistrySecret = registrySecret{
-		fileName:    "config.json",
-		mountPath:   "/kaniko/.docker",
-		destination: "config.json",
-	}
-	standardDockerKanikoRegistrySecret = registrySecret{
-		fileName:    corev1.DockerConfigJsonKey,
-		mountPath:   "/kaniko/.docker",
-		destination: "config.json",
-	}
-
-	kanikoRegistrySecrets = []registrySecret{
-		gcrKanikoRegistrySecret,
-		plainDockerKanikoRegistrySecret,
-		standardDockerKanikoRegistrySecret,
-	}
-)
-
-func newBuildPod(ctx context.Context, c ctrl.Reader, client client.Client, build *v1.Build) (*corev1.Pod, error) {
+func newBuildPod(ctx context.Context, client client.Client, build *v1.Build) *corev1.Pod {
 	var ugfid int64 = 1001
 	podSecurityContext := &corev1.PodSecurityContext{
 		RunAsUser:  &ugfid,
@@ -165,17 +90,6 @@ func newBuildPod(ctx context.Context, c ctrl.Reader, client client.Client, build
 		// It's a type of builder task, we can reuse the same type
 		case task.Package != nil:
 			addBuildTaskToPod(ctx, client, build, task.Package.Name, pod)
-		// Publish task
-		case task.Buildah != nil:
-			err := addBuildahTaskToPod(ctx, c, build, task.Buildah, pod)
-			if err != nil {
-				return nil, err
-			}
-		case task.Kaniko != nil:
-			err := addKanikoTaskToPod(ctx, c, build, task.Kaniko, pod)
-			if err != nil {
-				return nil, err
-			}
 		case task.S2i != nil:
 			addBuildTaskToPod(ctx, client, build, task.S2i.Name, pod)
 		case task.Spectrum != nil:
@@ -189,7 +103,7 @@ func newBuildPod(ctx context.Context, c ctrl.Reader, client client.Client, build
 	pod.Spec.Containers = pod.Spec.InitContainers[len(pod.Spec.InitContainers)-1 : len(pod.Spec.InitContainers)]
 	pod.Spec.InitContainers = pod.Spec.InitContainers[:len(pod.Spec.InitContainers)-1]
 
-	return pod, nil
+	return pod
 }
 
 func configureResources(taskName string, build *v1.Build, container *corev1.Container) {
@@ -317,252 +231,6 @@ func addBuildTaskToPod(ctx context.Context, client client.Client, build *v1.Buil
 	addContainerToPod(build, container, pod)
 }
 
-func addBuildahTaskToPod(ctx context.Context, c ctrl.Reader, build *v1.Build, task *v1.BuildahTask, pod *corev1.Pod) error {
-	var bud []string
-
-	bud = []string{
-		"buildah",
-		"bud",
-		"--storage-driver=vfs",
-	}
-
-	if task.Platform != "" {
-		bud = append(bud, []string{
-			"--platform",
-			task.Platform,
-		}...)
-	}
-
-	bud = append(bud, []string{
-		"--pull-always",
-		"-f",
-		"Dockerfile",
-		"-t",
-		task.Image,
-		".",
-	}...)
-
-	push := []string{
-		"buildah",
-		"push",
-		"--storage-driver=vfs",
-		"--digestfile=/dev/termination-log",
-		task.Image,
-		"docker://" + task.Image,
-	}
-
-	if task.Verbose != nil && *task.Verbose {
-		bud = append(bud[:2], append([]string{"--log-level=debug"}, bud[2:]...)...)
-		push = append(push[:2], append([]string{"--log-level=debug"}, push[2:]...)...)
-	}
-
-	env := make([]corev1.EnvVar, 0)
-	volumes := make([]corev1.Volume, 0)
-	volumeMounts := make([]corev1.VolumeMount, 0)
-
-	if task.Registry.CA != "" {
-		config, err := getRegistryConfigMap(ctx, c, build.Namespace, task.Registry.CA, buildahRegistryConfigMaps)
-		if err != nil {
-			return err
-		}
-		addRegistryConfigMap(task.Registry.CA, config, &volumes, &volumeMounts)
-		// This is easier to use the --cert-dir option, otherwise Buildah defaults to looking up certificates
-		// into a directory named after the registry address
-		bud = append(bud[:2], append([]string{"--cert-dir=/etc/containers/certs.d"}, bud[2:]...)...)
-		push = append(push[:2], append([]string{"--cert-dir=/etc/containers/certs.d"}, push[2:]...)...)
-	}
-
-	var auth string
-	if task.Registry.Secret != "" {
-		secret, err := getRegistrySecret(ctx, c, build.Namespace, task.Registry.Secret, buildahRegistrySecrets)
-		if err != nil {
-			return err
-		}
-		if secret == plainDockerBuildahRegistrySecret {
-			// Handle old format and make it compatible with Buildah
-			auth = "(echo '{ \"auths\": ' ; cat /buildah/.docker/config.json ; echo \"}\") > /tmp/.dockercfg"
-			env = append(env, corev1.EnvVar{
-				Name:  "REGISTRY_AUTH_FILE",
-				Value: "/tmp/.dockercfg",
-			})
-		}
-		addRegistrySecret(task.Registry.Secret, secret, &volumes, &volumeMounts, &env)
-	}
-
-	if task.Registry.Insecure {
-		bud = append(bud[:2], append([]string{"--tls-verify=false"}, bud[2:]...)...)
-		push = append(push[:2], append([]string{"--tls-verify=false"}, push[2:]...)...)
-	}
-
-	env = append(env, proxyFromEnvironment()...)
-
-	args := []string{
-		strings.Join(bud, " "),
-		strings.Join(push, " "),
-	}
-	if auth != "" {
-		args = append([]string{auth}, args...)
-	}
-
-	image := task.ExecutorImage
-	if image == "" {
-		image = fmt.Sprintf("%s:v%s", builder.BuildahDefaultImageName, defaults.BuildahVersion)
-	}
-
-	var root int64 = 0
-	container := corev1.Container{
-		Name:            task.Name,
-		Image:           image,
-		ImagePullPolicy: corev1.PullIfNotPresent,
-		Command:         []string{"/bin/sh", "-c"},
-		Args:            []string{strings.Join(args, " && ")},
-		Env:             env,
-		WorkingDir:      filepath.Join(builderDir, build.Name, builder.ContextDir),
-		VolumeMounts:    volumeMounts,
-		// Buildah requires root privileges
-		SecurityContext: &corev1.SecurityContext{
-			RunAsUser:  &root,
-			RunAsGroup: &root,
-		},
-	}
-
-	pod.Spec.Volumes = append(pod.Spec.Volumes, volumes...)
-
-	configureResources(task.Name, build, &container)
-	addContainerToPod(build, container, pod)
-
-	return nil
-}
-
-func addKanikoTaskToPod(ctx context.Context, c ctrl.Reader, build *v1.Build, task *v1.KanikoTask, pod *corev1.Pod) error {
-	cache := false
-	if task.Cache.Enabled != nil && *task.Cache.Enabled {
-		cache = true
-	}
-
-	args := []string{
-		"--dockerfile=Dockerfile",
-		"--context=" + filepath.Join(builderDir, build.Name, builder.ContextDir),
-		"--destination=" + task.Image,
-		"--cache=" + strconv.FormatBool(cache),
-		"--cache-dir=" + builder.KanikoCacheDir,
-	}
-
-	if task.Verbose != nil && *task.Verbose {
-		args = append(args, "-v=debug")
-	}
-
-	affinity := &corev1.Affinity{}
-	env := make([]corev1.EnvVar, 0)
-	volumes := make([]corev1.Volume, 0)
-	volumeMounts := make([]corev1.VolumeMount, 0)
-
-	if task.Registry.Secret != "" {
-		secret, err := getRegistrySecret(ctx, c, build.Namespace, task.Registry.Secret, kanikoRegistrySecrets)
-		if err != nil {
-			return err
-		}
-		addRegistrySecret(task.Registry.Secret, secret, &volumes, &volumeMounts, &env)
-	}
-
-	if task.Registry.Insecure {
-		args = append(args, "--insecure")
-		args = append(args, "--insecure-pull")
-	}
-
-	env = append(env, proxyFromEnvironment()...)
-
-	if cache {
-		// Co-locate with the Kaniko warmer pod for sharing the host path volume as the current
-		// persistent volume claim uses the default storage class which is likely relying
-		// on the host path provisioner.
-		// This has to be done manually by retrieving the Kaniko warmer pod node name and using
-		// node affinity as pod affinity only works for running pods and the Kaniko warmer pod
-		// has already completed at that stage.
-
-		// Locate the kaniko warmer pod
-		pods := &corev1.PodList{}
-		err := c.List(ctx, pods,
-			ctrl.InNamespace(build.Namespace),
-			ctrl.MatchingLabels{
-				"camel.apache.org/component": "kaniko-warmer",
-			})
-		if err != nil {
-			return err
-		}
-
-		if len(pods.Items) != 1 {
-			return errors.New("failed to locate the Kaniko cache warmer pod")
-		}
-
-		// Use node affinity with the Kaniko warmer pod node name
-		affinity = &corev1.Affinity{
-			NodeAffinity: &corev1.NodeAffinity{
-				RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
-					NodeSelectorTerms: []corev1.NodeSelectorTerm{
-						{
-							MatchExpressions: []corev1.NodeSelectorRequirement{
-								{
-									Key:      "kubernetes.io/hostname",
-									Operator: "In",
-									Values:   []string{pods.Items[0].Spec.NodeName},
-								},
-							},
-						},
-					},
-				},
-			},
-		}
-		// Mount the PV used to warm the Kaniko cache into the Kaniko image build
-		volumes = append(volumes, corev1.Volume{
-			Name: "kaniko-cache",
-			VolumeSource: corev1.VolumeSource{
-				PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
-					ClaimName: task.Cache.PersistentVolumeClaim,
-				},
-			},
-		})
-		volumeMounts = append(volumeMounts, corev1.VolumeMount{
-			Name:      "kaniko-cache",
-			MountPath: builder.KanikoCacheDir,
-		})
-	}
-
-	image := task.ExecutorImage
-	if image == "" {
-		image = fmt.Sprintf("%s:v%s", builder.KanikoDefaultExecutorImageName, defaults.KanikoVersion)
-	}
-
-	container := corev1.Container{
-		Name:            task.Name,
-		Image:           image,
-		ImagePullPolicy: corev1.PullIfNotPresent,
-		Args:            args,
-		Env:             env,
-		WorkingDir:      filepath.Join(builderDir, build.Name, builder.ContextDir),
-		VolumeMounts:    volumeMounts,
-	}
-
-	// We may want to handle possible conflicts
-	pod.Spec.Affinity = affinity
-	pod.Spec.Volumes = append(pod.Spec.Volumes, volumes...)
-
-	// Warning: Kaniko requires root privileges to work correctly
-	// As we're planning to deprecate this building strategy we're fixing in the first
-	// releases of version 2
-	var ugfid int64 = 0
-	pod.Spec.SecurityContext = &corev1.PodSecurityContext{
-		RunAsUser:  &ugfid,
-		RunAsGroup: &ugfid,
-		FSGroup:    &ugfid,
-	}
-
-	configureResources(task.Name, build, &container)
-	addContainerToPod(build, container, pod)
-
-	return nil
-}
-
 func addCustomTaskToPod(build *v1.Build, task *v1.UserTask, pod *corev1.Pod) {
 	container := corev1.Container{
 		Name:            task.Name,
@@ -604,89 +272,6 @@ func hasVolume(pod *corev1.Pod, name string) bool {
 	return false
 }
 
-func getRegistryConfigMap(ctx context.Context, c ctrl.Reader, ns, name string, registryConfigMaps []registryConfigMap) (registryConfigMap, error) {
-	config := corev1.ConfigMap{}
-	err := c.Get(ctx, ctrl.ObjectKey{Namespace: ns, Name: name}, &config)
-	if err != nil {
-		return registryConfigMap{}, err
-	}
-	for _, k := range registryConfigMaps {
-		if _, ok := config.Data[k.fileName]; ok {
-			return k, nil
-		}
-	}
-	return registryConfigMap{}, errors.New("unsupported registry config map")
-}
-
-func addRegistryConfigMap(name string, config registryConfigMap, volumes *[]corev1.Volume, volumeMounts *[]corev1.VolumeMount) {
-	*volumes = append(*volumes, corev1.Volume{
-		Name: "registry-config",
-		VolumeSource: corev1.VolumeSource{
-			ConfigMap: &corev1.ConfigMapVolumeSource{
-				LocalObjectReference: corev1.LocalObjectReference{
-					Name: name,
-				},
-				Items: []corev1.KeyToPath{
-					{
-						Key:  config.fileName,
-						Path: config.destination,
-					},
-				},
-			},
-		},
-	})
-
-	*volumeMounts = append(*volumeMounts, corev1.VolumeMount{
-		Name:      "registry-config",
-		MountPath: config.mountPath,
-		ReadOnly:  true,
-	})
-}
-
-func getRegistrySecret(ctx context.Context, c ctrl.Reader, ns, name string, registrySecrets []registrySecret) (registrySecret, error) {
-	secret := corev1.Secret{}
-	err := c.Get(ctx, ctrl.ObjectKey{Namespace: ns, Name: name}, &secret)
-	if err != nil {
-		return registrySecret{}, err
-	}
-	for _, k := range registrySecrets {
-		if _, ok := secret.Data[k.fileName]; ok {
-			return k, nil
-		}
-	}
-	return registrySecret{}, errors.New("unsupported secret type for registry authentication")
-}
-
-func addRegistrySecret(name string, secret registrySecret, volumes *[]corev1.Volume, volumeMounts *[]corev1.VolumeMount, env *[]corev1.EnvVar) {
-	*volumes = append(*volumes, corev1.Volume{
-		Name: "registry-secret",
-		VolumeSource: corev1.VolumeSource{
-			Secret: &corev1.SecretVolumeSource{
-				SecretName: name,
-				Items: []corev1.KeyToPath{
-					{
-						Key:  secret.fileName,
-						Path: secret.destination,
-					},
-				},
-			},
-		},
-	})
-
-	*volumeMounts = append(*volumeMounts, corev1.VolumeMount{
-		Name:      "registry-secret",
-		MountPath: secret.mountPath,
-		ReadOnly:  true,
-	})
-
-	if secret.refEnv != "" {
-		*env = append(*env, corev1.EnvVar{
-			Name:  secret.refEnv,
-			Value: filepath.Join(secret.mountPath, secret.destination),
-		})
-	}
-}
-
 func proxyFromEnvironment() []corev1.EnvVar {
 	var envVars []corev1.EnvVar
 
diff --git a/pkg/controller/build/monitor_pod.go b/pkg/controller/build/monitor_pod.go
index 0af446104..506fe105b 100644
--- a/pkg/controller/build/monitor_pod.go
+++ b/pkg/controller/build/monitor_pod.go
@@ -72,16 +72,13 @@ func (action *monitorPodAction) Handle(ctx context.Context, build *v1.Build) (*v
 		switch build.Status.Phase {
 
 		case v1.BuildPhasePending:
-			if pod, err = newBuildPod(ctx, action.reader, action.client, build); err != nil {
-				return nil, err
-			}
-
+			pod = newBuildPod(ctx, action.client, build)
 			// If the Builder Pod is in the Build namespace, we can set the ownership to it. If not (global operator mode)
 			// we set the ownership to the Operator Pod instead
 			var owner metav1.Object
 			owner = build
 			if build.Namespace != pod.Namespace {
-				operatorPod := platform.GetOperatorPod(ctx, action.reader, pod.Namespace)
+				operatorPod := platform.GetOperatorPod(ctx, action.client, pod.Namespace)
 				if operatorPod != nil {
 					owner = operatorPod
 				}
@@ -364,10 +361,6 @@ func publishTaskImageName(tasks []v1.Task) string {
 		return t.Spectrum.Image
 	case t.Jib != nil:
 		return t.Jib.Image
-	case t.Buildah != nil:
-		return t.Buildah.Image
-	case t.Kaniko != nil:
-		return t.Kaniko.Image
 	}
 
 	return ""
@@ -385,10 +378,6 @@ func publishTaskName(tasks []v1.Task) string {
 		return t.Spectrum.Name
 	case t.Jib != nil:
 		return t.Jib.Name
-	case t.Buildah != nil:
-		return t.Buildah.Name
-	case t.Kaniko != nil:
-		return t.Kaniko.Name
 	}
 
 	return ""
diff --git a/pkg/controller/integrationplatform/initialize.go b/pkg/controller/integrationplatform/initialize.go
index a63b9f798..0d766a92a 100644
--- a/pkg/controller/integrationplatform/initialize.go
+++ b/pkg/controller/integrationplatform/initialize.go
@@ -20,14 +20,7 @@ package integrationplatform
 import (
 	"context"
 
-	corev1 "k8s.io/api/core/v1"
-	k8serrors "k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/api/resource"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/builder"
-	"github.com/apache/camel-k/v2/pkg/client"
 	platformutil "github.com/apache/camel-k/v2/pkg/platform"
 	"github.com/apache/camel-k/v2/pkg/util/defaults"
 )
@@ -70,29 +63,7 @@ func (action *initializeAction) Handle(ctx context.Context, platform *v1.Integra
 	if err = platformutil.ConfigureDefaults(ctx, action.client, platform, true); err != nil {
 		return nil, err
 	}
-	if platform.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
-		cacheEnabled := platform.Status.Build.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
-		if cacheEnabled {
-			// Create the persistent volume claim used by the Kaniko cache
-			action.L.Info("Create persistent volume claim")
-			err := createPersistentVolumeClaim(ctx, action.client, platform)
-			if err != nil {
-				return nil, err
-			}
-			// Create the Kaniko warmer pod that caches the base image into the Camel K builder volume
-			action.L.Info("Create Kaniko cache warmer pod")
-			err = createKanikoCacheWarmerPod(ctx, action.client, platform)
-			if err != nil {
-				return nil, err
-			}
-			platform.Status.Phase = v1.IntegrationPlatformPhaseWarming
-		} else {
-			// Skip the warmer pod creation
-			platform.Status.Phase = v1.IntegrationPlatformPhaseCreating
-		}
-	} else {
-		platform.Status.Phase = v1.IntegrationPlatformPhaseCreating
-	}
+	platform.Status.Phase = v1.IntegrationPlatformPhaseCreating
 	platform.Status.Version = defaults.Version
 
 	return platform, nil
@@ -116,42 +87,3 @@ func (action *initializeAction) isPrimaryDuplicate(ctx context.Context, thisPlat
 
 	return false, nil
 }
-
-func createPersistentVolumeClaim(ctx context.Context, client client.Client, platform *v1.IntegrationPlatform) error {
-	volumeSize, err := resource.ParseQuantity("1Gi")
-	if err != nil {
-		return err
-	}
-	pvcName := platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
-	pvc := &corev1.PersistentVolumeClaim{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "PersistentVolumeClaim",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: platform.Namespace,
-			Name:      pvcName,
-			Labels: map[string]string{
-				"app": "camel-k",
-			},
-		},
-		Spec: corev1.PersistentVolumeClaimSpec{
-			AccessModes: []corev1.PersistentVolumeAccessMode{
-				corev1.ReadWriteOnce,
-			},
-			Resources: corev1.ResourceRequirements{
-				Requests: corev1.ResourceList{
-					corev1.ResourceStorage: volumeSize,
-				},
-			},
-		},
-	}
-
-	err = client.Create(ctx, pvc)
-	// Skip the error in case the PVC already exists
-	if err != nil && !k8serrors.IsAlreadyExists(err) {
-		return err
-	}
-
-	return nil
-}
diff --git a/pkg/controller/integrationplatform/integrationplatform_controller.go b/pkg/controller/integrationplatform/integrationplatform_controller.go
index e95a3413e..2c714af8d 100644
--- a/pkg/controller/integrationplatform/integrationplatform_controller.go
+++ b/pkg/controller/integrationplatform/integrationplatform_controller.go
@@ -155,7 +155,6 @@ func (r *reconcileIntegrationPlatform) Reconcile(ctx context.Context, request re
 
 	actions := []Action{
 		NewInitializeAction(),
-		NewWarmAction(r.reader),
 		NewCreateAction(),
 		NewMonitorAction(),
 	}
diff --git a/pkg/controller/integrationplatform/kaniko_cache.go b/pkg/controller/integrationplatform/kaniko_cache.go
deleted file mode 100644
index f82ef1d52..000000000
--- a/pkg/controller/integrationplatform/kaniko_cache.go
+++ /dev/null
@@ -1,120 +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.
-*/
-
-package integrationplatform
-
-import (
-	"context"
-	"fmt"
-
-	corev1 "k8s.io/api/core/v1"
-	apierrors "k8s.io/apimachinery/pkg/api/errors"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/builder"
-	"github.com/apache/camel-k/v2/pkg/client"
-	"github.com/apache/camel-k/v2/pkg/util/defaults"
-)
-
-func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platform *v1.IntegrationPlatform) error {
-	// The pod will be scheduled to nodes that are selected by the persistent volume
-	// node affinity spec, if any, as provisioned by the persistent volume claim storage
-	// class provisioner.
-	// See:
-	// - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#node-affinity
-	// - https://kubernetes.io/docs/concepts/storage/volumes/#local
-	pvcName := platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
-
-	var warmerImage string
-	if image, found := platform.Status.Build.PublishStrategyOptions[builder.KanikoWarmerImage]; found {
-		warmerImage = image
-	} else {
-		warmerImage = fmt.Sprintf("%s:v%s", builder.KanikoDefaultWarmerImageName, defaults.KanikoVersion)
-	}
-
-	pod := corev1.Pod{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "Pod",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: platform.Namespace,
-			Name:      platform.Name + "-cache",
-			Labels: map[string]string{
-				"camel.apache.org/component": "kaniko-warmer",
-			},
-		},
-		Spec: corev1.PodSpec{
-			Containers: []corev1.Container{
-				{
-					Name:  "warm-kaniko-cache",
-					Image: warmerImage,
-					Args: []string{
-						"--cache-dir=" + builder.KanikoCacheDir,
-						"--image=" + platform.Status.Build.BaseImage,
-					},
-					VolumeMounts: []corev1.VolumeMount{
-						{
-							Name:      "kaniko-cache",
-							MountPath: builder.KanikoCacheDir,
-						},
-					},
-				},
-			},
-			// Create the cache directory otherwise Kaniko warmer skips caching silently
-			InitContainers: []corev1.Container{
-				{
-					Name:            "create-kaniko-cache",
-					Image:           "busybox",
-					ImagePullPolicy: corev1.PullIfNotPresent,
-					Command:         []string{"/bin/sh", "-c"},
-					Args:            []string{"mkdir -p " + builder.KanikoCacheDir + "&& chmod -R a+rwx " + builder.KanikoCacheDir},
-					VolumeMounts: []corev1.VolumeMount{
-						{
-							Name:      "kaniko-cache",
-							MountPath: builder.KanikoCacheDir,
-						},
-					},
-				},
-			},
-			RestartPolicy: corev1.RestartPolicyOnFailure,
-			Volumes: []corev1.Volume{
-				{
-					Name: "kaniko-cache",
-					VolumeSource: corev1.VolumeSource{
-						PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
-							ClaimName: pvcName,
-						},
-					},
-				},
-			},
-		},
-	}
-
-	err := client.Delete(ctx, &pod)
-	if err != nil && !apierrors.IsNotFound(err) {
-		return fmt.Errorf("cannot delete Kaniko warmer pod: %w", err)
-	}
-
-	err = client.Create(ctx, &pod)
-	if err != nil {
-		return fmt.Errorf("cannot create Kaniko warmer pod: %w", err)
-	}
-
-	return nil
-}
diff --git a/pkg/controller/integrationplatform/warm.go b/pkg/controller/integrationplatform/warm.go
deleted file mode 100644
index c1201b23a..000000000
--- a/pkg/controller/integrationplatform/warm.go
+++ /dev/null
@@ -1,82 +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.
-*/
-
-package integrationplatform
-
-import (
-	"context"
-	"errors"
-
-	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/types"
-
-	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
-
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-)
-
-func NewWarmAction(reader ctrl.Reader) Action {
-	return &warmAction{
-		reader: reader,
-	}
-}
-
-type warmAction struct {
-	baseAction
-	reader ctrl.Reader
-}
-
-func (action *warmAction) Name() string {
-	return "warm"
-}
-
-func (action *warmAction) CanHandle(platform *v1.IntegrationPlatform) bool {
-	return platform.Status.Phase == v1.IntegrationPlatformPhaseWarming
-}
-
-func (action *warmAction) Handle(ctx context.Context, platform *v1.IntegrationPlatform) (*v1.IntegrationPlatform, error) {
-	// Check Kaniko warmer pod status
-	pod := corev1.Pod{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "Pod",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: platform.Namespace,
-			Name:      platform.Name + "-cache",
-		},
-	}
-
-	err := action.reader.Get(ctx, types.NamespacedName{Namespace: pod.Namespace, Name: pod.Name}, &pod)
-	if err != nil {
-		return nil, err
-	}
-
-	switch pod.Status.Phase {
-	case corev1.PodSucceeded:
-		action.L.Info("Kaniko cache successfully warmed up")
-		platform.Status.Phase = v1.IntegrationPlatformPhaseCreating
-		return platform, nil
-	case corev1.PodFailed:
-		return nil, errors.New("failed to warm up Kaniko cache")
-	default:
-		action.L.Info("Waiting for Kaniko cache to warm up...")
-		// Requeue
-		return nil, nil
-	}
-}
diff --git a/pkg/controller/integrationplatform/warm_test.go b/pkg/controller/integrationplatform/warm_test.go
deleted file mode 100644
index 83f963433..000000000
--- a/pkg/controller/integrationplatform/warm_test.go
+++ /dev/null
@@ -1,138 +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.
-*/
-
-package integrationplatform
-
-import (
-	"context"
-	"testing"
-
-	"github.com/apache/camel-k/v2/pkg/platform"
-	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-
-	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/util/log"
-	"github.com/apache/camel-k/v2/pkg/util/test"
-	"github.com/rs/xid"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestWarm_Succeeded(t *testing.T) {
-	ip := v1.IntegrationPlatform{}
-	ip.Namespace = "ns"
-	ip.Name = xid.New().String()
-	ip.Spec.Cluster = v1.IntegrationPlatformClusterOpenShift
-	ip.Spec.Profile = v1.TraitProfileOpenShift
-
-	pod := corev1.Pod{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "Pod",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: ip.Namespace,
-			Name:      ip.Name + "-cache",
-		},
-		Status: corev1.PodStatus{
-			Phase: corev1.PodSucceeded,
-		},
-	}
-
-	c, err := test.NewFakeClient(&ip, &pod)
-	assert.Nil(t, err)
-
-	assert.Nil(t, platform.ConfigureDefaults(context.TODO(), c, &ip, false))
-
-	h := NewWarmAction(c)
-	h.InjectLogger(log.Log)
-	h.InjectClient(c)
-
-	answer, err := h.Handle(context.TODO(), &ip)
-	assert.Nil(t, err)
-	assert.NotNil(t, answer)
-}
-
-func TestWarm_Failing(t *testing.T) {
-	ip := v1.IntegrationPlatform{}
-	ip.Namespace = "ns"
-	ip.Name = xid.New().String()
-	ip.Spec.Cluster = v1.IntegrationPlatformClusterOpenShift
-	ip.Spec.Profile = v1.TraitProfileOpenShift
-
-	pod := corev1.Pod{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "Pod",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: ip.Namespace,
-			Name:      ip.Name + "-cache",
-		},
-		Status: corev1.PodStatus{
-			Phase: corev1.PodFailed,
-		},
-	}
-
-	c, err := test.NewFakeClient(&ip, &pod)
-	assert.Nil(t, err)
-
-	assert.Nil(t, platform.ConfigureDefaults(context.TODO(), c, &ip, false))
-
-	h := NewWarmAction(c)
-	h.InjectLogger(log.Log)
-	h.InjectClient(c)
-
-	answer, err := h.Handle(context.TODO(), &ip)
-	assert.NotNil(t, err)
-	assert.Nil(t, answer)
-}
-
-func TestWarm_WarmingUp(t *testing.T) {
-	ip := v1.IntegrationPlatform{}
-	ip.Namespace = "ns"
-	ip.Name = xid.New().String()
-	ip.Spec.Cluster = v1.IntegrationPlatformClusterOpenShift
-	ip.Spec.Profile = v1.TraitProfileOpenShift
-
-	pod := corev1.Pod{
-		TypeMeta: metav1.TypeMeta{
-			APIVersion: corev1.SchemeGroupVersion.String(),
-			Kind:       "Pod",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: ip.Namespace,
-			Name:      ip.Name + "-cache",
-		},
-		Status: corev1.PodStatus{
-			Phase: corev1.PodRunning,
-		},
-	}
-
-	c, err := test.NewFakeClient(&ip, &pod)
-	assert.Nil(t, err)
-
-	assert.Nil(t, platform.ConfigureDefaults(context.TODO(), c, &ip, false))
-
-	h := NewWarmAction(c)
-	h.InjectLogger(log.Log)
-	h.InjectClient(c)
-
-	answer, err := h.Handle(context.TODO(), &ip)
-	assert.Nil(t, err)
-	assert.Nil(t, answer)
-}
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index 1a659b181..76e61e7af 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -33,7 +33,6 @@ import (
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/v2/pkg/builder"
 	"github.com/apache/camel-k/v2/pkg/client"
 	"github.com/apache/camel-k/v2/pkg/install"
 	"github.com/apache/camel-k/v2/pkg/kamelet/repository"
@@ -83,16 +82,6 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
 
 	if p.Status.Build.BuildConfiguration.Strategy == "" {
 		defaultStrategy := v1.BuildStrategyRoutine
-		if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah ||
-			p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
-			defaultStrategy = v1.BuildStrategyPod
-			log.Infof("Integration Platform %s [%s]: setting fallback build strategy %s because PublishStrategy is configured as %s",
-				p.Name,
-				p.Namespace,
-				defaultStrategy,
-				p.Status.Build.PublishStrategy,
-			)
-		}
 		p.Status.Build.BuildConfiguration.Strategy = defaultStrategy
 		log.Debugf("Integration Platform %s [%s]: setting build strategy %s", p.Name, p.Namespace, p.Status.Build.BuildConfiguration.Strategy)
 	}
@@ -253,10 +242,6 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
 	if target.Status.Build.BaseImage == "" {
 		log.Debugf("Integration Platform %s [%s]: setting base image", target.Name, target.Namespace)
 		target.Status.Build.BaseImage = source.Status.Build.BaseImage
-		// Workaround to ensure the default image from buildah is full name. Any baseImage override is in charge of it's validity
-		if target.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah && defaults.IsBaseImageDefault() {
-			target.Status.Build.BaseImage = builder.BuildahDefaultBaseImageName
-		}
 	}
 
 	if target.Status.Build.Maven.LocalRepository == "" {
@@ -330,10 +315,6 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 	if p.Status.Build.BaseImage == "" {
 		log.Debugf("Integration Platform %s [%s]: setting base image", p.Name, p.Namespace)
 		p.Status.Build.BaseImage = defaults.BaseImage()
-		// Workaround to ensure the default image from buildah is full name. Any baseImage override is in charge of it's validity
-		if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah && defaults.IsBaseImageDefault() {
-			p.Status.Build.BaseImage = builder.BuildahDefaultBaseImageName
-		}
 	}
 	if p.Status.Build.Maven.LocalRepository == "" {
 		log.Debugf("Integration Platform %s [%s]: setting local repository", p.Name, p.Namespace)
@@ -347,10 +328,6 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 			"-Dstyle.color=never",
 		}
 	}
-	if _, ok := p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]; !ok {
-		log.Debugf("Integration Platform %s [%s]: setting publish strategy options", p.Name, p.Namespace)
-		p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName] = p.Name
-	}
 
 	// Build timeout
 	if p.Status.Build.GetTimeout().Duration == 0 {
@@ -379,18 +356,6 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 		}
 	}
 
-	_, cacheEnabled := p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled]
-	if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko && !cacheEnabled {
-		// Default to disabling Kaniko cache warmer
-		// Using the cache warmer pod seems unreliable with the current Kaniko version
-		// and requires relying on a persistent volume.
-		defaultKanikoBuildCache := "false"
-		p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled] = defaultKanikoBuildCache
-		if verbose {
-			log.Log.Infof("Kaniko cache set to %s", defaultKanikoBuildCache)
-		}
-	}
-
 	if len(p.Status.Kamelet.Repositories) == 0 {
 		log.Debugf("Integration Platform %s [%s]: setting kamelet repositories", p.Name, p.Namespace)
 		p.Status.Kamelet.Repositories = append(p.Status.Kamelet.Repositories, v1.IntegrationPlatformKameletRepositorySpec{
@@ -411,13 +376,6 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 
 func setStatusAdditionalInfo(platform *v1.IntegrationPlatform) {
 	platform.Status.Info = make(map[string]string)
-
-	log.Debugf("Integration Platform %s [%s]: setting build publish strategy", platform.Name, platform.Namespace)
-	if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah {
-		platform.Status.Info["buildahVersion"] = defaults.BuildahVersion
-	} else if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
-		platform.Status.Info["kanikoVersion"] = defaults.KanikoVersion
-	}
 	log.Debugf("Integration Platform %s [%s]: setting status info", platform.Name, platform.Namespace)
 	platform.Status.Info["goVersion"] = runtime.Version()
 	platform.Status.Info["goOS"] = runtime.GOOS
diff --git a/pkg/platform/defaults_test.go b/pkg/platform/defaults_test.go
index d73b99af2..ac9ecd7de 100644
--- a/pkg/platform/defaults_test.go
+++ b/pkg/platform/defaults_test.go
@@ -27,7 +27,6 @@ import (
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
-	"github.com/apache/camel-k/v2/pkg/builder"
 	"github.com/apache/camel-k/v2/pkg/util/defaults"
 	"github.com/apache/camel-k/v2/pkg/util/test"
 )
@@ -125,14 +124,14 @@ func TestApplyGlobalPlatformSpec(t *testing.T) {
 	assert.Equal(t, "global_value2", ip.Status.Build.Maven.Properties["global_prop2"])
 }
 
-func TestPlatformBuildahUpdateOverrideLocalPlatformSpec(t *testing.T) {
+func TestPlatformS2IhUpdateOverrideLocalPlatformSpec(t *testing.T) {
 	global := v1.IntegrationPlatform{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: "ns",
 		},
 		Spec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
-				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 			},
 		},
 	}
@@ -142,7 +141,6 @@ func TestPlatformBuildahUpdateOverrideLocalPlatformSpec(t *testing.T) {
 
 	err = ConfigureDefaults(context.TODO(), c, &global, false)
 	assert.Nil(t, err)
-	assert.Equal(t, builder.BuildahDefaultBaseImageName, global.Status.Build.BaseImage)
 
 	ip := v1.IntegrationPlatform{
 		ObjectMeta: metav1.ObjectMeta{
@@ -151,7 +149,7 @@ func TestPlatformBuildahUpdateOverrideLocalPlatformSpec(t *testing.T) {
 		},
 		Spec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
-				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 				BaseImage:       "overridden",
 			},
 		},
@@ -161,19 +159,18 @@ func TestPlatformBuildahUpdateOverrideLocalPlatformSpec(t *testing.T) {
 
 	applyPlatformSpec(&global, &ip)
 
-	assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyBuildah, ip.Status.Build.PublishStrategy)
+	assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyS2I, ip.Status.Build.PublishStrategy)
 	assert.Equal(t, "overridden", ip.Status.Build.BaseImage)
 }
 
-func TestPlatformBuildahUpdateDefaultLocalPlatformSpec(t *testing.T) {
-
+func TestPlatformS2IUpdateDefaultLocalPlatformSpec(t *testing.T) {
 	global := v1.IntegrationPlatform{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: "ns",
 		},
 		Spec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
-				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 				BaseImage:       "overridden",
 			},
 		},
@@ -193,7 +190,7 @@ func TestPlatformBuildahUpdateDefaultLocalPlatformSpec(t *testing.T) {
 		},
 		Spec: v1.IntegrationPlatformSpec{
 			Build: v1.IntegrationPlatformBuildSpec{
-				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyBuildah,
+				PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 			},
 		},
 	}
@@ -202,8 +199,7 @@ func TestPlatformBuildahUpdateDefaultLocalPlatformSpec(t *testing.T) {
 
 	applyPlatformSpec(&global, &ip)
 
-	assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyBuildah, ip.Status.Build.PublishStrategy)
-	assert.Equal(t, builder.BuildahDefaultBaseImageName, ip.Status.Build.BaseImage)
+	assert.Equal(t, v1.IntegrationPlatformBuildPublishStrategyS2I, ip.Status.Build.PublishStrategy)
 }
 
 func TestRetainLocalPlatformSpec(t *testing.T) {
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index 758e757af..55ed0f895 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -117,9 +117,9 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_builds.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_builds.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 95731,
+			uncompressedSize: 95791,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1b\x37\x96\xe8\x77\xfd\x8a\x53\xf1\x07\xcb\x55\x22\x35\xe3\x64\x67\xb3\xba\xb5\x75\x4b\x2b\x27\xb3\x1a\x27\xb6\xd7\x94\x3d\x99\xda\xda\x2a\x81\xdd\x87\x24\xc2\x6e\xa0\x2f\x80\x16\xcd\xdc\xba\xff\xfd\x16\x5e\xfd\x10\xd9\xdd\x00\x45\xda\x9e\x72\xe3\x4b\x62\xaa\x01\x9c\x83\xc7\x79\xe1\x3c\x9e\xc1\xe4\x78\xed\xec\x19\xfc\x42\x13\x64\x12\x53\x50\x1c\xd4\x0a\xe1\xba\x20\xc9\x0a\x61\xc6\x17\x6a\x43\x04\xc2\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1b\x37\x96\xe8\x77\xfd\x8a\x53\xf1\x07\xcb\x55\x22\x35\xe3\x64\x67\xb3\xba\xb5\x75\x4b\x2b\x27\xb3\x1a\x27\xb6\xd7\x94\x3d\x99\xda\xda\x2a\x81\xdd\x87\x24\xc2\x6e\xa0\x2f\x80\x16\xcd\xdc\xba\xff\xfd\x16\x5e\xfd\x10\xd9\xdd\x00\x45\xda\x9e\x72\xe3\x4b\x62\xaa\x01\x9c\x83\xc7\x79\xe1\x3c\x9e\xc1\xe4\x78\xed\xec\x19\xfc\x42\x13\x64\x12\x53\x50\x1c\xd4\x0a\xe1\xba\x20\xc9\x0a\x61\xc6\x17\x6a\x43\x04\xc2\x [...]
 		},
 		"/crd/bases/camel.apache.org_camelcatalogs.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_camelcatalogs.yaml",
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index a0da38970..26202d269 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -260,63 +260,6 @@ func (t *builderTrait) Apply(e *Environment) error {
 			},
 			Tag: e.IntegrationKit.ResourceVersion,
 		}})
-
-	case v1.IntegrationPlatformBuildPublishStrategyBuildah:
-		t.L.Infof("Warning: Buildah publishing strategy is deprecated and may be removed in future releases. Use any alternative publishing strategy.")
-		var platform string
-		var found bool
-		if platform, found = e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahPlatform]; !found {
-			platform = ""
-			t.L.Infof("Attribute platform for buildah not found, default from host will be used!")
-		} else {
-			t.L.Infof("User defined %s platform, will be used from buildah!", platform)
-		}
-		var executorImage string
-		if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahImage]; found {
-			executorImage = image
-			t.L.Infof("User defined executor image %s will be used for buildah", image)
-		}
-		pipelineTasks = append(pipelineTasks, v1.Task{Buildah: &v1.BuildahTask{
-			Platform: platform,
-			BaseTask: v1.BaseTask{
-				Name:          "buildah",
-				Configuration: *taskConfOrDefault(tasksConf, "buildah"),
-			},
-			PublishTask: v1.PublishTask{
-				Image:    imageName,
-				Registry: e.Platform.Status.Build.Registry,
-			},
-			Verbose:       t.Verbose,
-			ExecutorImage: executorImage,
-		}})
-	//nolint: staticcheck,nolintlint
-	case v1.IntegrationPlatformBuildPublishStrategyKaniko:
-		t.L.Infof("Warning: Kaniko publishing strategy is deprecated and may be removed in future releases. Use any alternative publishing strategy.")
-		persistentVolumeClaim := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
-		cacheEnabled := e.Platform.Status.Build.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
-
-		var executorImage string
-		if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoExecutorImage]; found {
-			executorImage = image
-			t.L.Infof("User defined executor image %s will be used for kaniko", image)
-		}
-
-		pipelineTasks = append(pipelineTasks, v1.Task{Kaniko: &v1.KanikoTask{
-			BaseTask: v1.BaseTask{
-				Name:          "kaniko",
-				Configuration: *taskConfOrDefault(tasksConf, "kaniko"),
-			},
-			PublishTask: v1.PublishTask{
-				Image:    imageName,
-				Registry: e.Platform.Status.Build.Registry,
-			},
-			Cache: v1.KanikoTaskCache{
-				Enabled:               &cacheEnabled,
-				PersistentVolumeClaim: persistentVolumeClaim,
-			},
-			Verbose:       t.Verbose,
-			ExecutorImage: executorImage,
-		}})
 	}
 
 	// filter only those tasks required by the user
@@ -618,12 +561,6 @@ func filter(tasks []v1.Task, filterTasks []string) ([]v1.Task, error) {
 			case t.Jib != nil && t.Jib.Name == f:
 				filteredTasks = append(filteredTasks, t)
 				found = true
-			case t.Buildah != nil && t.Buildah.Name == f:
-				filteredTasks = append(filteredTasks, t)
-				found = true
-			case t.Kaniko != nil && t.Kaniko.Name == f:
-				filteredTasks = append(filteredTasks, t)
-				found = true
 			}
 		}
 
@@ -648,10 +585,6 @@ func publishingOrUserTask(t v1.Task) bool {
 		return true
 	case t.Jib != nil:
 		return true
-	case t.Buildah != nil:
-		return true
-	case t.Kaniko != nil:
-		return true
 	}
 
 	return false
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 0a8224516..d7e4e87f1 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -36,7 +36,6 @@ import (
 func TestBuilderTraitNotAppliedBecauseOfNilKit(t *testing.T) {
 	environments := []*Environment{
 		createBuilderTestEnv(v1.IntegrationPlatformClusterOpenShift, v1.IntegrationPlatformBuildPublishStrategyS2I, v1.BuildStrategyRoutine),
-		createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine),
 	}
 
 	for _, e := range environments {
@@ -58,7 +57,6 @@ func TestBuilderTraitNotAppliedBecauseOfNilKit(t *testing.T) {
 func TestBuilderTraitNotAppliedBecauseOfNilPhase(t *testing.T) {
 	environments := []*Environment{
 		createBuilderTestEnv(v1.IntegrationPlatformClusterOpenShift, v1.IntegrationPlatformBuildPublishStrategyS2I, v1.BuildStrategyRoutine),
-		createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine),
 	}
 
 	for _, e := range environments {
@@ -92,21 +90,6 @@ func TestS2IBuilderTrait(t *testing.T) {
 	assert.NotNil(t, env.Pipeline[2].S2i)
 }
 
-func TestKanikoBuilderTrait(t *testing.T) {
-	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine)
-	conditions, err := NewBuilderTestCatalog().apply(env)
-
-	assert.Nil(t, err)
-	assert.Empty(t, conditions)
-	assert.NotEmpty(t, env.ExecutedTraits)
-	assert.NotNil(t, env.GetTrait("builder"))
-	assert.NotEmpty(t, env.Pipeline)
-	assert.Len(t, env.Pipeline, 3)
-	assert.NotNil(t, env.Pipeline[0].Builder)
-	assert.NotNil(t, env.Pipeline[1].Package)
-	assert.NotNil(t, env.Pipeline[2].Kaniko)
-}
-
 func createBuilderTestEnv(cluster v1.IntegrationPlatformCluster, strategy v1.IntegrationPlatformBuildPublishStrategy, buildStrategy v1.BuildStrategy) *Environment {
 	c, err := camel.DefaultCatalog()
 	if err != nil {
@@ -170,7 +153,7 @@ func NewBuilderTestCatalog() *Catalog {
 }
 
 func TestMavenPropertyBuilderTrait(t *testing.T) {
-	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine)
+	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyS2I, v1.BuildStrategyRoutine)
 	builderTrait := createNominalBuilderTraitTest()
 	builderTrait.Properties = append(builderTrait.Properties, "build-time-prop1=build-time-value1")
 
@@ -256,7 +239,7 @@ func TestCustomTaskBuilderTraitInvalidStrategyOverride(t *testing.T) {
 }
 
 func TestMavenProfilesBuilderTrait(t *testing.T) {
-	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine)
+	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyS2I, v1.BuildStrategyRoutine)
 	builderTrait := createNominalBuilderTraitTest()
 	builderTrait.MavenProfiles = []string{"configmap:maven-profile/owasp-profile.xml", "secret:maven-profile-secret"}
 
@@ -283,7 +266,7 @@ func TestMavenProfilesBuilderTrait(t *testing.T) {
 }
 
 func TestInvalidMavenProfilesBuilderTrait(t *testing.T) {
-	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyKaniko, v1.BuildStrategyRoutine)
+	env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyS2I, v1.BuildStrategyRoutine)
 	builderTrait := createNominalBuilderTraitTest()
 	builderTrait.MavenProfiles = []string{"fakeprofile"}
 
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index bbccb6566..d1d6b84a8 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -28,12 +28,6 @@ const (
 	// DefaultRuntimeVersion --
 	DefaultRuntimeVersion = "3.2.3"
 
-	// BuildahVersion --
-	BuildahVersion = "1.30.0"
-
-	// KanikoVersion --
-	KanikoVersion = "1.9.1"
-
 	// baseImage --
 	baseImage = "eclipse-temurin:17"
 
diff --git a/script/Makefile b/script/Makefile
index 817a65d61..e9d67ef14 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -24,8 +24,6 @@ VERSION ?= 2.3.0-SNAPSHOT
 LAST_RELEASED_IMAGE_NAME := camel-k-operator
 LAST_RELEASED_VERSION ?= 2.2.0
 DEFAULT_RUNTIME_VERSION := 3.2.3
-BUILDAH_VERSION := 1.30.0
-KANIKO_VERSION := 1.9.1
 CONTROLLER_GEN_VERSION := v0.6.1
 CODEGEN_VERSION := v0.27.4
 OPERATOR_SDK_VERSION := v1.28.0
@@ -180,12 +178,6 @@ codegen:
 	@echo "  // DefaultRuntimeVersion -- " >> $(VERSIONFILE)
 	@echo "  DefaultRuntimeVersion = \"$(DEFAULT_RUNTIME_VERSION)\"" >> $(VERSIONFILE)
 	@echo "" >> $(VERSIONFILE)
-	@echo "  // BuildahVersion -- " >> $(VERSIONFILE)
-	@echo "  BuildahVersion = \"$(BUILDAH_VERSION)\"" >> $(VERSIONFILE)
-	@echo "" >> $(VERSIONFILE)
-	@echo "  // KanikoVersion -- " >> $(VERSIONFILE)
-	@echo "  KanikoVersion = \"$(KANIKO_VERSION)\"" >> $(VERSIONFILE)
-	@echo "" >> $(VERSIONFILE)
 	@echo "  // baseImage -- " >> $(VERSIONFILE)
 	@echo "  baseImage = \"$(BASE_IMAGE)\"" >> $(VERSIONFILE)
 	@echo "" >> $(VERSIONFILE)
diff --git a/script/update_docs.sh b/script/update_docs.sh
index c64fcb540..0439606dc 100755
--- a/script/update_docs.sh
+++ b/script/update_docs.sh
@@ -40,18 +40,12 @@ else
     fi
     KAMELETS_DOCS_VERSION="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.x"
 fi
-BUILDAH_VERSION=$(grep '^BUILDAH_VERSION := ' Makefile | sed 's/^.* \?= //')
-KANIKO_VERSION=$(grep '^KANIKO_VERSION := ' Makefile | sed 's/^.* \?= //')
 KUSTOMIZE_VERSION=$(grep '^KUSTOMIZE_VERSION := ' Makefile | sed 's/^.* \?= //' | sed 's/^.//')
 
 echo "Camel K Runtime version: $RUNTIME_VERSION"
 echo "Kamelets version: $KAMELETS_VERSION"
-echo "Buildah version: $BUILDAH_VERSION"
-echo "Kaniko version: $KANIKO_VERSION"
 echo "Kustomize version: $KUSTOMIZE_VERSION"
 
-yq -i ".asciidoc.attributes.buildah-version = \"$BUILDAH_VERSION\"" $location/../docs/antora.yml
-yq -i ".asciidoc.attributes.kaniko-version = \"$KANIKO_VERSION\"" $location/../docs/antora.yml
 yq -i ".asciidoc.attributes.kustomize-version = \"$KUSTOMIZE_VERSION\"" $location/../docs/antora.yml
 
 echo "Scraping information from catalog available at: $CATALOG"