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

[camel-k] 06/09: feat(pipeline): configure requests and limits for all tasks

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 889c4938f5250ab9f8fbd41d416710c11f3bd9a2
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Tue Sep 26 15:31:02 2023 +0200

    feat(pipeline): configure requests and limits for all tasks
---
 config/crd/bases/camel.apache.org_builds.yaml      | 258 +++++++++++++++++++++
 .../bases/camel.apache.org_integrationkits.yaml    |  46 +++-
 .../camel.apache.org_integrationplatforms.yaml     |  92 ++++++--
 .../crd/bases/camel.apache.org_integrations.yaml   |  46 +++-
 .../bases/camel.apache.org_kameletbindings.yaml    |  46 +++-
 config/crd/bases/camel.apache.org_pipes.yaml       |  46 +++-
 docs/modules/ROOT/pages/pipeline/pipeline.adoc     |   2 +
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |  52 ++++-
 docs/modules/traits/pages/builder.adoc             |  22 +-
 helm/camel-k/crds/crd-build.yaml                   | 258 +++++++++++++++++++++
 helm/camel-k/crds/crd-integration-kit.yaml         |  46 +++-
 helm/camel-k/crds/crd-integration-platform.yaml    |  92 ++++++--
 helm/camel-k/crds/crd-integration.yaml             |  46 +++-
 helm/camel-k/crds/crd-kamelet-binding.yaml         |  46 +++-
 helm/camel-k/crds/crd-pipe.yaml                    |  46 +++-
 pkg/apis/camel/v1/build_types.go                   |   4 +-
 pkg/apis/camel/v1/build_types_support.go           |  33 ++-
 pkg/apis/camel/v1/trait/builder.go                 |  14 +-
 pkg/apis/camel/v1/trait/zz_generated.deepcopy.go   |  20 ++
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |   2 +-
 .../camel/applyconfiguration/camel/v1/basetask.go  |  11 +-
 .../applyconfiguration/camel/v1/buildahtask.go     |   8 +
 .../applyconfiguration/camel/v1/buildertask.go     |  15 +-
 .../camel/applyconfiguration/camel/v1/jibtask.go   |   8 +
 .../applyconfiguration/camel/v1/kanikotask.go      |   8 +
 .../camel/applyconfiguration/camel/v1/s2itask.go   |   8 +
 .../applyconfiguration/camel/v1/spectrumtask.go    |   8 +
 .../camel/applyconfiguration/camel/v1/usertask.go  |   8 +
 pkg/controller/build/build_monitor_test.go         |  12 +-
 pkg/controller/build/build_pod.go                  |   9 +-
 pkg/controller/integrationkit/build.go             |   2 +-
 pkg/resources/resources.go                         |  28 +--
 pkg/trait/builder.go                               | 149 ++++++++----
 pkg/trait/builder_test.go                          |  33 ++-
 resources/traits.yaml                              |  34 ++-
 35 files changed, 1343 insertions(+), 215 deletions(-)

diff --git a/config/crd/bases/camel.apache.org_builds.yaml b/config/crd/bases/camel.apache.org_builds.yaml
index 0ff027d69..08a6cc213 100644
--- a/config/crd/bases/camel.apache.org_builds.yaml
+++ b/config/crd/bases/camel.apache.org_builds.yaml
@@ -148,6 +148,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -698,6 +741,49 @@ spec:
                           items:
                             type: string
                           type: array
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         image:
                           description: the container image to use
                           type: string
@@ -711,6 +797,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -759,6 +888,49 @@ spec:
                               description: the PVC used to store the cache
                               type: string
                           type: object
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -1298,6 +1470,49 @@ spec:
                     s2i:
                       description: a S2iTask, for S2I strategy
                       properties:
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -1314,6 +1529,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml b/config/crd/bases/camel.apache.org_integrationkits.yaml
index ea68807a3..359ef577c 100644
--- a/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -204,12 +204,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -234,12 +236,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -247,7 +251,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/config/crd/bases/camel.apache.org_integrationplatforms.yaml b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index a37e7c91d..5d3de2436 100644
--- a/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -507,12 +507,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -537,12 +539,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -550,7 +554,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
@@ -2281,12 +2309,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -2311,12 +2341,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -2324,7 +2356,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml
index 042186be4..f7fefbc25 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -6424,12 +6424,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -6454,12 +6456,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -6467,7 +6471,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/config/crd/bases/camel.apache.org_kameletbindings.yaml b/config/crd/bases/camel.apache.org_kameletbindings.yaml
index 1181e466b..69d9aee3d 100644
--- a/config/crd/bases/camel.apache.org_kameletbindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -6706,12 +6706,14 @@ spec:
                               All traits share this common property.
                             type: boolean
                           limitCPU:
-                            description: When using `pod` strategy, the maximum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           limitMemory:
-                            description: When using `pod` strategy, the maximum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           mavenProfiles:
                             description: 'A list of references pointing to configmaps/secrets
@@ -6737,12 +6739,14 @@ spec:
                               type: string
                             type: array
                           requestCPU:
-                            description: When using `pod` strategy, the minimum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           requestMemory:
-                            description: When using `pod` strategy, the minimum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           strategy:
                             description: The strategy to use, either `pod` or `routine`
@@ -6750,7 +6754,31 @@ spec:
                             type: string
                           tasks:
                             description: A list of tasks to be executed (available
-                              only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                              only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitCPU:
+                            description: A list of limit cpu configuration for the
+                              specific task with format `<task-name>:<limit-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitMemory:
+                            description: A list of limit memory configuration for
+                              the specific task with format `<task-name>:<limit-memory-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestCPU:
+                            description: A list of request cpu configuration for the
+                              specific task with format `<task-name>:<request-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestMemory:
+                            description: A list of request memory configuration for
+                              the specific task with format `<task-name>:<request-memory-conf>`.
                             items:
                               type: string
                             type: array
diff --git a/config/crd/bases/camel.apache.org_pipes.yaml b/config/crd/bases/camel.apache.org_pipes.yaml
index d6b5e1269..23a287c66 100644
--- a/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/config/crd/bases/camel.apache.org_pipes.yaml
@@ -6703,12 +6703,14 @@ spec:
                               All traits share this common property.
                             type: boolean
                           limitCPU:
-                            description: When using `pod` strategy, the maximum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           limitMemory:
-                            description: When using `pod` strategy, the maximum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           mavenProfiles:
                             description: 'A list of references pointing to configmaps/secrets
@@ -6734,12 +6736,14 @@ spec:
                               type: string
                             type: array
                           requestCPU:
-                            description: When using `pod` strategy, the minimum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           requestMemory:
-                            description: When using `pod` strategy, the minimum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           strategy:
                             description: The strategy to use, either `pod` or `routine`
@@ -6747,7 +6751,31 @@ spec:
                             type: string
                           tasks:
                             description: A list of tasks to be executed (available
-                              only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                              only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitCPU:
+                            description: A list of limit cpu configuration for the
+                              specific task with format `<task-name>:<limit-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitMemory:
+                            description: A list of limit memory configuration for
+                              the specific task with format `<task-name>:<limit-memory-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestCPU:
+                            description: A list of request cpu configuration for the
+                              specific task with format `<task-name>:<request-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestMemory:
+                            description: A list of request memory configuration for
+                              the specific task with format `<task-name>:<request-memory-conf>`.
                             items:
                               type: string
                             type: array
diff --git a/docs/modules/ROOT/pages/pipeline/pipeline.adoc b/docs/modules/ROOT/pages/pipeline/pipeline.adoc
index 5e593dfb8..85bbdf3a8 100644
--- a/docs/modules/ROOT/pages/pipeline/pipeline.adoc
+++ b/docs/modules/ROOT/pages/pipeline/pipeline.adoc
@@ -50,6 +50,8 @@ Maintaining the example above as a reference, configuring a custom task will be
 kamel run Test.java -t builder.tasks=custom1;alpine;tree -t builder.tasks="custom2;alpine;cat maven/pom.xml"
 ```
 
+Another interesting configuration you can provide via Builder trait is the (https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)[Kubernetes requests and limits]. Each of the task you are providing in the pipeline, can be configured with the proper resource settings. You can use, for instance the `-t builder.request-cpu <task-name>:1000m` to configure the container executed by the `task-name`. This configuration works for all the tasks including `builder`, `pack [...]
+
 [[build-pipeline-result]]
 == Getting task execution status
 
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 3afd80dd3..6fa1d8f2c 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -429,6 +429,13 @@ string
 
 name of the task
 
+|`configuration` +
+*xref:#_camel_apache_org_v1_BuildConfiguration[BuildConfiguration]*
+|
+
+
+The configuration that should be used to perform the Build.
+
 
 |===
 
@@ -526,8 +533,8 @@ BuildConditionType -- .
 
 *Appears on:*
 
+* <<#_camel_apache_org_v1_BaseTask, BaseTask>>
 * <<#_camel_apache_org_v1_BuildSpec, BuildSpec>>
-* <<#_camel_apache_org_v1_BuilderTask, BuilderTask>>
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
 
 BuildConfiguration represent the configuration required to build the runtime.
@@ -864,13 +871,6 @@ BuilderTask is the generic task in charge of building the application image.
 
 
 
-|`configuration` +
-*xref:#_camel_apache_org_v1_BuildConfiguration[BuildConfiguration]*
-|
-
-
-The configuration that should be used to perform the Build.
-
 |`baseImage` +
 string
 |
@@ -1169,7 +1169,7 @@ loaders required by this catalog
 
 * <<#_camel_apache_org_v1_CamelCatalog, CamelCatalog>>
 
-CamelCatalogStatus defines the observed state of CamelCatalog. As the catalog is a static resource, we expect it to be empty.
+CamelCatalogStatus defines the observed state of CamelCatalog.
 
 [cols="2,2a",options="header"]
 |===
@@ -5800,6 +5800,7 @@ string
 
 
 When using `pod` strategy, the minimum amount of CPU required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 |`requestMemory` +
 string
@@ -5807,6 +5808,7 @@ string
 
 
 When using `pod` strategy, the minimum amount of memory required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 |`limitCPU` +
 string
@@ -5814,6 +5816,7 @@ string
 
 
 When using `pod` strategy, the maximum amount of CPU required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 |`limitMemory` +
 string
@@ -5821,6 +5824,7 @@ string
 
 
 When using `pod` strategy, the maximum amount of memory required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 |`mavenProfiles` +
 []string
@@ -5836,7 +5840,35 @@ Syntax: [configmap{vbar}secret]:name[/key], where name represents the resource n
 |
 
 
-A list of tasks to be executed (available only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+A list of tasks to be executed (available only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+
+|`tasksRequestCPU` +
+[]string
+|
+
+
+A list of request cpu configuration for the specific task with format `<task-name>:<request-cpu-conf>`.
+
+|`tasksRequestMemory` +
+[]string
+|
+
+
+A list of request memory configuration for the specific task with format `<task-name>:<request-memory-conf>`.
+
+|`tasksLimitCPU` +
+[]string
+|
+
+
+A list of limit cpu configuration for the specific task with format `<task-name>:<limit-cpu-conf>`.
+
+|`tasksLimitMemory` +
+[]string
+|
+
+
+A list of limit memory configuration for the specific task with format `<task-name>:<limit-memory-conf>`.
 
 
 |===
diff --git a/docs/modules/traits/pages/builder.adoc b/docs/modules/traits/pages/builder.adoc
index 891bd196d..e990024ab 100755
--- a/docs/modules/traits/pages/builder.adoc
+++ b/docs/modules/traits/pages/builder.adoc
@@ -47,18 +47,22 @@ The following configuration options are available:
 | builder.request-cpu
 | string
 | When using `pod` strategy, the minimum amount of CPU required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 | builder.request-memory
 | string
 | When using `pod` strategy, the minimum amount of memory required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 | builder.limit-cpu
 | string
 | When using `pod` strategy, the maximum amount of CPU required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 | builder.limit-memory
 | string
 | When using `pod` strategy, the maximum amount of memory required by the pod builder.
+Deprecated: use TasksRequestCPU instead with task name `builder`.
 
 | builder.maven-profiles
 | []string
@@ -68,7 +72,23 @@ Syntax: [configmap\|secret]:name[/key], where name represents the resource name,
 
 | builder.tasks
 | []string
-| A list of tasks to be executed (available only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+| A list of tasks to be executed (available only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+
+| builder.tasks-request-cpu
+| []string
+| A list of request cpu configuration for the specific task with format `<task-name>:<request-cpu-conf>`.
+
+| builder.tasks-request-memory
+| []string
+| A list of request memory configuration for the specific task with format `<task-name>:<request-memory-conf>`.
+
+| builder.tasks-limit-cpu
+| []string
+| A list of limit cpu configuration for the specific task with format `<task-name>:<limit-cpu-conf>`.
+
+| builder.tasks-limit-memory
+| []string
+| A list of limit memory configuration for the specific task with format `<task-name>:<limit-memory-conf>`.
 
 |===
 
diff --git a/helm/camel-k/crds/crd-build.yaml b/helm/camel-k/crds/crd-build.yaml
index 0ff027d69..08a6cc213 100644
--- a/helm/camel-k/crds/crd-build.yaml
+++ b/helm/camel-k/crds/crd-build.yaml
@@ -148,6 +148,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -698,6 +741,49 @@ spec:
                           items:
                             type: string
                           type: array
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         image:
                           description: the container image to use
                           type: string
@@ -711,6 +797,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -759,6 +888,49 @@ spec:
                               description: the PVC used to store the cache
                               type: string
                           type: object
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -1298,6 +1470,49 @@ spec:
                     s2i:
                       description: a S2iTask, for S2I strategy
                       properties:
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
@@ -1314,6 +1529,49 @@ spec:
                         baseImage:
                           description: base image layer
                           type: string
+                        configuration:
+                          description: The configuration that should be used to perform
+                            the Build.
+                          properties:
+                            limitCPU:
+                              description: The maximum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            limitMemory:
+                              description: The maximum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            operatorNamespace:
+                              description: The namespace where to run the builder
+                                Pod (must be the same of the operator in charge of
+                                this Build reconciliation).
+                              type: string
+                            orderStrategy:
+                              description: the build order strategy to adopt
+                              enum:
+                              - dependencies
+                              - fifo
+                              - sequential
+                              type: string
+                            requestCPU:
+                              description: The minimum amount of CPU required. Only
+                                used for `pod` strategy
+                              type: string
+                            requestMemory:
+                              description: The minimum amount of memory required.
+                                Only used for `pod` strategy
+                              type: string
+                            strategy:
+                              description: the strategy to adopt
+                              enum:
+                              - routine
+                              - pod
+                              type: string
+                            toolImage:
+                              description: The container image to be used to run the
+                                build.
+                              type: string
+                          type: object
                         contextDir:
                           description: can be useful to share info with other tasks
                           type: string
diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml
index ea68807a3..359ef577c 100644
--- a/helm/camel-k/crds/crd-integration-kit.yaml
+++ b/helm/camel-k/crds/crd-integration-kit.yaml
@@ -204,12 +204,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -234,12 +236,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -247,7 +251,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/helm/camel-k/crds/crd-integration-platform.yaml b/helm/camel-k/crds/crd-integration-platform.yaml
index a37e7c91d..5d3de2436 100644
--- a/helm/camel-k/crds/crd-integration-platform.yaml
+++ b/helm/camel-k/crds/crd-integration-platform.yaml
@@ -507,12 +507,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -537,12 +539,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -550,7 +554,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
@@ -2281,12 +2309,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -2311,12 +2341,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -2324,7 +2356,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml
index 042186be4..f7fefbc25 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -6424,12 +6424,14 @@ spec:
                           traits share this common property.
                         type: boolean
                       limitCPU:
-                        description: When using `pod` strategy, the maximum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       limitMemory:
-                        description: When using `pod` strategy, the maximum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the maximum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       mavenProfiles:
                         description: 'A list of references pointing to configmaps/secrets
@@ -6454,12 +6456,14 @@ spec:
                           type: string
                         type: array
                       requestCPU:
-                        description: When using `pod` strategy, the minimum amount
-                          of CPU required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of CPU required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       requestMemory:
-                        description: When using `pod` strategy, the minimum amount
-                          of memory required by the pod builder.
+                        description: 'When using `pod` strategy, the minimum amount
+                          of memory required by the pod builder. Deprecated: use TasksRequestCPU
+                          instead with task name `builder`.'
                         type: string
                       strategy:
                         description: The strategy to use, either `pod` or `routine`
@@ -6467,7 +6471,31 @@ spec:
                         type: string
                       tasks:
                         description: A list of tasks to be executed (available only
-                          when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitCPU:
+                        description: A list of limit cpu configuration for the specific
+                          task with format `<task-name>:<limit-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksLimitMemory:
+                        description: A list of limit memory configuration for the
+                          specific task with format `<task-name>:<limit-memory-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestCPU:
+                        description: A list of request cpu configuration for the specific
+                          task with format `<task-name>:<request-cpu-conf>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksRequestMemory:
+                        description: A list of request memory configuration for the
+                          specific task with format `<task-name>:<request-memory-conf>`.
                         items:
                           type: string
                         type: array
diff --git a/helm/camel-k/crds/crd-kamelet-binding.yaml b/helm/camel-k/crds/crd-kamelet-binding.yaml
index 1181e466b..69d9aee3d 100644
--- a/helm/camel-k/crds/crd-kamelet-binding.yaml
+++ b/helm/camel-k/crds/crd-kamelet-binding.yaml
@@ -6706,12 +6706,14 @@ spec:
                               All traits share this common property.
                             type: boolean
                           limitCPU:
-                            description: When using `pod` strategy, the maximum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           limitMemory:
-                            description: When using `pod` strategy, the maximum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           mavenProfiles:
                             description: 'A list of references pointing to configmaps/secrets
@@ -6737,12 +6739,14 @@ spec:
                               type: string
                             type: array
                           requestCPU:
-                            description: When using `pod` strategy, the minimum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           requestMemory:
-                            description: When using `pod` strategy, the minimum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           strategy:
                             description: The strategy to use, either `pod` or `routine`
@@ -6750,7 +6754,31 @@ spec:
                             type: string
                           tasks:
                             description: A list of tasks to be executed (available
-                              only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                              only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitCPU:
+                            description: A list of limit cpu configuration for the
+                              specific task with format `<task-name>:<limit-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitMemory:
+                            description: A list of limit memory configuration for
+                              the specific task with format `<task-name>:<limit-memory-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestCPU:
+                            description: A list of request cpu configuration for the
+                              specific task with format `<task-name>:<request-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestMemory:
+                            description: A list of request memory configuration for
+                              the specific task with format `<task-name>:<request-memory-conf>`.
                             items:
                               type: string
                             type: array
diff --git a/helm/camel-k/crds/crd-pipe.yaml b/helm/camel-k/crds/crd-pipe.yaml
index d6b5e1269..23a287c66 100644
--- a/helm/camel-k/crds/crd-pipe.yaml
+++ b/helm/camel-k/crds/crd-pipe.yaml
@@ -6703,12 +6703,14 @@ spec:
                               All traits share this common property.
                             type: boolean
                           limitCPU:
-                            description: When using `pod` strategy, the maximum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           limitMemory:
-                            description: When using `pod` strategy, the maximum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the maximum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           mavenProfiles:
                             description: 'A list of references pointing to configmaps/secrets
@@ -6734,12 +6736,14 @@ spec:
                               type: string
                             type: array
                           requestCPU:
-                            description: When using `pod` strategy, the minimum amount
-                              of CPU required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of CPU required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           requestMemory:
-                            description: When using `pod` strategy, the minimum amount
-                              of memory required by the pod builder.
+                            description: 'When using `pod` strategy, the minimum amount
+                              of memory required by the pod builder. Deprecated: use
+                              TasksRequestCPU instead with task name `builder`.'
                             type: string
                           strategy:
                             description: The strategy to use, either `pod` or `routine`
@@ -6747,7 +6751,31 @@ spec:
                             type: string
                           tasks:
                             description: A list of tasks to be executed (available
-                              only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+                              only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitCPU:
+                            description: A list of limit cpu configuration for the
+                              specific task with format `<task-name>:<limit-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksLimitMemory:
+                            description: A list of limit memory configuration for
+                              the specific task with format `<task-name>:<limit-memory-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestCPU:
+                            description: A list of request cpu configuration for the
+                              specific task with format `<task-name>:<request-cpu-conf>`.
+                            items:
+                              type: string
+                            type: array
+                          tasksRequestMemory:
+                            description: A list of request memory configuration for
+                              the specific task with format `<task-name>:<request-memory-conf>`.
                             items:
                               type: string
                             type: array
diff --git a/pkg/apis/camel/v1/build_types.go b/pkg/apis/camel/v1/build_types.go
index 581ec47dd..c78a1d732 100644
--- a/pkg/apis/camel/v1/build_types.go
+++ b/pkg/apis/camel/v1/build_types.go
@@ -84,13 +84,13 @@ type Task struct {
 type BaseTask struct {
 	// name of the task
 	Name string `json:"name,omitempty"`
+	// The configuration that should be used to perform the Build.
+	Configuration BuildConfiguration `json:"configuration,omitempty"`
 }
 
 // BuilderTask is the generic task in charge of building the application image.
 type BuilderTask struct {
 	BaseTask `json:",inline"`
-	// The configuration that should be used to perform the Build.
-	Configuration BuildConfiguration `json:"configuration,omitempty"`
 	// the base image layer
 	BaseImage string `json:"baseImage,omitempty"`
 	// the configuration required for the runtime application
diff --git a/pkg/apis/camel/v1/build_types_support.go b/pkg/apis/camel/v1/build_types_support.go
index 396997fa1..a9777b65f 100644
--- a/pkg/apis/camel/v1/build_types_support.go
+++ b/pkg/apis/camel/v1/build_types_support.go
@@ -56,8 +56,12 @@ func (build *Build) BuilderPodNamespace() string {
 
 // BuilderConfiguration returns the builder configuration for this Build.
 func (build *Build) BuilderConfiguration() *BuildConfiguration {
-	return BuilderConfigurationTasks(build.Spec.Tasks)
+	return build.TaskConfiguration("builder")
+}
 
+// TaskConfiguration returns the task configuration of this Build.
+func (build *Build) TaskConfiguration(name string) *BuildConfiguration {
+	return ConfigurationTasksByName(build.Spec.Tasks, name)
 }
 
 // BuilderDependencies returns the list of dependencies configured on by the builder task for this Build.
@@ -79,12 +83,33 @@ func FindBuilderTask(tasks []Task) (*BuilderTask, bool) {
 	return nil, false
 }
 
-// BuilderConfigurationTasks returns the builder configuration from the task list.
-func BuilderConfigurationTasks(tasks []Task) *BuildConfiguration {
+// ConfigurationTasksByName returns the container configuration from the task list.
+func ConfigurationTasksByName(tasks []Task, name string) *BuildConfiguration {
 	for _, t := range tasks {
-		if t.Builder != nil {
+		if t.Builder != nil && t.Builder.Name == name {
 			return &t.Builder.Configuration
 		}
+		if t.Custom != nil && t.Custom.Name == name {
+			return &t.Custom.Configuration
+		}
+		if t.Package != nil && t.Package.Name == name {
+			return &t.Package.Configuration
+		}
+		if t.Spectrum != nil && t.Spectrum.Name == name {
+			return &t.Spectrum.Configuration
+		}
+		if t.S2i != nil && t.S2i.Name == name {
+			return &t.S2i.Configuration
+		}
+		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/trait/builder.go b/pkg/apis/camel/v1/trait/builder.go
index 166975c3b..38d4b0729 100644
--- a/pkg/apis/camel/v1/trait/builder.go
+++ b/pkg/apis/camel/v1/trait/builder.go
@@ -32,17 +32,29 @@ type BuilderTrait struct {
 	// The build order strategy to use, either `dependencies`, `fifo` or `sequential` (default sequential)
 	OrderStrategy string `property:"order-strategy" json:"orderStrategy,omitempty"`
 	// When using `pod` strategy, the minimum amount of CPU required by the pod builder.
+	// Deprecated: use TasksRequestCPU instead with task name `builder`.
 	RequestCPU string `property:"request-cpu" json:"requestCPU,omitempty"`
 	// When using `pod` strategy, the minimum amount of memory required by the pod builder.
+	// Deprecated: use TasksRequestCPU instead with task name `builder`.
 	RequestMemory string `property:"request-memory" json:"requestMemory,omitempty"`
 	// When using `pod` strategy, the maximum amount of CPU required by the pod builder.
+	// Deprecated: use TasksRequestCPU instead with task name `builder`.
 	LimitCPU string `property:"limit-cpu" json:"limitCPU,omitempty"`
 	// When using `pod` strategy, the maximum amount of memory required by the pod builder.
+	// Deprecated: use TasksRequestCPU instead with task name `builder`.
 	LimitMemory string `property:"limit-memory" json:"limitMemory,omitempty"`
 	// A list of references pointing to configmaps/secrets that contains a maven profile.
 	// The content of the maven profile is expected to be a text containing a valid maven profile starting with `<profile>` and ending with `</profile>` that will be integrated as an inline profile in the POM.
 	// Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml).
 	MavenProfiles []string `property:"maven-profiles" json:"mavenProfiles,omitempty"`
-	// A list of tasks to be executed (available only when using `pod` strategy) with format <name>;<container-image>;<container-command>
+	// A list of tasks to be executed (available only when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
 	Tasks []string `property:"tasks" json:"tasks,omitempty"`
+	// A list of request cpu configuration for the specific task with format `<task-name>:<request-cpu-conf>`.
+	TasksRequestCPU []string `property:"tasks-request-cpu" json:"tasksRequestCPU,omitempty"`
+	// A list of request memory configuration for the specific task with format `<task-name>:<request-memory-conf>`.
+	TasksRequestMemory []string `property:"tasks-request-memory" json:"tasksRequestMemory,omitempty"`
+	// A list of limit cpu configuration for the specific task with format `<task-name>:<limit-cpu-conf>`.
+	TasksLimitCPU []string `property:"tasks-limit-cpu" json:"tasksLimitCPU,omitempty"`
+	// A list of limit memory configuration for the specific task with format `<task-name>:<limit-memory-conf>`.
+	TasksLimitMemory []string `property:"tasks-limit-memory" json:"tasksLimitMemory,omitempty"`
 }
diff --git a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
index 505fbfd0a..471156af8 100644
--- a/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/trait/zz_generated.deepcopy.go
@@ -74,6 +74,26 @@ func (in *BuilderTrait) DeepCopyInto(out *BuilderTrait) {
 		*out = make([]string, len(*in))
 		copy(*out, *in)
 	}
+	if in.TasksRequestCPU != nil {
+		in, out := &in.TasksRequestCPU, &out.TasksRequestCPU
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.TasksRequestMemory != nil {
+		in, out := &in.TasksRequestMemory, &out.TasksRequestMemory
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.TasksLimitCPU != nil {
+		in, out := &in.TasksLimitCPU, &out.TasksLimitCPU
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
+	if in.TasksLimitMemory != nil {
+		in, out := &in.TasksLimitMemory, &out.TasksLimitMemory
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BuilderTrait.
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index b77a301d9..34a3fb6c8 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -66,6 +66,7 @@ func (in *Artifact) DeepCopy() *Artifact {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *BaseTask) DeepCopyInto(out *BaseTask) {
 	*out = *in
+	out.Configuration = in.Configuration
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BaseTask.
@@ -275,7 +276,6 @@ func (in *BuildahTask) DeepCopy() *BuildahTask {
 func (in *BuilderTask) DeepCopyInto(out *BuilderTask) {
 	*out = *in
 	out.BaseTask = in.BaseTask
-	out.Configuration = in.Configuration
 	in.Runtime.DeepCopyInto(&out.Runtime)
 	if in.Dependencies != nil {
 		in, out := &in.Dependencies, &out.Dependencies
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/basetask.go b/pkg/client/camel/applyconfiguration/camel/v1/basetask.go
index 72bc6c228..575fb3cc3 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/basetask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/basetask.go
@@ -22,7 +22,8 @@ package v1
 // BaseTaskApplyConfiguration represents an declarative configuration of the BaseTask type for use
 // with apply.
 type BaseTaskApplyConfiguration struct {
-	Name *string `json:"name,omitempty"`
+	Name          *string                               `json:"name,omitempty"`
+	Configuration *BuildConfigurationApplyConfiguration `json:"configuration,omitempty"`
 }
 
 // BaseTaskApplyConfiguration constructs an declarative configuration of the BaseTask type for use with
@@ -38,3 +39,11 @@ func (b *BaseTaskApplyConfiguration) WithName(value string) *BaseTaskApplyConfig
 	b.Name = &value
 	return b
 }
+
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *BaseTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *BaseTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/buildahtask.go b/pkg/client/camel/applyconfiguration/camel/v1/buildahtask.go
index 3c34e512b..eb5c5b10e 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/buildahtask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/buildahtask.go
@@ -43,6 +43,14 @@ func (b *BuildahTaskApplyConfiguration) WithName(value string) *BuildahTaskApply
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *BuildahTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *BuildahTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContextDir sets the ContextDir field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContextDir field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/buildertask.go b/pkg/client/camel/applyconfiguration/camel/v1/buildertask.go
index 8198337eb..e7a0dc9af 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/buildertask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/buildertask.go
@@ -23,14 +23,13 @@ package v1
 // with apply.
 type BuilderTaskApplyConfiguration struct {
 	BaseTaskApplyConfiguration `json:",inline"`
-	Configuration              *BuildConfigurationApplyConfiguration `json:"configuration,omitempty"`
-	BaseImage                  *string                               `json:"baseImage,omitempty"`
-	Runtime                    *RuntimeSpecApplyConfiguration        `json:"runtime,omitempty"`
-	Dependencies               []string                              `json:"dependencies,omitempty"`
-	Steps                      []string                              `json:"steps,omitempty"`
-	Maven                      *MavenBuildSpecApplyConfiguration     `json:"maven,omitempty"`
-	BuildDir                   *string                               `json:"buildDir,omitempty"`
-	Sources                    []SourceSpecApplyConfiguration        `json:"sources,omitempty"`
+	BaseImage                  *string                           `json:"baseImage,omitempty"`
+	Runtime                    *RuntimeSpecApplyConfiguration    `json:"runtime,omitempty"`
+	Dependencies               []string                          `json:"dependencies,omitempty"`
+	Steps                      []string                          `json:"steps,omitempty"`
+	Maven                      *MavenBuildSpecApplyConfiguration `json:"maven,omitempty"`
+	BuildDir                   *string                           `json:"buildDir,omitempty"`
+	Sources                    []SourceSpecApplyConfiguration    `json:"sources,omitempty"`
 }
 
 // BuilderTaskApplyConfiguration constructs an declarative configuration of the BuilderTask type for use with
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/jibtask.go b/pkg/client/camel/applyconfiguration/camel/v1/jibtask.go
index 1e87d4281..c9d98ecfc 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/jibtask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/jibtask.go
@@ -40,6 +40,14 @@ func (b *JibTaskApplyConfiguration) WithName(value string) *JibTaskApplyConfigur
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *JibTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *JibTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContextDir sets the ContextDir field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContextDir field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/kanikotask.go b/pkg/client/camel/applyconfiguration/camel/v1/kanikotask.go
index 1b0a1e12c..67aeea0c3 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/kanikotask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/kanikotask.go
@@ -43,6 +43,14 @@ func (b *KanikoTaskApplyConfiguration) WithName(value string) *KanikoTaskApplyCo
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *KanikoTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *KanikoTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContextDir sets the ContextDir field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContextDir field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/s2itask.go b/pkg/client/camel/applyconfiguration/camel/v1/s2itask.go
index 232e2355e..da1a36d56 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/s2itask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/s2itask.go
@@ -41,6 +41,14 @@ func (b *S2iTaskApplyConfiguration) WithName(value string) *S2iTaskApplyConfigur
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *S2iTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *S2iTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContextDir sets the ContextDir field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContextDir field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/spectrumtask.go b/pkg/client/camel/applyconfiguration/camel/v1/spectrumtask.go
index c70d4d629..6ba50a2ae 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/spectrumtask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/spectrumtask.go
@@ -40,6 +40,14 @@ func (b *SpectrumTaskApplyConfiguration) WithName(value string) *SpectrumTaskApp
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *SpectrumTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *SpectrumTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContextDir sets the ContextDir field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContextDir field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/usertask.go b/pkg/client/camel/applyconfiguration/camel/v1/usertask.go
index 65b7c5c2a..f4fc11c89 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/usertask.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/usertask.go
@@ -42,6 +42,14 @@ func (b *UserTaskApplyConfiguration) WithName(value string) *UserTaskApplyConfig
 	return b
 }
 
+// WithConfiguration sets the Configuration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Configuration field is set to the value of the last call.
+func (b *UserTaskApplyConfiguration) WithConfiguration(value *BuildConfigurationApplyConfiguration) *UserTaskApplyConfiguration {
+	b.Configuration = value
+	return b
+}
+
 // WithContainerImage sets the ContainerImage field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ContainerImage field is set to the value of the last call.
diff --git a/pkg/controller/build/build_monitor_test.go b/pkg/controller/build/build_monitor_test.go
index 1cde7301e..7a0dbec57 100644
--- a/pkg/controller/build/build_monitor_test.go
+++ b/pkg/controller/build/build_monitor_test.go
@@ -606,11 +606,13 @@ func newBuildWithLayoutInPhase(namespace string, name string, layout string, pha
 			Tasks: []v1.Task{
 				{
 					Builder: &v1.BuilderTask{
-						Configuration: v1.BuildConfiguration{
-							Strategy:            v1.BuildStrategyRoutine,
-							OrderStrategy:       v1.BuildOrderStrategySequential,
-							ToolImage:           "camel:latest",
-							BuilderPodNamespace: "ns",
+						BaseTask: v1.BaseTask{
+							Configuration: v1.BuildConfiguration{
+								Strategy:            v1.BuildStrategyRoutine,
+								OrderStrategy:       v1.BuildOrderStrategySequential,
+								ToolImage:           "camel:latest",
+								BuilderPodNamespace: "ns",
+							},
 						},
 						Dependencies: dependencies,
 					},
diff --git a/pkg/controller/build/build_pod.go b/pkg/controller/build/build_pod.go
index 27ccd0f68..1051b974b 100644
--- a/pkg/controller/build/build_pod.go
+++ b/pkg/controller/build/build_pod.go
@@ -191,8 +191,8 @@ func newBuildPod(ctx context.Context, c ctrl.Reader, client client.Client, build
 	return pod, nil
 }
 
-func configureResources(build *v1.Build, container *corev1.Container) {
-	conf := *build.BuilderConfiguration()
+func configureResources(taskName string, build *v1.Build, container *corev1.Container) {
+	conf := build.TaskConfiguration(taskName)
 	requestsList := container.Resources.Requests
 	limitsList := container.Resources.Limits
 	var err error
@@ -312,7 +312,7 @@ func addBuildTaskToPod(ctx context.Context, client client.Client, build *v1.Buil
 		}
 	}
 
-	configureResources(build, &container)
+	configureResources(taskName, build, &container)
 	addContainerToPod(build, container, pod)
 }
 
@@ -427,6 +427,7 @@ func addBuildahTaskToPod(ctx context.Context, c ctrl.Reader, build *v1.Build, ta
 
 	pod.Spec.Volumes = append(pod.Spec.Volumes, volumes...)
 
+	configureResources(task.Name, build, &container)
 	addContainerToPod(build, container, pod)
 
 	return nil
@@ -555,6 +556,7 @@ func addKanikoTaskToPod(ctx context.Context, c ctrl.Reader, build *v1.Build, tas
 		FSGroup:    &ugfid,
 	}
 
+	configureResources(task.Name, build, &container)
 	addContainerToPod(build, container, pod)
 
 	return nil
@@ -570,6 +572,7 @@ func addCustomTaskToPod(build *v1.Build, task *v1.UserTask, pod *corev1.Pod) {
 		Env:             proxyFromEnvironment(),
 	}
 
+	configureResources(task.Name, build, &container)
 	addContainerToPod(build, container, pod)
 }
 
diff --git a/pkg/controller/integrationkit/build.go b/pkg/controller/integrationkit/build.go
index faa32c72d..a60ccc6c7 100644
--- a/pkg/controller/integrationkit/build.go
+++ b/pkg/controller/integrationkit/build.go
@@ -109,7 +109,7 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int
 
 		// We may need to change certain builder configuration values
 		operatorNamespace := platform.GetOperatorNamespace()
-		buildConfig := v1.BuilderConfigurationTasks(env.Pipeline)
+		buildConfig := v1.ConfigurationTasksByName(env.Pipeline, "builder")
 		if buildConfig.IsEmpty() {
 			// default to IntegrationPlatform configuration
 			buildConfig = &env.Platform.Status.Build.BuildConfiguration
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index fb3c4547b..23f91a87f 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: 78450,
+			uncompressedSize: 91926,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6d\x73\x1b\x37\x92\xf0\x77\xfd\x8a\xae\xf8\x43\xe4\x2a\x91\x4a\x9c\xec\x5e\x4e\x4f\x5d\x3d\xa5\x95\x93\x3d\xad\x1d\xdb\x67\x2a\xde\xdd\xba\xba\x2a\x81\x33\x4d\x12\xe1\x0c\x30\x07\x60\x24\x33\x4f\x3d\xff\xfd\x0a\x6f\xf3\x42\xce\x0b\x40\x91\xb6\xaf\x4c\x7c\x49\x2c\x62\x80\x6e\xa0\xd1\x6f\x68\x74\x3f\x83\xc9\xe1\xda\xd9\x33\x78\x4d\x13\x64\x12\x53\x50\x1c\xd4\x0a\xe1\xba\x20\xc9\x0a\x61\xc6\x17\xea\x91\x08\x84\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\xc9\xce\x66\x75\x6b\xeb\x96\x56\x4e\x66\x35\x4e\x6c\xaf\x29\x7b\x32\xb5\xb5\x55\x02\xbb\x0f\x49\x84\xdd\x40\x5f\x00\x2d\x9a\xb9\x75\xff\xfb\x2d\xbc\xfa\x21\xb2\xbb\x01\x8a\xf4\xa3\xd2\xf8\x92\x58\x44\x03\xe7\xe0\x71\xde\x38\xe7\x19\x4c\x8e\xd7\xce\x9e\xc1\xcf\x34\x41\x26\x31\x05\xc5\x41\xad\x10\xae\x0b\x92\xac\x10\x66\x7c\xa1\x36\x44\x20\xfc\x [...]
 		},
 		"/crd/bases/camel.apache.org_camelcatalogs.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_camelcatalogs.yaml",
@@ -131,30 +131,30 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_integrationkits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrationkits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 21757,
+			uncompressedSize: 23390,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3c\xdb\x72\xdb\x38\x96\xef\xfa\x8a\x53\xf1\x43\xec\x2a\x89\x9e\xde\xed\xea\xda\xf2\xf4\x74\x95\xc7\x9d\xf4\xb8\xe2\x24\xde\xc8\xe9\xde\xae\xe9\xa9\x12\x44\x1e\x49\x68\x91\x00\x1b\x00\x25\x6b\x2f\xff\xbe\x85\x03\x80\x17\x89\xa4\x68\x39\xde\xd9\x87\xf0\x25\x31\x09\x1c\x9c\xfb\x0d\x80\xce\x60\xf2\xe5\x9e\xd1\x19\xdc\xf1\x18\x85\xc6\x04\x8c\x04\xb3\x42\xb8\xce\x59\xbc\x42\x98\xca\x85\xd9\x32\x85\xf0\x56\x16\x22\x61\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3c\x5d\x73\xdb\x38\x92\xef\xfa\x15\x5d\xf1\x43\xec\x2a\x49\xde\xb9\x9b\x9a\xba\xf2\xce\x4e\x95\xd7\x49\x66\x5d\x71\x12\x9f\xa5\xcc\xdc\xd4\xce\x56\x09\x22\x5b\x12\x46\x24\xc0\x05\x40\xc9\xba\x8f\xff\x7e\x85\x06\xc0\x0f\x89\xa4\x68\x39\xde\x9b\xbd\x8a\x5e\x12\x93\x40\xa3\xd1\xdf\xdd\x40\xf3\x0c\x46\x5f\xee\x37\x38\x83\x3b\x1e\xa1\xd0\x18\x83\x91\x60\x56\x08\xd7\x19\x8b\x56\x08\x13\xb9\x30\x5b\xa6\x10\xde\xc9\x5c\x [...]
 		},
 		"/crd/bases/camel.apache.org_integrationplatforms.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrationplatforms.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 192534,
+			uncompressedSize: 195800,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdb\x36\xb6\x38\xfc\x7f\x3f\x05\xc6\x9d\x3b\x71\x32\x96\x94\xec\xde\xee\xf6\xfa\xde\xde\xe7\xe7\x3a\x69\xeb\x26\x8e\x7d\x6d\x27\xbb\x3b\x6d\xa7\x82\xc8\x23\x09\x35\x09\x70\x01\x50\xb6\x3a\xfb\xe1\x9f\xc1\x01\x40\x52\x12\x09\x52\x2f\xb6\xb3\x8d\x98\x99\xd6\x92\x48\xf0\x1c\xe0\xe0\xbc\xe1\xbc\x7c\x49\x7a\xbb\xbb\xbe\xf8\x92\xbc\x63\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\x93\x8c\x46\x53\x20\xd7\x62\xac\xef\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xfb\x72\xe3\x36\xb2\x38\xfc\x7f\x9e\x02\xe5\xd4\xa9\xf1\x4c\x59\xd2\xcc\xee\xc9\x6e\x8e\xcf\x66\xbf\x9f\xe3\x99\x24\xce\x5c\xec\x63\x7b\x66\x77\x2b\x49\x45\x10\xd9\x92\x10\x93\x00\x17\x00\x65\x2b\xb5\x0f\xff\x15\x1a\x00\x49\x49\x24\x48\x5d\x7c\x49\x22\x4e\x55\x62\x49\x24\xd8\x68\x34\xfa\x86\xbe\x7c\x4e\x7a\xbb\xbb\x3e\xfb\x9c\xbc\x63\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\x93\x8c\x46\x53\x20\x57\x62\xac\x6f\xa9\x [...]
 		},
 		"/crd/bases/camel.apache.org_integrations.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrations.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 514712,
+			uncompressedSize: 516345,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x1d\xff\xa6\x9e\x94\x56\x92\x13\xfd\x62\xcb\x2a\x49\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x44\xc7\x99\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xf4\x7c\xe3\xb3\xcf\xc9\x5b\x9e\x30\xa1\x59\x4a\x8c\x24\x66\xce\xc8\x69\x41\x93\x39\x23\xb7\x72\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x1d\xff\xa6\x9e\x94\x56\x92\x13\xfd\x62\xcb\x2a\x49\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x44\xc7\x99\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xf4\x7c\xe3\xb3\xcf\xc9\x5b\x9e\x30\xa1\x59\x4a\x8c\x24\x66\xce\xc8\x69\x41\x93\x39\x23\xb7\x72\x [...]
 		},
 		"/crd/bases/camel.apache.org_kameletbindings.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kameletbindings.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 595998,
+			uncompressedSize: 597743,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\x1b\x37\xb6\x30\x0a\x7f\xf7\xaf\x40\xc9\xa9\x47\xd2\x8e\x48\xd9\x99\x99\xd4\x8c\xdf\xa9\x9d\xd2\xc8\x72\xa2\x37\xb6\xcc\xb2\x94\xe4\x49\x39\xd9\x09\xd8\x0d\x92\xd8\xea\x06\x7a\x00\x34\x25\xe6\xf8\xfc\xf7\x53\x58\x00\xfa\xc2\x9b\xb0\x9a\x92\x46\x9e\x69\x4c\x55\xc6\xa4\xd8\xab\x71\x59\x58\xf7\xcb\x73\x32\xb8\xbf\xf1\xec\x39\x79\xcb\x13\x26\x34\x4b\x89\x91\xc4\xcc\x18\x39\x29\x68\x32\x63\xe4\x52\x4e\xcc\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\x1b\x37\xb6\x30\x0a\x7f\xf7\xaf\x40\xc9\xa9\x47\xd2\x8e\x48\xd9\x99\x99\xd4\x8c\xdf\xa9\x9d\xd2\xc8\x72\xa2\x37\xb6\xcc\xb2\x94\xe4\x49\x39\xd9\x09\xd8\x0d\x92\xd8\xea\x06\x7a\x00\x34\x25\xe6\xf8\xfc\xf7\x53\x58\x00\xfa\xc2\x9b\xb0\x9a\x92\x46\x9e\x69\x4c\x55\xc6\xa4\xd8\xab\x71\x59\x58\xf7\xcb\x73\x32\xb8\xbf\xf1\xec\x39\x79\xcb\x13\x26\x34\x4b\x89\x91\xc4\xcc\x18\x39\x29\x68\x32\x63\xe4\x52\x4e\xcc\x [...]
 		},
 		"/crd/bases/camel.apache.org_kamelets.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kamelets.yaml",
@@ -166,9 +166,9 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_pipes.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_pipes.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 563260,
+			uncompressedSize: 565005,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\xb2\x53\x47\xd2\x0e\x49\xd9\x99\x99\xd4\x1e\xff\xa6\x4e\x4a\x5b\x96\x13\xfd\x62\xcb\x2c\x4b\x49\x4e\xca\xc9\x4e\xc0\x6e\x90\xc4\x51\x37\xd0\x1b\x40\x53\x62\xae\xef\x77\xbf\x85\x05\xa0\x1f\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x3c\x27\xc3\xfb\x1b\x5f\x3c\x27\x6f\x79\xc2\x84\x66\x29\x31\x92\x98\x39\x23\x27\x05\x4d\xe6\x8c\x5c\xca\xa9\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\xb2\x53\x47\xd2\x0e\x49\xd9\x99\x99\xd4\x1e\xff\xa6\x4e\x4a\x5b\x96\x13\xfd\x62\xcb\x2c\x4b\x49\x4e\xca\xc9\x4e\xc0\x6e\x90\xc4\x51\x37\xd0\x1b\x40\x53\x62\xae\xef\x77\xbf\x85\x05\xa0\x1f\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x3c\x27\xc3\xfb\x1b\x5f\x3c\x27\x6f\x79\xc2\x84\x66\x29\x31\x92\x98\x39\x23\x27\x05\x4d\xe6\x8c\x5c\xca\xa9\x [...]
 		},
 		"/manager": &vfsgen۰DirInfo{
 			name:    "manager",
@@ -637,9 +637,9 @@ var assets = func() http.FileSystem {
 		"/traits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "traits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 68535,
+			uncompressedSize: 69520,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\xb9\x91\xe0\xef\xfe\x2b\xf0\xb4\xb7\x4f\x92\x8f\x1f\xf2\x64\x93\x9d\xd5\xc6\xd9\xd3\x78\x3c\x89\x32\xfe\xd0\x59\x9a\xc9\xe6\xf9\xfc\x42\xb0\x1b\x24\x61\x36\x81\x0e\x80\x96\xcc\xb9\xdc\xff\x7e\x0f\x55\x85\x8f\x6e\x36\x45\xca\x96\x66\xa3\xcd\x24\xef\x8d\x45\xb2\xbb\x50\x28\x14\x0a\x85\xfa\x74\x86\x4b\x67\x4f\x9f\x0c\x99\xe2\x2b\x71\xca\x7e\x65\x0b\x5e\x89\x27\x8c\xd5\x15\x77\x33\x6d\x56\xa7\x6c\xc6\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\xb9\x91\xe0\xef\xfe\x2b\xf0\xb4\xb7\x4f\x92\x8f\x1f\xf2\x64\x93\x9d\xd5\xc6\xd9\xd3\x78\x3c\x89\x32\xfe\xd0\x59\x9a\xc9\xe6\xf9\xfc\x42\xb0\x1b\x24\x61\x36\x81\x0e\x80\x96\xcc\xb9\xdc\xff\x7e\x0f\x55\x85\x8f\x6e\x36\x45\xca\x96\x66\xa3\xcd\x24\xef\x8d\x45\xb2\xbb\x50\x28\x14\x0a\x85\xfa\x74\x86\x4b\x67\x4f\x9f\x0c\x99\xe2\x2b\x71\xca\x7e\x65\x0b\x5e\x89\x27\x8c\xd5\x15\x77\x33\x6d\x56\xa7\x6c\xc6\x [...]
 		},
 	}
 	fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index 44c6763b6..e11bd7339 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -77,6 +77,13 @@ func (t *builderTrait) Configure(e *Environment) (bool, error) {
 				return false, err
 			}
 			if ok && pointer.BoolDeref(quarkus.Enabled, true) && (isNativeIntegration || isNativeKit) {
+				// Force the build to run in a separate Pod and strictly sequential
+				t.L.Info("This is a Quarkus native build: setting build configuration with build Pod strategy, and native container with 1 CPU core and 4 GiB memory. Make sure your cluster can handle it.")
+				t.Strategy = string(v1.BuildStrategyPod)
+				t.OrderStrategy = string(v1.BuildOrderStrategySequential)
+				t.TasksRequestCPU = append(t.TasksRequestCPU, "quarkus-native:1000m")
+				t.TasksRequestMemory = append(t.TasksRequestMemory, "quarkus-native:4Gi")
+
 				nativeArgsCd := filepath.Join("maven", "target", "native-sources")
 				command := "cd " + nativeArgsCd + " && echo NativeImage version is $(native-image --version) && echo GraalVM expected version is $(cat graalvm.version) && echo WARN: Make sure they are compatible, otherwise the native compilation may results in error && native-image $(cat native-image.args)"
 				// it should be performed as the last custom task
@@ -94,8 +101,13 @@ func (t *builderTrait) Apply(e *Environment) error {
 	// local pipeline tasks
 	var pipelineTasks []v1.Task
 
+	// task configuration resources
+	tasksConf, err := t.parseTasksConf()
+	if err != nil {
+		return err
+	}
 	// Building task
-	builderTask, err := t.builderTask(e)
+	builderTask, err := t.builderTask(e, taskConfOrDefault(tasksConf, "builder"))
 	if err != nil {
 		e.IntegrationKit.Status.Phase = v1.IntegrationKitPhaseError
 		e.IntegrationKit.Status.SetCondition("IntegrationKitPropertiesFormatValid", corev1.ConditionFalse,
@@ -128,7 +140,7 @@ func (t *builderTrait) Apply(e *Environment) error {
 			return nil
 		}
 
-		customTasks, err := t.customTasks()
+		customTasks, err := t.customTasks(tasksConf)
 		if err != nil {
 			return err
 		}
@@ -137,9 +149,10 @@ func (t *builderTrait) Apply(e *Environment) error {
 	}
 
 	// Packaging task
-	// It's the same builder configuration, but with different steps
+	// It's the same builder configuration, but with different steps and conf
 	packageTask := builderTask.DeepCopy()
 	packageTask.Name = "package"
+	packageTask.Configuration = *taskConfOrDefault(tasksConf, "package")
 	packageTask.Steps = make([]string, 0)
 	pipelineTasks = append(pipelineTasks, v1.Task{Package: packageTask})
 
@@ -148,7 +161,8 @@ func (t *builderTrait) Apply(e *Environment) error {
 	case v1.IntegrationPlatformBuildPublishStrategySpectrum:
 		pipelineTasks = append(pipelineTasks, v1.Task{Spectrum: &v1.SpectrumTask{
 			BaseTask: v1.BaseTask{
-				Name: "spectrum",
+				Name:          "spectrum",
+				Configuration: *taskConfOrDefault(tasksConf, "spectrum"),
 			},
 			PublishTask: v1.PublishTask{
 				BaseImage: e.Platform.Status.Build.BaseImage,
@@ -160,7 +174,8 @@ func (t *builderTrait) Apply(e *Environment) error {
 	case v1.IntegrationPlatformBuildPublishStrategyJib:
 		pipelineTasks = append(pipelineTasks, v1.Task{Jib: &v1.JibTask{
 			BaseTask: v1.BaseTask{
-				Name: "jib",
+				Name:          "jib",
+				Configuration: *taskConfOrDefault(tasksConf, "jib"),
 			},
 			PublishTask: v1.PublishTask{
 				BaseImage: e.Platform.Status.Build.BaseImage,
@@ -172,7 +187,8 @@ func (t *builderTrait) Apply(e *Environment) error {
 	case v1.IntegrationPlatformBuildPublishStrategyS2I:
 		pipelineTasks = append(pipelineTasks, v1.Task{S2i: &v1.S2iTask{
 			BaseTask: v1.BaseTask{
-				Name: "s2i",
+				Name:          "s2i",
+				Configuration: *taskConfOrDefault(tasksConf, "s2i"),
 			},
 			Tag: e.IntegrationKit.ResourceVersion,
 		}})
@@ -195,7 +211,8 @@ func (t *builderTrait) Apply(e *Environment) error {
 		pipelineTasks = append(pipelineTasks, v1.Task{Buildah: &v1.BuildahTask{
 			Platform: platform,
 			BaseTask: v1.BaseTask{
-				Name: "buildah",
+				Name:          "buildah",
+				Configuration: *taskConfOrDefault(tasksConf, "buildah"),
 			},
 			PublishTask: v1.PublishTask{
 				Image:    getImageName(e),
@@ -218,7 +235,8 @@ func (t *builderTrait) Apply(e *Environment) error {
 
 		pipelineTasks = append(pipelineTasks, v1.Task{Kaniko: &v1.KanikoTask{
 			BaseTask: v1.BaseTask{
-				Name: "kaniko",
+				Name:          "kaniko",
+				Configuration: *taskConfOrDefault(tasksConf, "kaniko"),
 			},
 			PublishTask: v1.PublishTask{
 				Image:    getImageName(e),
@@ -238,7 +256,7 @@ func (t *builderTrait) Apply(e *Environment) error {
 	return nil
 }
 
-func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
+func (t *builderTrait) builderTask(e *Environment, taskConf *v1.BuildConfiguration) (*v1.BuilderTask, error) {
 	maven := v1.MavenBuildSpec{
 		MavenSpec: e.Platform.Status.Build.Maven,
 	}
@@ -247,38 +265,13 @@ func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 		maven.Repositories = append(maven.Repositories, mvn.NewRepository(repo))
 	}
 
-	if trait := e.Catalog.GetTrait(quarkusTraitID); trait != nil {
-		quarkus, ok := trait.(*quarkusTrait)
-		isNativeIntegration := quarkus.isNativeIntegration(e)
-		isNativeKit, err := quarkus.isNativeKit(e)
-		if err != nil {
-			return nil, err
-		}
-		// The builder trait must define certain resources requirements when we have a native build
-		if ok && pointer.BoolDeref(quarkus.Enabled, true) && (isNativeIntegration || isNativeKit) {
-			// Force the build to run in a separate Pod and strictly sequential
-			t.L.Info("This is a Quarkus native build: setting build configuration with build Pod strategy, 1 CPU core and 4 GiB memory. Make sure your cluster can handle it.")
-			t.Strategy = string(v1.BuildStrategyPod)
-			t.OrderStrategy = string(v1.BuildOrderStrategySequential)
-			t.RequestCPU = "1000m"
-			t.RequestMemory = "4Gi"
-		}
-	}
-
-	buildConfig := v1.BuildConfiguration{
-		RequestCPU:    t.RequestCPU,
-		RequestMemory: t.RequestMemory,
-		LimitCPU:      t.LimitCPU,
-		LimitMemory:   t.LimitMemory,
-	}
-
 	if t.Strategy != "" {
 		t.L.Infof("User defined build strategy %s", t.Strategy)
 		found := false
 		for _, s := range v1.BuildStrategies {
 			if string(s) == t.Strategy {
 				found = true
-				buildConfig.Strategy = s
+				taskConf.Strategy = s
 				break
 			}
 		}
@@ -297,7 +290,7 @@ func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 		for _, s := range v1.BuildOrderStrategies {
 			if string(s) == t.OrderStrategy {
 				found = true
-				buildConfig.OrderStrategy = s
+				taskConf.OrderStrategy = s
 				break
 			}
 		}
@@ -312,13 +305,13 @@ func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 
 	task := &v1.BuilderTask{
 		BaseTask: v1.BaseTask{
-			Name: "builder",
+			Name:          "builder",
+			Configuration: *taskConf,
 		},
-		Configuration: buildConfig,
-		BaseImage:     e.Platform.Status.Build.BaseImage,
-		Runtime:       e.CamelCatalog.Runtime,
-		Dependencies:  e.IntegrationKit.Spec.Dependencies,
-		Maven:         maven,
+		BaseImage:    e.Platform.Status.Build.BaseImage,
+		Runtime:      e.CamelCatalog.Runtime,
+		Dependencies: e.IntegrationKit.Spec.Dependencies,
+		Maven:        maven,
 	}
 
 	if task.Maven.Properties == nil {
@@ -380,8 +373,9 @@ func getImageName(e *Environment) string {
 	return e.Platform.Status.Build.Registry.Address + "/" + organization + "/camel-k-" + e.IntegrationKit.Name + ":" + e.IntegrationKit.ResourceVersion
 }
 
-func (t *builderTrait) customTasks() ([]v1.Task, error) {
+func (t *builderTrait) customTasks(tasksConf map[string]*v1.BuildConfiguration) ([]v1.Task, error) {
 	customTasks := make([]v1.Task, len(t.Tasks))
+
 	for i, t := range t.Tasks {
 		splitted := strings.Split(t, ";")
 		if len(splitted) < 3 {
@@ -398,7 +392,8 @@ func (t *builderTrait) customTasks() ([]v1.Task, error) {
 		customTasks[i] = v1.Task{
 			Custom: &v1.UserTask{
 				BaseTask: v1.BaseTask{
-					Name: splitted[0],
+					Name:          splitted[0],
+					Configuration: *taskConfOrDefault(tasksConf, splitted[0]),
 				},
 				ContainerImage:    splitted[1],
 				ContainerCommands: containerCommands,
@@ -408,6 +403,72 @@ func (t *builderTrait) customTasks() ([]v1.Task, error) {
 	return customTasks, nil
 }
 
+func taskConfOrDefault(tasksConf map[string]*v1.BuildConfiguration, taskName string) *v1.BuildConfiguration {
+	if tasksConf == nil || tasksConf[taskName] == nil {
+		return &v1.BuildConfiguration{}
+	}
+
+	return tasksConf[taskName]
+}
+
+func (t *builderTrait) parseTasksConf() (map[string]*v1.BuildConfiguration, error) {
+	tasksConf := make(map[string]*v1.BuildConfiguration)
+
+	for _, t := range t.TasksRequestCPU {
+		splits := strings.Split(t, ":")
+		if len(splits) != 2 {
+			return nil, fmt.Errorf("could not parse %s, expected format <task-name>:<task-resource>", t)
+		}
+		taskName := splits[0]
+		taskResource := splits[1]
+		if tasksConf[taskName] == nil {
+			tasksConf[taskName] = &v1.BuildConfiguration{}
+		}
+		tasksConf[taskName].RequestCPU = taskResource
+	}
+
+	for _, t := range t.TasksRequestMemory {
+		splits := strings.Split(t, ":")
+		if len(splits) != 2 {
+			return nil, fmt.Errorf("could not parse %s, expected format <task-name>:<task-resource>", t)
+		}
+		taskName := splits[0]
+		taskResource := splits[1]
+		if tasksConf[taskName] == nil {
+			tasksConf[taskName] = &v1.BuildConfiguration{}
+		}
+		tasksConf[taskName].RequestMemory = taskResource
+	}
+
+	for _, t := range t.TasksLimitCPU {
+		splits := strings.Split(t, ":")
+		if len(splits) != 2 {
+			return nil, fmt.Errorf("could not parse %s, expected format <task-name>:<task-resource>", t)
+		}
+		taskName := splits[0]
+		taskResource := splits[1]
+		if tasksConf[taskName] == nil {
+			tasksConf[taskName] = &v1.BuildConfiguration{}
+		}
+		tasksConf[taskName].LimitCPU = taskResource
+	}
+
+	for _, t := range t.TasksLimitMemory {
+		splits := strings.Split(t, ":")
+		if len(splits) != 2 {
+			return nil, fmt.Errorf("could not parse %s, expected format <task-name>:<task-resource>", t)
+		}
+		taskName := splits[0]
+		taskResource := splits[1]
+		if tasksConf[taskName] == nil {
+			tasksConf[taskName] = &v1.BuildConfiguration{}
+		}
+		tasksConf[taskName].LimitMemory = taskResource
+	}
+
+	return tasksConf, nil
+}
+
 // we may get a command in the following format `/bin/bash -c "ls && echo 'hello'`
 // which should provide a string with {"/bin/bash", "-c", "ls && echo 'hello'"}.
 // if however we have a command which is not quoted, then we leave it the way it is.
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 9a5b29472..79f47bd86 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -322,7 +322,7 @@ func TestBuilderCustomTasks(t *testing.T) {
 	builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;ls")
 	builderTrait.Tasks = append(builderTrait.Tasks, `test;alpine;mvn test`)
 
-	tasks, err := builderTrait.customTasks()
+	tasks, err := builderTrait.customTasks(nil)
 
 	assert.Nil(t, err)
 	assert.Equal(t, 2, len(tasks))
@@ -338,7 +338,7 @@ func TestBuilderCustomTasksFailure(t *testing.T) {
 	builderTrait := createNominalBuilderTraitTest()
 	builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine")
 
-	_, err := builderTrait.customTasks()
+	_, err := builderTrait.customTasks(nil)
 
 	assert.NotNil(t, err)
 }
@@ -347,7 +347,7 @@ func TestBuilderCustomTasksScript(t *testing.T) {
 	builderTrait := createNominalBuilderTraitTest()
 	builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;/bin/bash -c \"cd test && ls; echo 'helooo'\"")
 
-	tasks, err := builderTrait.customTasks()
+	tasks, err := builderTrait.customTasks(nil)
 
 	assert.Nil(t, err)
 	assert.Equal(t, 1, len(tasks))
@@ -358,6 +358,33 @@ func TestBuilderCustomTasksScript(t *testing.T) {
 	assert.Equal(t, "cd test && ls; echo 'helooo'", tasks[0].Custom.ContainerCommands[2])
 }
 
+func TestBuilderCustomTasksConfiguration(t *testing.T) {
+	builderTrait := createNominalBuilderTraitTest()
+	builderTrait.TasksRequestCPU = append(builderTrait.TasksLimitCPU, "builder:1000m")
+	builderTrait.TasksLimitCPU = append(builderTrait.TasksLimitCPU, "custom1:500m")
+	builderTrait.TasksRequestMemory = append(builderTrait.TasksLimitCPU, "package:8Gi")
+	builderTrait.TasksLimitMemory = append(builderTrait.TasksLimitCPU, "spectrum:4Gi")
+
+	tasksConf, err := builderTrait.parseTasksConf()
+
+	assert.Nil(t, err)
+	assert.Equal(t, 4, len(tasksConf))
+	assert.Equal(t, "1000m", tasksConf["builder"].RequestCPU)
+	assert.Equal(t, "500m", tasksConf["custom1"].LimitCPU)
+	assert.Equal(t, "8Gi", tasksConf["package"].RequestMemory)
+	assert.Equal(t, "4Gi", tasksConf["spectrum"].LimitMemory)
+}
+
+func TestBuilderCustomTasksConfigurationError(t *testing.T) {
+	builderTrait := createNominalBuilderTraitTest()
+	builderTrait.TasksLimitCPU = append(builderTrait.TasksLimitCPU, "syntax error")
+
+	_, err := builderTrait.parseTasksConf()
+
+	assert.NotNil(t, err)
+	assert.Equal(t, "could not parse syntax error, expected format <task-name>:<task-resource>", err.Error())
+}
+
 func TestUserTaskCommands(t *testing.T) {
 	command := `/bin/bash -c "ls && echo 'hello' && $(cat /path/to/a/resource)"`
 	podCommands := splitContainerCommand(command)
diff --git a/resources/traits.yaml b/resources/traits.yaml
index 20d9e9e19..5919692f0 100755
--- a/resources/traits.yaml
+++ b/resources/traits.yaml
@@ -218,20 +218,20 @@ traits:
       `sequential` (default sequential)
   - name: request-cpu
     type: string
-    description: When using `pod` strategy, the minimum amount of CPU required by
-      the pod builder.
+    description: 'When using `pod` strategy, the minimum amount of CPU required by
+      the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`.'
   - name: request-memory
     type: string
-    description: When using `pod` strategy, the minimum amount of memory required
-      by the pod builder.
+    description: 'When using `pod` strategy, the minimum amount of memory required
+      by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`.'
   - name: limit-cpu
     type: string
-    description: When using `pod` strategy, the maximum amount of CPU required by
-      the pod builder.
+    description: 'When using `pod` strategy, the maximum amount of CPU required by
+      the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`.'
   - name: limit-memory
     type: string
-    description: When using `pod` strategy, the maximum amount of memory required
-      by the pod builder.
+    description: 'When using `pod` strategy, the maximum amount of memory required
+      by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`.'
   - name: maven-profiles
     type: '[]string'
     description: 'A list of references pointing to configmaps/secrets that contains
@@ -243,7 +243,23 @@ traits:
   - name: tasks
     type: '[]string'
     description: A list of tasks to be executed (available only when using `pod` strategy)
-      with format <name>;<container-image>;<container-command>
+      with format `<name>;<container-image>;<container-command>`.
+  - name: tasks-request-cpu
+    type: '[]string'
+    description: A list of request cpu configuration for the specific task with format
+      `<task-name>:<request-cpu-conf>`.
+  - name: tasks-request-memory
+    type: '[]string'
+    description: A list of request memory configuration for the specific task with
+      format `<task-name>:<request-memory-conf>`.
+  - name: tasks-limit-cpu
+    type: '[]string'
+    description: A list of limit cpu configuration for the specific task with format
+      `<task-name>:<limit-cpu-conf>`.
+  - name: tasks-limit-memory
+    type: '[]string'
+    description: A list of limit memory configuration for the specific task with format
+      `<task-name>:<limit-memory-conf>`.
 - name: camel
   platform: true
   profiles: