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 2025/10/03 10:58:55 UTC

(camel-k) branch main updated: feat(api): Pipe traits configuration

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


The following commit(s) were added to refs/heads/main by this push:
     new b4769b1ff feat(api): Pipe traits configuration
b4769b1ff is described below

commit b4769b1fff35288d3f7405b94a9e2c39e3f57e72
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Fri Oct 3 08:26:04 2025 +0200

    feat(api): Pipe traits configuration
    
    Closes #6309
---
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |    8 +
 helm/camel-k/crds/camel-k-crds.yaml                | 1797 ++++++++++++++++++++
 pkg/apis/camel/v1/pipe_types.go                    |    2 +
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |    5 +
 .../camel/applyconfiguration/camel/v1/pipespec.go  |    9 +
 pkg/controller/pipe/integration.go                 |   10 +-
 pkg/controller/pipe/integration_test.go            |   22 +
 pkg/controller/pipe/monitor.go                     |   24 +
 .../config/crd/bases/camel.apache.org_pipes.yaml   | 1797 ++++++++++++++++++++
 pkg/trait/util.go                                  |    8 +
 10 files changed, 3679 insertions(+), 3 deletions(-)

diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 3930c1ce0..b414cfda6 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -4816,6 +4816,13 @@ Sink is the destination of the integration defined by this Pipe
 
 ErrorHandler is an optional handler called upon an error occurring in the integration
 
+|`traits` +
+*xref:#_camel_apache_org_v1_Traits[Traits]*
+|
+
+
+the traits needed to customize the depending Integration
+
 |`steps` +
 *xref:#_camel_apache_org_v1_Endpoint[[\]Endpoint]*
 |
@@ -5911,6 +5918,7 @@ TraitConfiguration parameters configuration
 * <<#_camel_apache_org_v1_IntegrationProfileSpec, IntegrationProfileSpec>>
 * <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>>
 * <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
+* <<#_camel_apache_org_v1_PipeSpec, PipeSpec>>
 
 Traits represents the collection of trait configurations.
 
diff --git a/helm/camel-k/crds/camel-k-crds.yaml b/helm/camel-k/crds/camel-k-crds.yaml
index 6242e78e1..c057eddf8 100644
--- a/helm/camel-k/crds/camel-k-crds.yaml
+++ b/helm/camel-k/crds/camel-k-crds.yaml
@@ -33784,6 +33784,1803 @@ spec:
                       type: string
                   type: object
                 type: array
+              traits:
+                description: the traits needed to customize the depending Integration
+                properties:
+                  3scale:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  addons:
+                    additionalProperties:
+                      description: AddonTrait represents the configuration of an addon
+                        trait.
+                      type: object
+                      x-kubernetes-preserve-unknown-fields: true
+                    description: The extension point with addon traits
+                    type: object
+                  affinity:
+                    description: The configuration of Affinity trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      nodeAffinityLabels:
+                        description: Defines a set of nodes the integration pod(s)
+                          are eligible to be scheduled on, based on labels on the
+                          node.
+                        items:
+                          type: string
+                        type: array
+                      podAffinity:
+                        description: Always co-locates multiple replicas of the integration
+                          in the same node (default `false`).
+                        type: boolean
+                      podAffinityLabels:
+                        description: |-
+                          Defines a set of pods (namely those matching the label selector, relative to the given namespace) that the
+                          integration pod(s) should be co-located with.
+                        items:
+                          type: string
+                        type: array
+                      podAntiAffinity:
+                        description: Never co-locates multiple replicas of the integration
+                          in the same node (default `false`).
+                        type: boolean
+                      podAntiAffinityLabels:
+                        description: |-
+                          Defines a set of pods (namely those matching the label selector, relative to the given namespace) that the
+                          integration pod(s) should not be co-located with.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  builder:
+                    description: The configuration of Builder trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: When using `pod` strategy, annotation to use
+                          for the builder pod.
+                        type: object
+                      baseImage:
+                        description: |-
+                          Specify a base image. In order to have the application working properly it must be a container image which has a Java JDK
+                          installed and ready to use on path (ie `/usr/bin/java`).
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      incrementalImageBuild:
+                        description: Use the incremental image build option, to reuse
+                          existing containers (default `true`)
+                        type: boolean
+                      limitCPU:
+                        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.
+                          Deprecated: use TasksRequestCPU instead with task name `builder`.
+                        type: string
+                      mavenProfiles:
+                        description: |-
+                          A list of references pointing to configmaps/secrets that contains a maven profile.
+                          This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit.
+                          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).
+                        items:
+                          type: string
+                        type: array
+                      nodeSelector:
+                        additionalProperties:
+                          type: string
+                        description: Defines a set of nodes the builder pod is eligible
+                          to be scheduled on, based on labels on the node.
+                        type: object
+                      orderStrategy:
+                        description: The build order strategy to use, either `dependencies`,
+                          `fifo` or `sequential` (default is the platform default)
+                        enum:
+                        - dependencies
+                        - fifo
+                        - sequential
+                        type: string
+                      platforms:
+                        description: The list of manifest platforms to use to build
+                          a container image (default `linux/amd64`).
+                        items:
+                          type: string
+                        type: array
+                      properties:
+                        description: A list of properties to be provided to the build
+                          task
+                        items:
+                          type: string
+                        type: array
+                      requestCPU:
+                        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.
+                          Deprecated: use TasksRequestCPU instead with task name `builder`.
+                        type: string
+                      strategy:
+                        description: The strategy to use, either `pod` or `routine`
+                          (default `routine`)
+                        enum:
+                        - pod
+                        - routine
+                        type: string
+                      tasks:
+                        description: A list of tasks to be executed (available only
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksFilter:
+                        description: |-
+                          A list of tasks sorted by the order of execution in a csv format, ie, `<taskName1>,<taskName2>,...`.
+                          Mind that you must include also the operator tasks (`builder`, `quarkus-native`, `package`, `jib`, `s2i`)
+                          if you need to execute them. Useful only with `pod` strategy.
+                        type: string
+                      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
+                      verbose:
+                        description: |-
+                          Enable verbose logging on build components that support it (e.g. Kaniko build pod).
+                          Deprecated no longer in use
+                        type: boolean
+                    type: object
+                  camel:
+                    description: The configuration of Camel trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      properties:
+                        description: A list of properties to be provided to the Integration
+                          runtime
+                        items:
+                          type: string
+                        type: array
+                      runtimeProvider:
+                        description: The runtime provider to use for the integration.
+                          (Default, Camel K Runtime).
+                        enum:
+                        - quarkus
+                        - plain-quarkus
+                        type: string
+                      runtimeVersion:
+                        description: |-
+                          The runtime version to use for the integration. It overrides the default version set in the Integration Platform.
+                          You can use a fixed version (for example "3.2.3") or a semantic version (for example "3.x") which will try to resolve
+                          to the best matching Catalog existing on the cluster (Default, the one provided by the operator version).
+                        type: string
+                    type: object
+                  container:
+                    description: The configuration of Container trait
+                    properties:
+                      allowPrivilegeEscalation:
+                        description: Security Context AllowPrivilegeEscalation configuration
+                          (default false).
+                        type: boolean
+                      auto:
+                        description: To automatically enable the trait
+                        type: boolean
+                      capabilitiesAdd:
+                        description: Security Context Capabilities Add configuration
+                          (default none).
+                        items:
+                          description: Capability represent POSIX capabilities type
+                          type: string
+                        type: array
+                      capabilitiesDrop:
+                        description: Security Context Capabilities Drop configuration
+                          (default ALL).
+                        items:
+                          description: Capability represent POSIX capabilities type
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      expose:
+                        description: Can be used to enable/disable http exposure via
+                          kubernetes Service.
+                        type: boolean
+                      image:
+                        description: |-
+                          The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which
+                          won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead
+                          Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an "external" IntegrationKit.
+                        type: string
+                      imagePullPolicy:
+                        description: 'The pull policy: Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
+                        type: string
+                      limitCPU:
+                        description: The maximum amount of CPU to be provided (default
+                          500 millicores).
+                        type: string
+                      limitMemory:
+                        description: The maximum amount of memory to be provided (default
+                          512 Mi).
+                        type: string
+                      name:
+                        description: The main container name. It's named `integration`
+                          by default.
+                        type: string
+                      port:
+                        description: To configure a different http port exposed by
+                          the container (default `8080`).
+                        format: int32
+                        type: integer
+                      portName:
+                        description: |-
+                          To configure a different http port name for the port exposed by the container.
+                          It defaults to `http` only when the `expose` parameter is true.
+                        type: string
+                      ports:
+                        description: |-
+                          List of container ports available in the container (syntax: <port-name>;<port-number>[;port-protocol]).
+                          When omitted, `port-protocol` (admitted values `TCP`, `UDP` or `SCTP`) is `TCP`.
+                          Don't use this for the primary http managed port (for which case you need to use `portName` and `port`).
+                          Don't use in Knative based environments.
+                        items:
+                          type: string
+                        type: array
+                      requestCPU:
+                        description: The minimum amount of CPU required (default 125
+                          millicores).
+                        type: string
+                      requestMemory:
+                        description: The minimum amount of memory required (default
+                          128 Mi).
+                        type: string
+                      runAsNonRoot:
+                        description: Security Context RunAsNonRoot configuration (default
+                          false).
+                        type: boolean
+                      runAsUser:
+                        description: 'Security Context RunAsUser configuration (default
+                          none): this value is automatically retrieved in Openshift
+                          clusters when not explicitly set.'
+                        format: int64
+                        type: integer
+                      seccompProfileType:
+                        description: Security Context SeccompProfileType configuration
+                          (default RuntimeDefault).
+                        enum:
+                        - Unconfined
+                        - RuntimeDefault
+                        type: string
+                      servicePort:
+                        description: To configure under which service port the http
+                          container port is to be exposed (default `80`).
+                        format: int32
+                        type: integer
+                      servicePortName:
+                        description: To configure under which service port name the
+                          http container port is to be exposed (default `http`).
+                        type: string
+                    type: object
+                  cron:
+                    description: The configuration of Cron trait
+                    properties:
+                      activeDeadlineSeconds:
+                        description: |-
+                          Specifies the duration in seconds, relative to the start time, that the job
+                          may be continuously active before it is considered to be failed.
+                          It defaults to 60s.
+                        format: int64
+                        type: integer
+                      auto:
+                        description: |-
+                          Automatically deploy the integration as CronJob when all routes are
+                          either starting from a periodic consumer (only `cron`, `timer` and `quartz` are supported) or a passive consumer (e.g. `direct` is a passive consumer).
+
+                          It's required that all periodic consumers have the same period, and it can be expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * *`,
+                          while `35m` or `50s` cannot).
+                        type: boolean
+                      backoffLimit:
+                        description: |-
+                          Specifies the number of retries before marking the job failed.
+                          It defaults to 2.
+                        format: int32
+                        type: integer
+                      components:
+                        description: |-
+                          A comma separated list of the Camel components that need to be customized in order for them to work when the schedule is triggered externally by Kubernetes.
+                          Supported components are currently: `cron`, `timer` and `quartz`.
+                        type: string
+                      concurrencyPolicy:
+                        description: |-
+                          Specifies how to treat concurrent executions of a Job.
+                          Valid values are:
+                          - "Allow": allows CronJobs to run concurrently;
+                          - "Forbid" (default): forbids concurrent runs, skipping next run if previous run hasn't finished yet;
+                          - "Replace": cancels currently running job and replaces it with a new one
+                        enum:
+                        - Allow
+                        - Forbid
+                        - Replace
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      fallback:
+                        description: |-
+                          Use the default Camel implementation of the `cron` endpoint (`quartz`) instead of trying to materialize the integration
+                          as Kubernetes CronJob.
+                        type: boolean
+                      schedule:
+                        description: |-
+                          The CronJob schedule for the whole integration. If multiple routes are declared, they must have the same schedule for this
+                          mechanism to work correctly.
+                        type: string
+                      startingDeadlineSeconds:
+                        description: |-
+                          Optional deadline in seconds for starting the job if it misses scheduled
+                          time for any reason.  Missed jobs executions will be counted as failed ones.
+                        format: int64
+                        type: integer
+                      timeZone:
+                        description: The timezone that the CronJob will run on
+                        type: string
+                    type: object
+                  dependencies:
+                    description: The configuration of Dependencies trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                    type: object
+                  deployer:
+                    description: The configuration of Deployer trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      kind:
+                        description: Allows to explicitly select the desired deployment
+                          kind between `deployment`, `cron-job` or `knative-service`
+                          when creating the resources for running the integration.
+                        enum:
+                        - deployment
+                        - cron-job
+                        - knative-service
+                        type: string
+                      useSSA:
+                        description: |-
+                          Deprecated: won't be able to enforce client side update in the future.
+                          Use server-side apply to update the owned resources (default `true`).
+                          Note that it automatically falls back to client-side patching, if SSA is not available, e.g., on old Kubernetes clusters.
+                        type: boolean
+                    type: object
+                  deployment:
+                    description: The configuration of Deployment trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      progressDeadlineSeconds:
+                        description: |-
+                          The maximum time in seconds for the deployment to make progress before it
+                          is considered to be failed. It defaults to `60s`.
+                        format: int32
+                        type: integer
+                      rollingUpdateMaxSurge:
+                        anyOf:
+                        - type: integer
+                        - type: string
+                        description: |-
+                          The maximum number of pods that can be scheduled above the desired number of
+                          pods.
+                          Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
+                          This can not be 0 if MaxUnavailable is 0.
+                          Absolute number is calculated from percentage by rounding up.
+                          Defaults to `25%`.
+                        x-kubernetes-int-or-string: true
+                      rollingUpdateMaxUnavailable:
+                        anyOf:
+                        - type: integer
+                        - type: string
+                        description: |-
+                          The maximum number of pods that can be unavailable during the update.
+                          Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
+                          Absolute number is calculated from percentage by rounding down.
+                          This can not be 0 if MaxSurge is 0.
+                          Defaults to `25%`.
+                        x-kubernetes-int-or-string: true
+                      strategy:
+                        description: The deployment strategy to use to replace existing
+                          pods with new ones.
+                        enum:
+                        - Recreate
+                        - RollingUpdate
+                        type: string
+                    type: object
+                  environment:
+                    description: The configuration of Environment trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      containerMeta:
+                        description: Enables injection of `NAMESPACE` and `POD_NAME`
+                          environment variables (default `true`)
+                        type: boolean
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      httpProxy:
+                        description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and
+                          `NO_PROXY` environment variables (default `true`)
+                        type: boolean
+                      vars:
+                        description: |-
+                          A list of environment variables to be added to the integration container.
+                          The syntax is either VAR=VALUE or VAR=[configmap|secret]:name/key, where name represents the resource name,
+                          and key represents the resource key to be mapped as and environment variable.
+                          These take precedence over any previously defined environment variables.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  error-handler:
+                    description: |-
+                      The configuration of Error Handler trait
+                      Deprecated: no longer in use.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      ref:
+                        description: The error handler ref name provided or found
+                          in application properties
+                        type: string
+                    type: object
+                  gc:
+                    description: The configuration of GC trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      discoveryCache:
+                        description: |-
+                          Discovery client cache to be used, either `disabled`, `disk` or `memory` (default `memory`).
+                          Deprecated: no longer in use.
+                        enum:
+                        - disabled
+                        - disk
+                        - memory
+                        type: string
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  health:
+                    description: The configuration of Health trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      livenessFailureThreshold:
+                        description: Minimum consecutive failures for the liveness
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      livenessInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the liveness probe is initiated.
+                        format: int32
+                        type: integer
+                      livenessPeriod:
+                        description: How often to perform the liveness probe.
+                        format: int32
+                        type: integer
+                      livenessPort:
+                        description: The liveness port to use (default 8080).
+                        format: int32
+                        type: integer
+                      livenessProbe:
+                        description: The liveness probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      livenessProbeEnabled:
+                        description: Configures the liveness probe for the integration
+                          container (default `false`).
+                        type: boolean
+                      livenessScheme:
+                        description: Scheme to use when connecting to the liveness
+                          probe (default `HTTP`).
+                        type: string
+                      livenessSuccessThreshold:
+                        description: Minimum consecutive successes for the liveness
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      livenessTimeout:
+                        description: Number of seconds after which the liveness probe
+                          times out.
+                        format: int32
+                        type: integer
+                      readinessFailureThreshold:
+                        description: Minimum consecutive failures for the readiness
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      readinessInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the readiness probe is initiated.
+                        format: int32
+                        type: integer
+                      readinessPeriod:
+                        description: How often to perform the readiness probe.
+                        format: int32
+                        type: integer
+                      readinessPort:
+                        description: The readiness port to use (default 8080).
+                        format: int32
+                        type: integer
+                      readinessProbe:
+                        description: The readiness probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      readinessProbeEnabled:
+                        description: Configures the readiness probe for the integration
+                          container (default `true`).
+                        type: boolean
+                      readinessScheme:
+                        description: Scheme to use when connecting to the readiness
+                          probe (default `HTTP`).
+                        type: string
+                      readinessSuccessThreshold:
+                        description: Minimum consecutive successes for the readiness
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      readinessTimeout:
+                        description: Number of seconds after which the readiness probe
+                          times out.
+                        format: int32
+                        type: integer
+                      startupFailureThreshold:
+                        description: Minimum consecutive failures for the startup
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      startupInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the startup probe is initiated.
+                        format: int32
+                        type: integer
+                      startupPeriod:
+                        description: How often to perform the startup probe.
+                        format: int32
+                        type: integer
+                      startupPort:
+                        description: The startup port to use (default 8080).
+                        format: int32
+                        type: integer
+                      startupProbe:
+                        description: The startup probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      startupProbeEnabled:
+                        description: Configures the startup probe for the integration
+                          container (default `false`).
+                        type: boolean
+                      startupScheme:
+                        description: Scheme to use when connecting to the startup
+                          probe (default `HTTP`).
+                        type: string
+                      startupSuccessThreshold:
+                        description: Minimum consecutive successes for the startup
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      startupTimeout:
+                        description: Number of seconds after which the startup probe
+                          times out.
+                        format: int32
+                        type: integer
+                    type: object
+                  ingress:
+                    description: The configuration of Ingress trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to the ingress.
+                          This can be used to set controller specific annotations, e.g., when using the NGINX Ingress controller:
+                          See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
+                        type: object
+                      auto:
+                        description: To automatically add an ingress whenever the
+                          integration uses an HTTP endpoint consumer.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      host:
+                        description: To configure the host exposed by the ingress.
+                        type: string
+                      ingressClassName:
+                        description: |-
+                          The Ingress class name as defined by the Ingress spec
+                          See https://kubernetes.io/docs/concepts/services-networking/ingress/
+                        type: string
+                      path:
+                        description: |-
+                          To configure the path exposed by the ingress (default `/`).
+                          Deprecated: In favor of `paths` - left for backward compatibility.
+                        type: string
+                      pathType:
+                        description: |-
+                          To configure the path type exposed by the ingress.
+                          One of `Exact`, `Prefix`, `ImplementationSpecific` (default to `Prefix`).
+                        enum:
+                        - Exact
+                        - Prefix
+                        - ImplementationSpecific
+                        type: string
+                      paths:
+                        description: To configure the paths exposed by the ingress
+                          (default `['/']`).
+                        items:
+                          type: string
+                        type: array
+                      tlsHosts:
+                        description: To configure tls hosts
+                        items:
+                          type: string
+                        type: array
+                      tlsSecretName:
+                        description: To configure tls secret name
+                        type: string
+                    type: object
+                  init-containers:
+                    description: The configuration of Init Containers trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      initTasks:
+                        description: A list of init tasks to be executed with format
+                          `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      sideCarTasks:
+                        description: A list of sidecar tasks to be executed with format
+                          `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  istio:
+                    description: The configuration of Istio trait
+                    properties:
+                      allow:
+                        description: Configures a (comma-separated) list of CIDR subnets
+                          that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16`
+                          by default).
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      inject:
+                        description: Forces the value for labels `sidecar.istio.io/inject`.
+                          By default the label is set to `true` on deployment and
+                          not set on Knative Service.
+                        type: boolean
+                    type: object
+                  jolokia:
+                    description: The configuration of Jolokia trait
+                    properties:
+                      CACert:
+                        description: |-
+                          The PEM encoded CA certification file path, used to verify client certificates,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` for OpenShift).
+                        type: string
+                      clientPrincipal:
+                        description: |-
+                          The principal(s) which must be given in a client certificate to allow access to the Jolokia endpoint,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `clientPrincipal=cn=system:master-proxy`, `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` for OpenShift).
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      discoveryEnabled:
+                        description: Listen for multicast requests (default `false`)
+                        type: boolean
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      extendedClientCheck:
+                        description: |-
+                          Mandate the client certificate contains a client flag in the extended key usage section,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `true` for OpenShift).
+                        type: boolean
+                      host:
+                        description: |-
+                          The Host address to which the Jolokia agent should bind to. If `"\*"` or `"0.0.0.0"` is given,
+                          the servers binds to every network interface (default `"*"`).
+                        type: string
+                      options:
+                        description: |-
+                          A list of additional Jolokia options as defined
+                          in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM agent configuration options]
+                        items:
+                          type: string
+                        type: array
+                      password:
+                        description: The password used for authentication, applicable
+                          when the `user` option is set.
+                        type: string
+                      port:
+                        description: The Jolokia endpoint port (default `8778`).
+                        format: int32
+                        type: integer
+                      protocol:
+                        description: The protocol to use, either `http` or `https`
+                          (default `https` for OpenShift)
+                        type: string
+                      useSSLClientAuthentication:
+                        description: Whether client certificates should be used for
+                          authentication (default `true` for OpenShift).
+                        type: boolean
+                      user:
+                        description: The user to be used for authentication
+                        type: string
+                    type: object
+                  jvm:
+                    description: The configuration of JVM trait
+                    properties:
+                      agents:
+                        description: A list of JVM agents to download and execute
+                          with format `<agent-name>;<agent-url>[;<jvm-agent-options>]`.
+                        items:
+                          type: string
+                        type: array
+                      classpath:
+                        description: Additional JVM classpath (use `Linux` classpath
+                          separator)
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      debug:
+                        description: Activates remote debugging, so that a debugger
+                          can be attached to the JVM, e.g., using port-forwarding
+                        type: boolean
+                      debugAddress:
+                        description: Transport address at which to listen for the
+                          newly launched JVM (default `*:5005`)
+                        type: string
+                      debugSuspend:
+                        description: Suspends the target JVM immediately before the
+                          main class is loaded
+                        type: boolean
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      jar:
+                        description: The Jar dependency which will run the application.
+                          Leave it empty for managed Integrations.
+                        type: string
+                      options:
+                        description: A list of JVM options
+                        items:
+                          type: string
+                        type: array
+                      printCommand:
+                        description: |-
+                          Prints the command used the start the JVM in the container logs (default `true`)
+                          Deprecated: no longer in use.
+                        type: boolean
+                    type: object
+                  kamelets:
+                    description: The configuration of Kamelets trait
+                    properties:
+                      auto:
+                        description: Automatically inject all referenced Kamelets
+                          and their default configuration (enabled by default)
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      list:
+                        description: Comma separated list of Kamelet names to load
+                          into the current integration
+                        type: string
+                      mountPoint:
+                        description: The directory where the application mounts and
+                          reads Kamelet spec (default `/etc/camel/kamelets`)
+                        type: string
+                    type: object
+                  keda:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  knative:
+                    description: The configuration of Knative trait
+                    properties:
+                      auto:
+                        description: Enable automatic discovery of all trait properties.
+                        type: boolean
+                      channelSinks:
+                        description: |-
+                          List of channels used as destination of integration routes.
+                          Can contain simple channel names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      channelSources:
+                        description: |-
+                          List of channels used as source of integration routes.
+                          Can contain simple channel names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      config:
+                        description: Can be used to inject a Knative complete configuration
+                          in JSON format.
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      endpointSinks:
+                        description: |-
+                          List of endpoints used as destination of integration routes.
+                          Can contain simple endpoint names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      endpointSources:
+                        description: List of channels used as source of integration
+                          routes.
+                        items:
+                          type: string
+                        type: array
+                      eventSinks:
+                        description: |-
+                          List of event types that the integration will produce.
+                          Can contain simple event types or full Camel URIs (to use a specific broker).
+                        items:
+                          type: string
+                        type: array
+                      eventSources:
+                        description: |-
+                          List of event types that the integration will be subscribed to.
+                          Can contain simple event types or full Camel URIs (to use a specific broker different from "default").
+                        items:
+                          type: string
+                        type: array
+                      filterEventType:
+                        description: |-
+                          Enables the default filtering for the Knative trigger using the event type
+                          If this is true, the created Knative trigger uses the event type as a filter on the event stream when no other filter criteria is given. (default: true)
+                        type: boolean
+                      filterSourceChannels:
+                        description: |-
+                          Enables filtering on events based on the header "ce-knativehistory". Since this header has been removed in newer versions of
+                          Knative, filtering is disabled by default.
+                        type: boolean
+                      filters:
+                        description: |-
+                          Sets filter attributes on the event stream (such as event type, source, subject and so on).
+                          A list of key-value pairs that represent filter attributes and its values.
+                          The syntax is KEY=VALUE, e.g., `source="my.source"`.
+                          Filter attributes get set on the Knative trigger that is being created as part of this integration.
+                        items:
+                          type: string
+                        type: array
+                      namespaceLabel:
+                        description: |-
+                          Enables the camel-k-operator to set the "bindings.knative.dev/include=true" label to the namespace
+                          As Knative requires this label to perform injection of K_SINK URL into the service.
+                          If this is false, the integration pod may start and fail, read the SinkBinding Knative documentation. (default: true)
+                        type: boolean
+                      sinkBinding:
+                        description: |-
+                          Allows binding the integration to a sink via a Knative SinkBinding resource.
+                          This can be used when the integration targets a single sink.
+                          It's enabled by default when the integration targets a single sink
+                          (except when the integration is owned by a Knative source).
+                        type: boolean
+                    type: object
+                  knative-service:
+                    description: The configuration of Knative Service trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to route.
+                          This can be used to set knative service specific annotations
+                          CLI usage example: -t "knative-service.annotations.'haproxy.router.openshift.io/balance'=true"
+                        type: object
+                      auto:
+                        description: |-
+                          Automatically deploy the integration as Knative service when all conditions hold:
+
+                          * Integration is using the Knative profile
+                          * All routes are either starting from an HTTP based consumer or a passive consumer (e.g. `direct` is a passive consumer)
+                        type: boolean
+                      autoscalingMetric:
+                        description: |-
+                          Configures the Knative autoscaling metric property (e.g. to set `concurrency` based or `cpu` based autoscaling).
+
+                          Refer to the Knative documentation for more information.
+                        type: string
+                      autoscalingTarget:
+                        description: |-
+                          Sets the allowed concurrency level or CPU percentage (depending on the autoscaling metric) for each Pod.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      class:
+                        description: |-
+                          Configures the Knative autoscaling class property (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` autoscaling).
+
+                          Refer to the Knative documentation for more information.
+                        enum:
+                        - kpa.autoscaling.knative.dev
+                        - hpa.autoscaling.knative.dev
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      maxScale:
+                        description: |-
+                          An upper bound for the number of Pods that can be running in parallel for the integration.
+                          Knative has its own cap value that depends on the installation.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      minScale:
+                        description: |-
+                          The minimum number of Pods that should be running at any time for the integration. It's **zero** by default, meaning that
+                          the integration is scaled down to zero when not used for a configured amount of time.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      rolloutDuration:
+                        description: |-
+                          Enables to gradually shift traffic to the latest Revision and sets the rollout duration.
+                          It's disabled by default and must be expressed as a Golang `time.Duration` string representation,
+                          rounded to a second precision.
+                        type: string
+                      timeoutSeconds:
+                        description: |-
+                          The maximum duration in seconds that the request instance is allowed to respond to a request.
+                          This field propagates to the integration pod's terminationGracePeriodSeconds
+
+                          Refer to the Knative documentation for more information.
+                        format: int64
+                        type: integer
+                      visibility:
+                        description: |-
+                          Setting `cluster-local`, Knative service becomes a private service.
+                          Specifically, this option applies the `networking.knative.dev/visibility` label to Knative service.
+
+                          Refer to the Knative documentation for more information.
+                        enum:
+                        - cluster-local
+                        type: string
+                    type: object
+                  logging:
+                    description: The configuration of Logging trait
+                    properties:
+                      color:
+                        description: Colorize the log output
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      format:
+                        description: Logs message format
+                        type: string
+                      json:
+                        description: Output the logs in JSON
+                        type: boolean
+                      jsonPrettyPrint:
+                        description: Enable "pretty printing" of the JSON logs
+                        type: boolean
+                      level:
+                        description: Adjust the logging level (defaults to `INFO`)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
+                        type: string
+                    type: object
+                  master:
+                    description: The configuration of Master trait
+                    properties:
+                      auto:
+                        description: Enables automatic configuration of the trait.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      includeDelegateDependencies:
+                        description: |-
+                          When this flag is active, the operator analyzes the source code to add dependencies required by delegate endpoints.
+                          E.g. when using `master:lockname:timer`, then `camel:timer` is automatically added to the set of dependencies.
+                          It's enabled by default.
+                        type: boolean
+                      labelKey:
+                        description: Label that will be used to identify all pods
+                          contending the lock. Defaults to "camel.apache.org/integration".
+                        type: string
+                      labelValue:
+                        description: Label value that will be used to identify all
+                          pods contending the lock. Defaults to the integration name.
+                        type: string
+                      resourceName:
+                        description: |-
+                          Name of the configmap that will be used to store the lock. Defaults to "<integration-name>-lock".
+                          Name of the configmap/lease resource that will be used to store the lock. Defaults to "<integration-name>-lock".
+                        type: string
+                      resourceType:
+                        description: Type of Kubernetes resource to use for locking
+                          ("ConfigMap" or "Lease"). Defaults to "Lease".
+                        type: string
+                    type: object
+                  mount:
+                    description: The configuration of Mount trait
+                    properties:
+                      configs:
+                        description: |-
+                          A list of configuration pointing to configmap/secret.
+                          The configuration are expected to be UTF-8 resources as they are processed by runtime Camel Context and tried to be parsed as property files.
+                          They are also made available on the classpath in order to ease their usage directly from the Route.
+                          Syntax: [configmap|secret]:name[/key], where name represents the resource name and key optionally represents the resource key to be filtered
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      emptyDirs:
+                        description: |-
+                          A list of EmptyDir volumes to be mounted. An optional size limit may be configured (default 500Mi).
+                          Syntax: name:/container/path[:sizeLimit]
+                        items:
+                          type: string
+                        type: array
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      hotReload:
+                        description: |-
+                          Enable "hot reload" when a secret/configmap mounted is edited (default `false`). The configmap/secret must be
+                          marked with `camel.apache.org/integration` label to be taken in account. The resource will be watched for any kind change, also for
+                          changes in metadata.
+                        type: boolean
+                      resources:
+                        description: |-
+                          A list of resources (text or binary content) pointing to configmap/secret.
+                          The resources are expected to be any resource type (text or binary content).
+                          The destination path can be either a default location or any path specified by the user.
+                          Syntax: [configmap|secret]:name[/key][@path], where name represents the resource name, key optionally represents the resource key to be filtered and path represents the destination path
+                        items:
+                          type: string
+                        type: array
+                      scanKameletsImplicitLabelSecrets:
+                        description: 'Deprecated: no longer available since version
+                          2.5.'
+                        type: boolean
+                      volumes:
+                        description: |-
+                          A list of Persistent Volume Claims to be mounted. Syntax: [pvcname:/container/path]. If the PVC is not found, the Integration fails.
+                          You can use the syntax [pvcname:/container/path:size:accessMode<:storageClass>] to create a dynamic PVC based on the Storage Class provided
+                          or the default cluster Storage Class. However, if the PVC exists, the operator would mount it.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  openapi:
+                    description: The configuration of OpenAPI trait
+                    properties:
+                      configmaps:
+                        description: The configmaps holding the spec of the OpenAPI
+                          (compatible with > 3.0 spec only).
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                    type: object
+                  owner:
+                    description: The configuration of Owner trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      targetAnnotations:
+                        description: The set of annotations to be transferred
+                        items:
+                          type: string
+                        type: array
+                      targetLabels:
+                        description: The set of labels to be transferred
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  pdb:
+                    description: The configuration of PDB trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      maxUnavailable:
+                        description: |-
+                          The number of pods for the Integration that can be unavailable after an eviction.
+                          It can be either an absolute number or a percentage (default `1` if `min-available` is also not set).
+                          Only one of `max-unavailable` and `min-available` can be specified.
+                        type: string
+                      minAvailable:
+                        description: |-
+                          The number of pods for the Integration that must still be available after an eviction.
+                          It can be either an absolute number or a percentage.
+                          Only one of `min-available` and `max-unavailable` can be specified.
+                        type: string
+                    type: object
+                  platform:
+                    description: The configuration of Platform trait
+                    properties:
+                      auto:
+                        description: |-
+                          To automatically detect from the environment if a default platform can be created (it will be created on OpenShift or when a registry address is set).
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      createDefault:
+                        description: |-
+                          To create a default (empty) platform when the platform is missing.
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      global:
+                        description: |-
+                          Indicates if the platform should be created globally in the case of global operator (default true).
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                    type: object
+                  pod:
+                    description: The configuration of Pod trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  prometheus:
+                    description: The configuration of Prometheus trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      podMonitor:
+                        description: Whether a `PodMonitor` resource is created (default
+                          `true`).
+                        type: boolean
+                      podMonitorLabels:
+                        description: The `PodMonitor` resource labels, applicable
+                          when `pod-monitor` is `true`.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  pull-secret:
+                    description: The configuration of Pull Secret trait
+                    properties:
+                      auto:
+                        description: Automatically configures the platform registry
+                          secret on the pod if it is of type `kubernetes.io/dockerconfigjson`.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      imagePullerDelegation:
+                        description: When using a global operator with a shared platform,
+                          this enables delegation of the `system:image-puller` cluster
+                          role on the operator namespace to the integration service
+                          account.
+                        type: boolean
+                      secretName:
+                        description: The pull secret name to set on the Pod. If left
+                          empty this is automatically taken from the `IntegrationPlatform`
+                          registry configuration.
+                        type: string
+                    type: object
+                  quarkus:
+                    description: The configuration of Quarkus trait
+                    properties:
+                      buildMode:
+                        description: |-
+                          The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+                          In case both `jvm` and `native` are specified, two `IntegrationKit` resources are created,
+                          with the `native` kit having precedence over the `jvm` one once ready.
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      nativeBaseImage:
+                        description: The base image to use when running a native build
+                          (default `quay.io/quarkus/quarkus-micro-image:2.0`)
+                        type: string
+                      nativeBuilderImage:
+                        description: The image containing the tooling required for
+                          a native build (by default it will use the one provided
+                          in the runtime catalog)
+                        type: string
+                      packageTypes:
+                        description: |-
+                          The Quarkus package types, `fast-jar` or `native` (default `fast-jar`).
+                          In case both `fast-jar` and `native` are specified, two `IntegrationKit` resources are created,
+                          with the native kit having precedence over the `fast-jar` one once ready.
+                          The order influences the resolution of the current kit for the integration.
+                          The kit corresponding to the first package type will be assigned to the
+                          integration in case no existing kit that matches the integration exists.
+                          Deprecated: use `build-mode` instead.
+                        items:
+                          description: |-
+                            QuarkusPackageType is the type of Quarkus build packaging.
+                            Deprecated: use `QuarkusMode` instead.
+                          enum:
+                          - fast-jar
+                          - native
+                          type: string
+                        type: array
+                    type: object
+                  registry:
+                    description: |-
+                      The configuration of Registry trait (support removed since version 2.5.0).
+                      Deprecated: use jvm trait or read documentation.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  route:
+                    description: The configuration of Route trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to route.
+                          This can be used to set route specific annotations
+                          For annotations options see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations
+                          CLI usage example: -t "route.annotations.'haproxy.router.openshift.io/balance'=true"
+                        type: object
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      host:
+                        description: To configure the host exposed by the route.
+                        type: string
+                      tlsCACertificate:
+                        description: |-
+                          The TLS CA certificate contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCACertificateSecret:
+                        description: |-
+                          The secret name and key reference to the TLS CA certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCertificate:
+                        description: |-
+                          The TLS certificate contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCertificateSecret:
+                        description: |-
+                          The secret name and key reference to the TLS certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsDestinationCACertificate:
+                        description: |-
+                          The destination CA certificate provides the contents of the ca certificate of the final destination.  When using reencrypt
+                          termination this file should be provided in order to have routers use it for health checks on the secure connection.
+                          If this field is not specified, the router may provide its own destination CA and perform hostname validation using
+                          the short service name (service.namespace.svc), which allows infrastructure generated certificates to automatically
+                          verify.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsDestinationCACertificateSecret:
+                        description: |-
+                          The secret name and key reference to the destination CA certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsInsecureEdgeTerminationPolicy:
+                        description: |-
+                          To configure how to deal with insecure traffic, e.g. `Allow`, `Disable` or `Redirect` traffic.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        enum:
+                        - None
+                        - Allow
+                        - Redirect
+                        type: string
+                      tlsKey:
+                        description: |-
+                          The TLS certificate key contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsKeySecret:
+                        description: |-
+                          The secret name and key reference to the TLS certificate key. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsTermination:
+                        description: |-
+                          The TLS termination type, like `edge`, `passthrough` or `reencrypt`.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        enum:
+                        - edge
+                        - reencrypt
+                        - passthrough
+                        type: string
+                    type: object
+                  security-context:
+                    description: The configuration of Security Context trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      runAsNonRoot:
+                        description: Security Context RunAsNonRoot configuration (default
+                          false).
+                        type: boolean
+                      runAsUser:
+                        description: 'Security Context RunAsUser configuration (default
+                          none): this value is automatically retrieved in Openshift
+                          clusters when not explicitly set.'
+                        format: int64
+                        type: integer
+                      seccompProfileType:
+                        description: Security Context SeccompProfileType configuration
+                          (default RuntimeDefault).
+                        enum:
+                        - Unconfined
+                        - RuntimeDefault
+                        type: string
+                    type: object
+                  service:
+                    description: The configuration of Service trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: The annotations added to the Service object.
+                        type: object
+                      auto:
+                        description: To automatically detect from the code if a Service
+                          needs to be created.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      labels:
+                        additionalProperties:
+                          type: string
+                        description: The labels added to the Service object.
+                        type: object
+                      nodePort:
+                        description: |-
+                          Enable Service to be exposed as NodePort (default `false`).
+                          Deprecated: Use service type instead.
+                        type: boolean
+                      ports:
+                        description: |-
+                          List of container ports available in the container to expose
+                          (syntax: <port-name>;<port-number>;<container-port-number>[;<port-protocol]).
+                          When omitted, `port-protocol` (admitted values `TCP`, `UDP` or `SCTP`) is `TCP`.
+                          Don't use this for the primary http managed port (which is managed by container trait).
+                          Don't use in Knative based environments.
+                        items:
+                          type: string
+                        type: array
+                      type:
+                        description: The type of service to be used, either 'ClusterIP',
+                          'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
+                        type: string
+                    type: object
+                  service-binding:
+                    description: |-
+                      The configuration of Service Binding trait
+                      Deprecated: no longer in use.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      services:
+                        description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  strimzi:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  telemetry:
+                    description: The configuration of Telemetry trait
+                    properties:
+                      auto:
+                        description: Enables automatic configuration of the trait,
+                          including automatic discovery of the telemetry endpoint.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      endpoint:
+                        description: The target endpoint of the Telemetry service
+                          (automatically discovered by default)
+                        type: string
+                      sampler:
+                        description: The sampler of the telemetry used for tracing
+                          (default "on")
+                        type: string
+                      sampler-parent-based:
+                        description: The sampler of the telemetry used for tracing
+                          is parent based (default "true")
+                        type: boolean
+                      sampler-ratio:
+                        description: The sampler ratio of the telemetry used for tracing
+                        type: string
+                      serviceName:
+                        description: The name of the service that publishes telemetry
+                          data (defaults to the integration name)
+                        type: string
+                    type: object
+                  toleration:
+                    description: The configuration of Toleration trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      taints:
+                        description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]`
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  tracing:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                type: object
             type: object
           status:
             description: the status of a Pipe
diff --git a/pkg/apis/camel/v1/pipe_types.go b/pkg/apis/camel/v1/pipe_types.go
index c50531d47..b658a2988 100644
--- a/pkg/apis/camel/v1/pipe_types.go
+++ b/pkg/apis/camel/v1/pipe_types.go
@@ -54,6 +54,8 @@ type PipeSpec struct {
 	Sink Endpoint `json:"sink,omitempty"`
 	// ErrorHandler is an optional handler called upon an error occurring in the integration
 	ErrorHandler *ErrorHandlerSpec `json:"errorHandler,omitempty"`
+	// the traits needed to customize the depending Integration
+	Traits *Traits `json:"traits,omitempty"`
 	// Steps contains an optional list of intermediate steps that are executed between the Source and the Sink
 	Steps []Endpoint `json:"steps,omitempty"`
 	// Replicas is the number of desired replicas for the Pipe
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index 165c3972f..21769c1c8 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -2553,6 +2553,11 @@ func (in *PipeSpec) DeepCopyInto(out *PipeSpec) {
 		*out = new(ErrorHandlerSpec)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.Traits != nil {
+		in, out := &in.Traits, &out.Traits
+		*out = new(Traits)
+		(*in).DeepCopyInto(*out)
+	}
 	if in.Steps != nil {
 		in, out := &in.Steps, &out.Steps
 		*out = make([]Endpoint, len(*in))
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/pipespec.go b/pkg/client/camel/applyconfiguration/camel/v1/pipespec.go
index dc9497977..8b5c220d5 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/pipespec.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/pipespec.go
@@ -26,6 +26,7 @@ type PipeSpecApplyConfiguration struct {
 	Source             *EndpointApplyConfiguration         `json:"source,omitempty"`
 	Sink               *EndpointApplyConfiguration         `json:"sink,omitempty"`
 	ErrorHandler       *ErrorHandlerSpecApplyConfiguration `json:"errorHandler,omitempty"`
+	Traits             *TraitsApplyConfiguration           `json:"traits,omitempty"`
 	Steps              []EndpointApplyConfiguration        `json:"steps,omitempty"`
 	Replicas           *int32                              `json:"replicas,omitempty"`
 	ServiceAccountName *string                             `json:"serviceAccountName,omitempty"`
@@ -70,6 +71,14 @@ func (b *PipeSpecApplyConfiguration) WithErrorHandler(value *ErrorHandlerSpecApp
 	return b
 }
 
+// WithTraits sets the Traits 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 Traits field is set to the value of the last call.
+func (b *PipeSpecApplyConfiguration) WithTraits(value *TraitsApplyConfiguration) *PipeSpecApplyConfiguration {
+	b.Traits = value
+	return b
+}
+
 // WithSteps adds the given value to the Steps field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
 // If called multiple times, values provided by each call will be appended to the Steps field.
diff --git a/pkg/controller/pipe/integration.go b/pkg/controller/pipe/integration.go
index e263eca36..e55cd9a1e 100644
--- a/pkg/controller/pipe/integration.go
+++ b/pkg/controller/pipe/integration.go
@@ -50,9 +50,13 @@ func CreateIntegrationFor(ctx context.Context, c client.Client, pipe *v1.Pipe) (
 	annotations := util.CopyMap(pipe.Annotations)
 	// avoid propagating the icon to the integration as it's heavyweight and not needed
 	delete(annotations, v1.AnnotationIcon)
-	traits, err := extractAndDeleteTraits(c, annotations)
-	if err != nil {
-		return nil, fmt.Errorf("could not marshal trait annotations %w", err)
+	traits := pipe.Spec.Traits
+	if traits == nil {
+		var err error
+		traits, err = extractAndDeleteTraits(c, annotations)
+		if err != nil {
+			return nil, fmt.Errorf("could not marshal trait annotations %w", err)
+		}
 	}
 
 	it := v1.Integration{
diff --git a/pkg/controller/pipe/integration_test.go b/pkg/controller/pipe/integration_test.go
index fe7868b22..7dc50710f 100644
--- a/pkg/controller/pipe/integration_test.go
+++ b/pkg/controller/pipe/integration_test.go
@@ -22,6 +22,7 @@ import (
 	"testing"
 
 	v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
+	"github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
 	"github.com/apache/camel-k/v2/pkg/internal"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
@@ -335,3 +336,24 @@ func TestCreateIntegrationTraitsForPipeWithTraitAnnotations(t *testing.T) {
 	}, it.Annotations)
 	assert.Equal(t, ptr.To(true), it.Spec.Traits.Service.Enabled)
 }
+
+func TestCreateIntegrationTraitsForPipeWithTraitSpec(t *testing.T) {
+	client, err := internal.NewFakeClient()
+	require.NoError(t, err)
+
+	pipe := nominalPipe("my-pipe")
+	pipe.Annotations[v1.TraitAnnotationPrefix+"service.enabled"] = "true"
+	pipe.Spec.Traits = &v1.Traits{
+		Affinity: &trait.AffinityTrait{
+			PodAffinityLabels: []string{"my-test-affinity"},
+		},
+	}
+
+	it, err := CreateIntegrationFor(context.TODO(), client, &pipe)
+	require.NoError(t, err)
+	assert.Equal(t, "my-pipe", it.Name)
+	assert.Equal(t, "default", it.Namespace)
+	// We don't allow both annotations based and spec based traits
+	assert.Nil(t, it.Spec.Traits.Service)
+	assert.Equal(t, []string{"my-test-affinity"}, it.Spec.Traits.Affinity.PodAffinityLabels)
+}
diff --git a/pkg/controller/pipe/monitor.go b/pkg/controller/pipe/monitor.go
index 10f909f48..a4f055916 100644
--- a/pkg/controller/pipe/monitor.go
+++ b/pkg/controller/pipe/monitor.go
@@ -20,6 +20,7 @@ package pipe
 import (
 	"context"
 	"fmt"
+	"strings"
 
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/equality"
@@ -149,6 +150,8 @@ func (action *monitorAction) Handle(ctx context.Context, pipe *v1.Pipe) (*v1.Pip
 	target.Status.Replicas = it.Status.Replicas
 	target.Status.Selector = it.Status.Selector
 
+	action.checkTraitAnnotationsDeprecatedNotice(target)
+
 	return target, nil
 }
 
@@ -182,3 +185,24 @@ func setPipeReadyCondition(kb *v1.Pipe, it *v1.Integration) {
 		)
 	}
 }
+
+// Deprecated: to be removed in future versions, when we won't support any longer trait annotations into Pipes.
+func (action *monitorAction) checkTraitAnnotationsDeprecatedNotice(pipe *v1.Pipe) {
+	if pipe.Annotations != nil {
+		for k := range pipe.Annotations {
+			if strings.HasPrefix(k, v1.TraitAnnotationPrefix) {
+				pipe.Status.SetCondition(
+					v1.PipeConditionType("AnnotationTraitsDeprecated"),
+					corev1.ConditionTrue,
+					"DeprecationNotice",
+					"Annotation traits configuration is deprecated and will be removed soon. Use .spec.traits configuration instead.",
+				)
+				action.L.Infof(
+					"WARN: annotation traits configuration is deprecated and will be removed soon. Use .spec.traits configuration for %s pipe instead.",
+					pipe.Name,
+				)
+				return
+			}
+		}
+	}
+}
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
index 250ec57cb..cd3ade270 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
@@ -9275,6 +9275,1803 @@ spec:
                       type: string
                   type: object
                 type: array
+              traits:
+                description: the traits needed to customize the depending Integration
+                properties:
+                  3scale:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  addons:
+                    additionalProperties:
+                      description: AddonTrait represents the configuration of an addon
+                        trait.
+                      type: object
+                      x-kubernetes-preserve-unknown-fields: true
+                    description: The extension point with addon traits
+                    type: object
+                  affinity:
+                    description: The configuration of Affinity trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      nodeAffinityLabels:
+                        description: Defines a set of nodes the integration pod(s)
+                          are eligible to be scheduled on, based on labels on the
+                          node.
+                        items:
+                          type: string
+                        type: array
+                      podAffinity:
+                        description: Always co-locates multiple replicas of the integration
+                          in the same node (default `false`).
+                        type: boolean
+                      podAffinityLabels:
+                        description: |-
+                          Defines a set of pods (namely those matching the label selector, relative to the given namespace) that the
+                          integration pod(s) should be co-located with.
+                        items:
+                          type: string
+                        type: array
+                      podAntiAffinity:
+                        description: Never co-locates multiple replicas of the integration
+                          in the same node (default `false`).
+                        type: boolean
+                      podAntiAffinityLabels:
+                        description: |-
+                          Defines a set of pods (namely those matching the label selector, relative to the given namespace) that the
+                          integration pod(s) should not be co-located with.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  builder:
+                    description: The configuration of Builder trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: When using `pod` strategy, annotation to use
+                          for the builder pod.
+                        type: object
+                      baseImage:
+                        description: |-
+                          Specify a base image. In order to have the application working properly it must be a container image which has a Java JDK
+                          installed and ready to use on path (ie `/usr/bin/java`).
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      incrementalImageBuild:
+                        description: Use the incremental image build option, to reuse
+                          existing containers (default `true`)
+                        type: boolean
+                      limitCPU:
+                        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.
+                          Deprecated: use TasksRequestCPU instead with task name `builder`.
+                        type: string
+                      mavenProfiles:
+                        description: |-
+                          A list of references pointing to configmaps/secrets that contains a maven profile.
+                          This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit.
+                          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).
+                        items:
+                          type: string
+                        type: array
+                      nodeSelector:
+                        additionalProperties:
+                          type: string
+                        description: Defines a set of nodes the builder pod is eligible
+                          to be scheduled on, based on labels on the node.
+                        type: object
+                      orderStrategy:
+                        description: The build order strategy to use, either `dependencies`,
+                          `fifo` or `sequential` (default is the platform default)
+                        enum:
+                        - dependencies
+                        - fifo
+                        - sequential
+                        type: string
+                      platforms:
+                        description: The list of manifest platforms to use to build
+                          a container image (default `linux/amd64`).
+                        items:
+                          type: string
+                        type: array
+                      properties:
+                        description: A list of properties to be provided to the build
+                          task
+                        items:
+                          type: string
+                        type: array
+                      requestCPU:
+                        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.
+                          Deprecated: use TasksRequestCPU instead with task name `builder`.
+                        type: string
+                      strategy:
+                        description: The strategy to use, either `pod` or `routine`
+                          (default `routine`)
+                        enum:
+                        - pod
+                        - routine
+                        type: string
+                      tasks:
+                        description: A list of tasks to be executed (available only
+                          when using `pod` strategy) with format `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      tasksFilter:
+                        description: |-
+                          A list of tasks sorted by the order of execution in a csv format, ie, `<taskName1>,<taskName2>,...`.
+                          Mind that you must include also the operator tasks (`builder`, `quarkus-native`, `package`, `jib`, `s2i`)
+                          if you need to execute them. Useful only with `pod` strategy.
+                        type: string
+                      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
+                      verbose:
+                        description: |-
+                          Enable verbose logging on build components that support it (e.g. Kaniko build pod).
+                          Deprecated no longer in use
+                        type: boolean
+                    type: object
+                  camel:
+                    description: The configuration of Camel trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      properties:
+                        description: A list of properties to be provided to the Integration
+                          runtime
+                        items:
+                          type: string
+                        type: array
+                      runtimeProvider:
+                        description: The runtime provider to use for the integration.
+                          (Default, Camel K Runtime).
+                        enum:
+                        - quarkus
+                        - plain-quarkus
+                        type: string
+                      runtimeVersion:
+                        description: |-
+                          The runtime version to use for the integration. It overrides the default version set in the Integration Platform.
+                          You can use a fixed version (for example "3.2.3") or a semantic version (for example "3.x") which will try to resolve
+                          to the best matching Catalog existing on the cluster (Default, the one provided by the operator version).
+                        type: string
+                    type: object
+                  container:
+                    description: The configuration of Container trait
+                    properties:
+                      allowPrivilegeEscalation:
+                        description: Security Context AllowPrivilegeEscalation configuration
+                          (default false).
+                        type: boolean
+                      auto:
+                        description: To automatically enable the trait
+                        type: boolean
+                      capabilitiesAdd:
+                        description: Security Context Capabilities Add configuration
+                          (default none).
+                        items:
+                          description: Capability represent POSIX capabilities type
+                          type: string
+                        type: array
+                      capabilitiesDrop:
+                        description: Security Context Capabilities Drop configuration
+                          (default ALL).
+                        items:
+                          description: Capability represent POSIX capabilities type
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      expose:
+                        description: Can be used to enable/disable http exposure via
+                          kubernetes Service.
+                        type: boolean
+                      image:
+                        description: |-
+                          The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which
+                          won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead
+                          Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an "external" IntegrationKit.
+                        type: string
+                      imagePullPolicy:
+                        description: 'The pull policy: Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
+                        type: string
+                      limitCPU:
+                        description: The maximum amount of CPU to be provided (default
+                          500 millicores).
+                        type: string
+                      limitMemory:
+                        description: The maximum amount of memory to be provided (default
+                          512 Mi).
+                        type: string
+                      name:
+                        description: The main container name. It's named `integration`
+                          by default.
+                        type: string
+                      port:
+                        description: To configure a different http port exposed by
+                          the container (default `8080`).
+                        format: int32
+                        type: integer
+                      portName:
+                        description: |-
+                          To configure a different http port name for the port exposed by the container.
+                          It defaults to `http` only when the `expose` parameter is true.
+                        type: string
+                      ports:
+                        description: |-
+                          List of container ports available in the container (syntax: <port-name>;<port-number>[;port-protocol]).
+                          When omitted, `port-protocol` (admitted values `TCP`, `UDP` or `SCTP`) is `TCP`.
+                          Don't use this for the primary http managed port (for which case you need to use `portName` and `port`).
+                          Don't use in Knative based environments.
+                        items:
+                          type: string
+                        type: array
+                      requestCPU:
+                        description: The minimum amount of CPU required (default 125
+                          millicores).
+                        type: string
+                      requestMemory:
+                        description: The minimum amount of memory required (default
+                          128 Mi).
+                        type: string
+                      runAsNonRoot:
+                        description: Security Context RunAsNonRoot configuration (default
+                          false).
+                        type: boolean
+                      runAsUser:
+                        description: 'Security Context RunAsUser configuration (default
+                          none): this value is automatically retrieved in Openshift
+                          clusters when not explicitly set.'
+                        format: int64
+                        type: integer
+                      seccompProfileType:
+                        description: Security Context SeccompProfileType configuration
+                          (default RuntimeDefault).
+                        enum:
+                        - Unconfined
+                        - RuntimeDefault
+                        type: string
+                      servicePort:
+                        description: To configure under which service port the http
+                          container port is to be exposed (default `80`).
+                        format: int32
+                        type: integer
+                      servicePortName:
+                        description: To configure under which service port name the
+                          http container port is to be exposed (default `http`).
+                        type: string
+                    type: object
+                  cron:
+                    description: The configuration of Cron trait
+                    properties:
+                      activeDeadlineSeconds:
+                        description: |-
+                          Specifies the duration in seconds, relative to the start time, that the job
+                          may be continuously active before it is considered to be failed.
+                          It defaults to 60s.
+                        format: int64
+                        type: integer
+                      auto:
+                        description: |-
+                          Automatically deploy the integration as CronJob when all routes are
+                          either starting from a periodic consumer (only `cron`, `timer` and `quartz` are supported) or a passive consumer (e.g. `direct` is a passive consumer).
+
+                          It's required that all periodic consumers have the same period, and it can be expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * *`,
+                          while `35m` or `50s` cannot).
+                        type: boolean
+                      backoffLimit:
+                        description: |-
+                          Specifies the number of retries before marking the job failed.
+                          It defaults to 2.
+                        format: int32
+                        type: integer
+                      components:
+                        description: |-
+                          A comma separated list of the Camel components that need to be customized in order for them to work when the schedule is triggered externally by Kubernetes.
+                          Supported components are currently: `cron`, `timer` and `quartz`.
+                        type: string
+                      concurrencyPolicy:
+                        description: |-
+                          Specifies how to treat concurrent executions of a Job.
+                          Valid values are:
+                          - "Allow": allows CronJobs to run concurrently;
+                          - "Forbid" (default): forbids concurrent runs, skipping next run if previous run hasn't finished yet;
+                          - "Replace": cancels currently running job and replaces it with a new one
+                        enum:
+                        - Allow
+                        - Forbid
+                        - Replace
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      fallback:
+                        description: |-
+                          Use the default Camel implementation of the `cron` endpoint (`quartz`) instead of trying to materialize the integration
+                          as Kubernetes CronJob.
+                        type: boolean
+                      schedule:
+                        description: |-
+                          The CronJob schedule for the whole integration. If multiple routes are declared, they must have the same schedule for this
+                          mechanism to work correctly.
+                        type: string
+                      startingDeadlineSeconds:
+                        description: |-
+                          Optional deadline in seconds for starting the job if it misses scheduled
+                          time for any reason.  Missed jobs executions will be counted as failed ones.
+                        format: int64
+                        type: integer
+                      timeZone:
+                        description: The timezone that the CronJob will run on
+                        type: string
+                    type: object
+                  dependencies:
+                    description: The configuration of Dependencies trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                    type: object
+                  deployer:
+                    description: The configuration of Deployer trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      kind:
+                        description: Allows to explicitly select the desired deployment
+                          kind between `deployment`, `cron-job` or `knative-service`
+                          when creating the resources for running the integration.
+                        enum:
+                        - deployment
+                        - cron-job
+                        - knative-service
+                        type: string
+                      useSSA:
+                        description: |-
+                          Deprecated: won't be able to enforce client side update in the future.
+                          Use server-side apply to update the owned resources (default `true`).
+                          Note that it automatically falls back to client-side patching, if SSA is not available, e.g., on old Kubernetes clusters.
+                        type: boolean
+                    type: object
+                  deployment:
+                    description: The configuration of Deployment trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      progressDeadlineSeconds:
+                        description: |-
+                          The maximum time in seconds for the deployment to make progress before it
+                          is considered to be failed. It defaults to `60s`.
+                        format: int32
+                        type: integer
+                      rollingUpdateMaxSurge:
+                        anyOf:
+                        - type: integer
+                        - type: string
+                        description: |-
+                          The maximum number of pods that can be scheduled above the desired number of
+                          pods.
+                          Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
+                          This can not be 0 if MaxUnavailable is 0.
+                          Absolute number is calculated from percentage by rounding up.
+                          Defaults to `25%`.
+                        x-kubernetes-int-or-string: true
+                      rollingUpdateMaxUnavailable:
+                        anyOf:
+                        - type: integer
+                        - type: string
+                        description: |-
+                          The maximum number of pods that can be unavailable during the update.
+                          Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
+                          Absolute number is calculated from percentage by rounding down.
+                          This can not be 0 if MaxSurge is 0.
+                          Defaults to `25%`.
+                        x-kubernetes-int-or-string: true
+                      strategy:
+                        description: The deployment strategy to use to replace existing
+                          pods with new ones.
+                        enum:
+                        - Recreate
+                        - RollingUpdate
+                        type: string
+                    type: object
+                  environment:
+                    description: The configuration of Environment trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      containerMeta:
+                        description: Enables injection of `NAMESPACE` and `POD_NAME`
+                          environment variables (default `true`)
+                        type: boolean
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      httpProxy:
+                        description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and
+                          `NO_PROXY` environment variables (default `true`)
+                        type: boolean
+                      vars:
+                        description: |-
+                          A list of environment variables to be added to the integration container.
+                          The syntax is either VAR=VALUE or VAR=[configmap|secret]:name/key, where name represents the resource name,
+                          and key represents the resource key to be mapped as and environment variable.
+                          These take precedence over any previously defined environment variables.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  error-handler:
+                    description: |-
+                      The configuration of Error Handler trait
+                      Deprecated: no longer in use.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      ref:
+                        description: The error handler ref name provided or found
+                          in application properties
+                        type: string
+                    type: object
+                  gc:
+                    description: The configuration of GC trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      discoveryCache:
+                        description: |-
+                          Discovery client cache to be used, either `disabled`, `disk` or `memory` (default `memory`).
+                          Deprecated: no longer in use.
+                        enum:
+                        - disabled
+                        - disk
+                        - memory
+                        type: string
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  health:
+                    description: The configuration of Health trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      livenessFailureThreshold:
+                        description: Minimum consecutive failures for the liveness
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      livenessInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the liveness probe is initiated.
+                        format: int32
+                        type: integer
+                      livenessPeriod:
+                        description: How often to perform the liveness probe.
+                        format: int32
+                        type: integer
+                      livenessPort:
+                        description: The liveness port to use (default 8080).
+                        format: int32
+                        type: integer
+                      livenessProbe:
+                        description: The liveness probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      livenessProbeEnabled:
+                        description: Configures the liveness probe for the integration
+                          container (default `false`).
+                        type: boolean
+                      livenessScheme:
+                        description: Scheme to use when connecting to the liveness
+                          probe (default `HTTP`).
+                        type: string
+                      livenessSuccessThreshold:
+                        description: Minimum consecutive successes for the liveness
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      livenessTimeout:
+                        description: Number of seconds after which the liveness probe
+                          times out.
+                        format: int32
+                        type: integer
+                      readinessFailureThreshold:
+                        description: Minimum consecutive failures for the readiness
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      readinessInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the readiness probe is initiated.
+                        format: int32
+                        type: integer
+                      readinessPeriod:
+                        description: How often to perform the readiness probe.
+                        format: int32
+                        type: integer
+                      readinessPort:
+                        description: The readiness port to use (default 8080).
+                        format: int32
+                        type: integer
+                      readinessProbe:
+                        description: The readiness probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      readinessProbeEnabled:
+                        description: Configures the readiness probe for the integration
+                          container (default `true`).
+                        type: boolean
+                      readinessScheme:
+                        description: Scheme to use when connecting to the readiness
+                          probe (default `HTTP`).
+                        type: string
+                      readinessSuccessThreshold:
+                        description: Minimum consecutive successes for the readiness
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      readinessTimeout:
+                        description: Number of seconds after which the readiness probe
+                          times out.
+                        format: int32
+                        type: integer
+                      startupFailureThreshold:
+                        description: Minimum consecutive failures for the startup
+                          probe to be considered failed after having succeeded.
+                        format: int32
+                        type: integer
+                      startupInitialDelay:
+                        description: Number of seconds after the container has started
+                          before the startup probe is initiated.
+                        format: int32
+                        type: integer
+                      startupPeriod:
+                        description: How often to perform the startup probe.
+                        format: int32
+                        type: integer
+                      startupPort:
+                        description: The startup port to use (default 8080).
+                        format: int32
+                        type: integer
+                      startupProbe:
+                        description: The startup probe path to use (default provided
+                          by the Catalog runtime used).
+                        type: string
+                      startupProbeEnabled:
+                        description: Configures the startup probe for the integration
+                          container (default `false`).
+                        type: boolean
+                      startupScheme:
+                        description: Scheme to use when connecting to the startup
+                          probe (default `HTTP`).
+                        type: string
+                      startupSuccessThreshold:
+                        description: Minimum consecutive successes for the startup
+                          probe to be considered successful after having failed.
+                        format: int32
+                        type: integer
+                      startupTimeout:
+                        description: Number of seconds after which the startup probe
+                          times out.
+                        format: int32
+                        type: integer
+                    type: object
+                  ingress:
+                    description: The configuration of Ingress trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to the ingress.
+                          This can be used to set controller specific annotations, e.g., when using the NGINX Ingress controller:
+                          See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
+                        type: object
+                      auto:
+                        description: To automatically add an ingress whenever the
+                          integration uses an HTTP endpoint consumer.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      host:
+                        description: To configure the host exposed by the ingress.
+                        type: string
+                      ingressClassName:
+                        description: |-
+                          The Ingress class name as defined by the Ingress spec
+                          See https://kubernetes.io/docs/concepts/services-networking/ingress/
+                        type: string
+                      path:
+                        description: |-
+                          To configure the path exposed by the ingress (default `/`).
+                          Deprecated: In favor of `paths` - left for backward compatibility.
+                        type: string
+                      pathType:
+                        description: |-
+                          To configure the path type exposed by the ingress.
+                          One of `Exact`, `Prefix`, `ImplementationSpecific` (default to `Prefix`).
+                        enum:
+                        - Exact
+                        - Prefix
+                        - ImplementationSpecific
+                        type: string
+                      paths:
+                        description: To configure the paths exposed by the ingress
+                          (default `['/']`).
+                        items:
+                          type: string
+                        type: array
+                      tlsHosts:
+                        description: To configure tls hosts
+                        items:
+                          type: string
+                        type: array
+                      tlsSecretName:
+                        description: To configure tls secret name
+                        type: string
+                    type: object
+                  init-containers:
+                    description: The configuration of Init Containers trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      initTasks:
+                        description: A list of init tasks to be executed with format
+                          `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                      sideCarTasks:
+                        description: A list of sidecar tasks to be executed with format
+                          `<name>;<container-image>;<container-command>`.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  istio:
+                    description: The configuration of Istio trait
+                    properties:
+                      allow:
+                        description: Configures a (comma-separated) list of CIDR subnets
+                          that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16`
+                          by default).
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      inject:
+                        description: Forces the value for labels `sidecar.istio.io/inject`.
+                          By default the label is set to `true` on deployment and
+                          not set on Knative Service.
+                        type: boolean
+                    type: object
+                  jolokia:
+                    description: The configuration of Jolokia trait
+                    properties:
+                      CACert:
+                        description: |-
+                          The PEM encoded CA certification file path, used to verify client certificates,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` for OpenShift).
+                        type: string
+                      clientPrincipal:
+                        description: |-
+                          The principal(s) which must be given in a client certificate to allow access to the Jolokia endpoint,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `clientPrincipal=cn=system:master-proxy`, `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` for OpenShift).
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      discoveryEnabled:
+                        description: Listen for multicast requests (default `false`)
+                        type: boolean
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      extendedClientCheck:
+                        description: |-
+                          Mandate the client certificate contains a client flag in the extended key usage section,
+                          applicable when `protocol` is `https` and `use-ssl-client-authentication` is `true`
+                          (default `true` for OpenShift).
+                        type: boolean
+                      host:
+                        description: |-
+                          The Host address to which the Jolokia agent should bind to. If `"\*"` or `"0.0.0.0"` is given,
+                          the servers binds to every network interface (default `"*"`).
+                        type: string
+                      options:
+                        description: |-
+                          A list of additional Jolokia options as defined
+                          in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM agent configuration options]
+                        items:
+                          type: string
+                        type: array
+                      password:
+                        description: The password used for authentication, applicable
+                          when the `user` option is set.
+                        type: string
+                      port:
+                        description: The Jolokia endpoint port (default `8778`).
+                        format: int32
+                        type: integer
+                      protocol:
+                        description: The protocol to use, either `http` or `https`
+                          (default `https` for OpenShift)
+                        type: string
+                      useSSLClientAuthentication:
+                        description: Whether client certificates should be used for
+                          authentication (default `true` for OpenShift).
+                        type: boolean
+                      user:
+                        description: The user to be used for authentication
+                        type: string
+                    type: object
+                  jvm:
+                    description: The configuration of JVM trait
+                    properties:
+                      agents:
+                        description: A list of JVM agents to download and execute
+                          with format `<agent-name>;<agent-url>[;<jvm-agent-options>]`.
+                        items:
+                          type: string
+                        type: array
+                      classpath:
+                        description: Additional JVM classpath (use `Linux` classpath
+                          separator)
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      debug:
+                        description: Activates remote debugging, so that a debugger
+                          can be attached to the JVM, e.g., using port-forwarding
+                        type: boolean
+                      debugAddress:
+                        description: Transport address at which to listen for the
+                          newly launched JVM (default `*:5005`)
+                        type: string
+                      debugSuspend:
+                        description: Suspends the target JVM immediately before the
+                          main class is loaded
+                        type: boolean
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      jar:
+                        description: The Jar dependency which will run the application.
+                          Leave it empty for managed Integrations.
+                        type: string
+                      options:
+                        description: A list of JVM options
+                        items:
+                          type: string
+                        type: array
+                      printCommand:
+                        description: |-
+                          Prints the command used the start the JVM in the container logs (default `true`)
+                          Deprecated: no longer in use.
+                        type: boolean
+                    type: object
+                  kamelets:
+                    description: The configuration of Kamelets trait
+                    properties:
+                      auto:
+                        description: Automatically inject all referenced Kamelets
+                          and their default configuration (enabled by default)
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      list:
+                        description: Comma separated list of Kamelet names to load
+                          into the current integration
+                        type: string
+                      mountPoint:
+                        description: The directory where the application mounts and
+                          reads Kamelet spec (default `/etc/camel/kamelets`)
+                        type: string
+                    type: object
+                  keda:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  knative:
+                    description: The configuration of Knative trait
+                    properties:
+                      auto:
+                        description: Enable automatic discovery of all trait properties.
+                        type: boolean
+                      channelSinks:
+                        description: |-
+                          List of channels used as destination of integration routes.
+                          Can contain simple channel names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      channelSources:
+                        description: |-
+                          List of channels used as source of integration routes.
+                          Can contain simple channel names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      config:
+                        description: Can be used to inject a Knative complete configuration
+                          in JSON format.
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      endpointSinks:
+                        description: |-
+                          List of endpoints used as destination of integration routes.
+                          Can contain simple endpoint names or full Camel URIs.
+                        items:
+                          type: string
+                        type: array
+                      endpointSources:
+                        description: List of channels used as source of integration
+                          routes.
+                        items:
+                          type: string
+                        type: array
+                      eventSinks:
+                        description: |-
+                          List of event types that the integration will produce.
+                          Can contain simple event types or full Camel URIs (to use a specific broker).
+                        items:
+                          type: string
+                        type: array
+                      eventSources:
+                        description: |-
+                          List of event types that the integration will be subscribed to.
+                          Can contain simple event types or full Camel URIs (to use a specific broker different from "default").
+                        items:
+                          type: string
+                        type: array
+                      filterEventType:
+                        description: |-
+                          Enables the default filtering for the Knative trigger using the event type
+                          If this is true, the created Knative trigger uses the event type as a filter on the event stream when no other filter criteria is given. (default: true)
+                        type: boolean
+                      filterSourceChannels:
+                        description: |-
+                          Enables filtering on events based on the header "ce-knativehistory". Since this header has been removed in newer versions of
+                          Knative, filtering is disabled by default.
+                        type: boolean
+                      filters:
+                        description: |-
+                          Sets filter attributes on the event stream (such as event type, source, subject and so on).
+                          A list of key-value pairs that represent filter attributes and its values.
+                          The syntax is KEY=VALUE, e.g., `source="my.source"`.
+                          Filter attributes get set on the Knative trigger that is being created as part of this integration.
+                        items:
+                          type: string
+                        type: array
+                      namespaceLabel:
+                        description: |-
+                          Enables the camel-k-operator to set the "bindings.knative.dev/include=true" label to the namespace
+                          As Knative requires this label to perform injection of K_SINK URL into the service.
+                          If this is false, the integration pod may start and fail, read the SinkBinding Knative documentation. (default: true)
+                        type: boolean
+                      sinkBinding:
+                        description: |-
+                          Allows binding the integration to a sink via a Knative SinkBinding resource.
+                          This can be used when the integration targets a single sink.
+                          It's enabled by default when the integration targets a single sink
+                          (except when the integration is owned by a Knative source).
+                        type: boolean
+                    type: object
+                  knative-service:
+                    description: The configuration of Knative Service trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to route.
+                          This can be used to set knative service specific annotations
+                          CLI usage example: -t "knative-service.annotations.'haproxy.router.openshift.io/balance'=true"
+                        type: object
+                      auto:
+                        description: |-
+                          Automatically deploy the integration as Knative service when all conditions hold:
+
+                          * Integration is using the Knative profile
+                          * All routes are either starting from an HTTP based consumer or a passive consumer (e.g. `direct` is a passive consumer)
+                        type: boolean
+                      autoscalingMetric:
+                        description: |-
+                          Configures the Knative autoscaling metric property (e.g. to set `concurrency` based or `cpu` based autoscaling).
+
+                          Refer to the Knative documentation for more information.
+                        type: string
+                      autoscalingTarget:
+                        description: |-
+                          Sets the allowed concurrency level or CPU percentage (depending on the autoscaling metric) for each Pod.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      class:
+                        description: |-
+                          Configures the Knative autoscaling class property (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` autoscaling).
+
+                          Refer to the Knative documentation for more information.
+                        enum:
+                        - kpa.autoscaling.knative.dev
+                        - hpa.autoscaling.knative.dev
+                        type: string
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      maxScale:
+                        description: |-
+                          An upper bound for the number of Pods that can be running in parallel for the integration.
+                          Knative has its own cap value that depends on the installation.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      minScale:
+                        description: |-
+                          The minimum number of Pods that should be running at any time for the integration. It's **zero** by default, meaning that
+                          the integration is scaled down to zero when not used for a configured amount of time.
+
+                          Refer to the Knative documentation for more information.
+                        type: integer
+                      rolloutDuration:
+                        description: |-
+                          Enables to gradually shift traffic to the latest Revision and sets the rollout duration.
+                          It's disabled by default and must be expressed as a Golang `time.Duration` string representation,
+                          rounded to a second precision.
+                        type: string
+                      timeoutSeconds:
+                        description: |-
+                          The maximum duration in seconds that the request instance is allowed to respond to a request.
+                          This field propagates to the integration pod's terminationGracePeriodSeconds
+
+                          Refer to the Knative documentation for more information.
+                        format: int64
+                        type: integer
+                      visibility:
+                        description: |-
+                          Setting `cluster-local`, Knative service becomes a private service.
+                          Specifically, this option applies the `networking.knative.dev/visibility` label to Knative service.
+
+                          Refer to the Knative documentation for more information.
+                        enum:
+                        - cluster-local
+                        type: string
+                    type: object
+                  logging:
+                    description: The configuration of Logging trait
+                    properties:
+                      color:
+                        description: Colorize the log output
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      format:
+                        description: Logs message format
+                        type: string
+                      json:
+                        description: Output the logs in JSON
+                        type: boolean
+                      jsonPrettyPrint:
+                        description: Enable "pretty printing" of the JSON logs
+                        type: boolean
+                      level:
+                        description: Adjust the logging level (defaults to `INFO`)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
+                        type: string
+                    type: object
+                  master:
+                    description: The configuration of Master trait
+                    properties:
+                      auto:
+                        description: Enables automatic configuration of the trait.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      includeDelegateDependencies:
+                        description: |-
+                          When this flag is active, the operator analyzes the source code to add dependencies required by delegate endpoints.
+                          E.g. when using `master:lockname:timer`, then `camel:timer` is automatically added to the set of dependencies.
+                          It's enabled by default.
+                        type: boolean
+                      labelKey:
+                        description: Label that will be used to identify all pods
+                          contending the lock. Defaults to "camel.apache.org/integration".
+                        type: string
+                      labelValue:
+                        description: Label value that will be used to identify all
+                          pods contending the lock. Defaults to the integration name.
+                        type: string
+                      resourceName:
+                        description: |-
+                          Name of the configmap that will be used to store the lock. Defaults to "<integration-name>-lock".
+                          Name of the configmap/lease resource that will be used to store the lock. Defaults to "<integration-name>-lock".
+                        type: string
+                      resourceType:
+                        description: Type of Kubernetes resource to use for locking
+                          ("ConfigMap" or "Lease"). Defaults to "Lease".
+                        type: string
+                    type: object
+                  mount:
+                    description: The configuration of Mount trait
+                    properties:
+                      configs:
+                        description: |-
+                          A list of configuration pointing to configmap/secret.
+                          The configuration are expected to be UTF-8 resources as they are processed by runtime Camel Context and tried to be parsed as property files.
+                          They are also made available on the classpath in order to ease their usage directly from the Route.
+                          Syntax: [configmap|secret]:name[/key], where name represents the resource name and key optionally represents the resource key to be filtered
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      emptyDirs:
+                        description: |-
+                          A list of EmptyDir volumes to be mounted. An optional size limit may be configured (default 500Mi).
+                          Syntax: name:/container/path[:sizeLimit]
+                        items:
+                          type: string
+                        type: array
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      hotReload:
+                        description: |-
+                          Enable "hot reload" when a secret/configmap mounted is edited (default `false`). The configmap/secret must be
+                          marked with `camel.apache.org/integration` label to be taken in account. The resource will be watched for any kind change, also for
+                          changes in metadata.
+                        type: boolean
+                      resources:
+                        description: |-
+                          A list of resources (text or binary content) pointing to configmap/secret.
+                          The resources are expected to be any resource type (text or binary content).
+                          The destination path can be either a default location or any path specified by the user.
+                          Syntax: [configmap|secret]:name[/key][@path], where name represents the resource name, key optionally represents the resource key to be filtered and path represents the destination path
+                        items:
+                          type: string
+                        type: array
+                      scanKameletsImplicitLabelSecrets:
+                        description: 'Deprecated: no longer available since version
+                          2.5.'
+                        type: boolean
+                      volumes:
+                        description: |-
+                          A list of Persistent Volume Claims to be mounted. Syntax: [pvcname:/container/path]. If the PVC is not found, the Integration fails.
+                          You can use the syntax [pvcname:/container/path:size:accessMode<:storageClass>] to create a dynamic PVC based on the Storage Class provided
+                          or the default cluster Storage Class. However, if the PVC exists, the operator would mount it.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  openapi:
+                    description: The configuration of OpenAPI trait
+                    properties:
+                      configmaps:
+                        description: The configmaps holding the spec of the OpenAPI
+                          (compatible with > 3.0 spec only).
+                        items:
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                    type: object
+                  owner:
+                    description: The configuration of Owner trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      targetAnnotations:
+                        description: The set of annotations to be transferred
+                        items:
+                          type: string
+                        type: array
+                      targetLabels:
+                        description: The set of labels to be transferred
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  pdb:
+                    description: The configuration of PDB trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      maxUnavailable:
+                        description: |-
+                          The number of pods for the Integration that can be unavailable after an eviction.
+                          It can be either an absolute number or a percentage (default `1` if `min-available` is also not set).
+                          Only one of `max-unavailable` and `min-available` can be specified.
+                        type: string
+                      minAvailable:
+                        description: |-
+                          The number of pods for the Integration that must still be available after an eviction.
+                          It can be either an absolute number or a percentage.
+                          Only one of `min-available` and `max-unavailable` can be specified.
+                        type: string
+                    type: object
+                  platform:
+                    description: The configuration of Platform trait
+                    properties:
+                      auto:
+                        description: |-
+                          To automatically detect from the environment if a default platform can be created (it will be created on OpenShift or when a registry address is set).
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      createDefault:
+                        description: |-
+                          To create a default (empty) platform when the platform is missing.
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      global:
+                        description: |-
+                          Indicates if the platform should be created globally in the case of global operator (default true).
+                          Deprecated: Platform is auto generated by the operator install procedure - maintained for backward compatibility
+                        type: boolean
+                    type: object
+                  pod:
+                    description: The configuration of Pod trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  prometheus:
+                    description: The configuration of Prometheus trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      podMonitor:
+                        description: Whether a `PodMonitor` resource is created (default
+                          `true`).
+                        type: boolean
+                      podMonitorLabels:
+                        description: The `PodMonitor` resource labels, applicable
+                          when `pod-monitor` is `true`.
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  pull-secret:
+                    description: The configuration of Pull Secret trait
+                    properties:
+                      auto:
+                        description: Automatically configures the platform registry
+                          secret on the pod if it is of type `kubernetes.io/dockerconfigjson`.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      imagePullerDelegation:
+                        description: When using a global operator with a shared platform,
+                          this enables delegation of the `system:image-puller` cluster
+                          role on the operator namespace to the integration service
+                          account.
+                        type: boolean
+                      secretName:
+                        description: The pull secret name to set on the Pod. If left
+                          empty this is automatically taken from the `IntegrationPlatform`
+                          registry configuration.
+                        type: string
+                    type: object
+                  quarkus:
+                    description: The configuration of Quarkus trait
+                    properties:
+                      buildMode:
+                        description: |-
+                          The Quarkus mode to run: either `jvm` or `native` (default `jvm`).
+                          In case both `jvm` and `native` are specified, two `IntegrationKit` resources are created,
+                          with the `native` kit having precedence over the `jvm` one once ready.
+                        items:
+                          description: QuarkusMode is the type of Quarkus build packaging.
+                          enum:
+                          - jvm
+                          - native
+                          type: string
+                        type: array
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      nativeBaseImage:
+                        description: The base image to use when running a native build
+                          (default `quay.io/quarkus/quarkus-micro-image:2.0`)
+                        type: string
+                      nativeBuilderImage:
+                        description: The image containing the tooling required for
+                          a native build (by default it will use the one provided
+                          in the runtime catalog)
+                        type: string
+                      packageTypes:
+                        description: |-
+                          The Quarkus package types, `fast-jar` or `native` (default `fast-jar`).
+                          In case both `fast-jar` and `native` are specified, two `IntegrationKit` resources are created,
+                          with the native kit having precedence over the `fast-jar` one once ready.
+                          The order influences the resolution of the current kit for the integration.
+                          The kit corresponding to the first package type will be assigned to the
+                          integration in case no existing kit that matches the integration exists.
+                          Deprecated: use `build-mode` instead.
+                        items:
+                          description: |-
+                            QuarkusPackageType is the type of Quarkus build packaging.
+                            Deprecated: use `QuarkusMode` instead.
+                          enum:
+                          - fast-jar
+                          - native
+                          type: string
+                        type: array
+                    type: object
+                  registry:
+                    description: |-
+                      The configuration of Registry trait (support removed since version 2.5.0).
+                      Deprecated: use jvm trait or read documentation.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                    type: object
+                  route:
+                    description: The configuration of Route trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: |-
+                          The annotations added to route.
+                          This can be used to set route specific annotations
+                          For annotations options see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations
+                          CLI usage example: -t "route.annotations.'haproxy.router.openshift.io/balance'=true"
+                        type: object
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      host:
+                        description: To configure the host exposed by the route.
+                        type: string
+                      tlsCACertificate:
+                        description: |-
+                          The TLS CA certificate contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCACertificateSecret:
+                        description: |-
+                          The secret name and key reference to the TLS CA certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCertificate:
+                        description: |-
+                          The TLS certificate contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsCertificateSecret:
+                        description: |-
+                          The secret name and key reference to the TLS certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsDestinationCACertificate:
+                        description: |-
+                          The destination CA certificate provides the contents of the ca certificate of the final destination.  When using reencrypt
+                          termination this file should be provided in order to have routers use it for health checks on the secure connection.
+                          If this field is not specified, the router may provide its own destination CA and perform hostname validation using
+                          the short service name (service.namespace.svc), which allows infrastructure generated certificates to automatically
+                          verify.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsDestinationCACertificateSecret:
+                        description: |-
+                          The secret name and key reference to the destination CA certificate. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsInsecureEdgeTerminationPolicy:
+                        description: |-
+                          To configure how to deal with insecure traffic, e.g. `Allow`, `Disable` or `Redirect` traffic.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        enum:
+                        - None
+                        - Allow
+                        - Redirect
+                        type: string
+                      tlsKey:
+                        description: |-
+                          The TLS certificate key contents.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsKeySecret:
+                        description: |-
+                          The secret name and key reference to the TLS certificate key. The format is "secret-name[/key-name]", the value represents the secret name, if there is only one key in the secret it will be read, otherwise you can set a key name separated with a "/".
+
+                          Refer to the OpenShift route documentation for additional information.
+                        type: string
+                      tlsTermination:
+                        description: |-
+                          The TLS termination type, like `edge`, `passthrough` or `reencrypt`.
+
+                          Refer to the OpenShift route documentation for additional information.
+                        enum:
+                        - edge
+                        - reencrypt
+                        - passthrough
+                        type: string
+                    type: object
+                  security-context:
+                    description: The configuration of Security Context trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: 'Deprecated: no longer in use.'
+                        type: boolean
+                      runAsNonRoot:
+                        description: Security Context RunAsNonRoot configuration (default
+                          false).
+                        type: boolean
+                      runAsUser:
+                        description: 'Security Context RunAsUser configuration (default
+                          none): this value is automatically retrieved in Openshift
+                          clusters when not explicitly set.'
+                        format: int64
+                        type: integer
+                      seccompProfileType:
+                        description: Security Context SeccompProfileType configuration
+                          (default RuntimeDefault).
+                        enum:
+                        - Unconfined
+                        - RuntimeDefault
+                        type: string
+                    type: object
+                  service:
+                    description: The configuration of Service trait
+                    properties:
+                      annotations:
+                        additionalProperties:
+                          type: string
+                        description: The annotations added to the Service object.
+                        type: object
+                      auto:
+                        description: To automatically detect from the code if a Service
+                          needs to be created.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      labels:
+                        additionalProperties:
+                          type: string
+                        description: The labels added to the Service object.
+                        type: object
+                      nodePort:
+                        description: |-
+                          Enable Service to be exposed as NodePort (default `false`).
+                          Deprecated: Use service type instead.
+                        type: boolean
+                      ports:
+                        description: |-
+                          List of container ports available in the container to expose
+                          (syntax: <port-name>;<port-number>;<container-port-number>[;<port-protocol]).
+                          When omitted, `port-protocol` (admitted values `TCP`, `UDP` or `SCTP`) is `TCP`.
+                          Don't use this for the primary http managed port (which is managed by container trait).
+                          Don't use in Knative based environments.
+                        items:
+                          type: string
+                        type: array
+                      type:
+                        description: The type of service to be used, either 'ClusterIP',
+                          'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
+                        type: string
+                    type: object
+                  service-binding:
+                    description: |-
+                      The configuration of Service Binding trait
+                      Deprecated: no longer in use.
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      services:
+                        description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  strimzi:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                  telemetry:
+                    description: The configuration of Telemetry trait
+                    properties:
+                      auto:
+                        description: Enables automatic configuration of the trait,
+                          including automatic discovery of the telemetry endpoint.
+                        type: boolean
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      endpoint:
+                        description: The target endpoint of the Telemetry service
+                          (automatically discovered by default)
+                        type: string
+                      sampler:
+                        description: The sampler of the telemetry used for tracing
+                          (default "on")
+                        type: string
+                      sampler-parent-based:
+                        description: The sampler of the telemetry used for tracing
+                          is parent based (default "true")
+                        type: boolean
+                      sampler-ratio:
+                        description: The sampler ratio of the telemetry used for tracing
+                        type: string
+                      serviceName:
+                        description: The name of the service that publishes telemetry
+                          data (defaults to the integration name)
+                        type: string
+                    type: object
+                  toleration:
+                    description: The configuration of Toleration trait
+                    properties:
+                      configuration:
+                        description: |-
+                          Legacy trait configuration parameters.
+                          Deprecated: for backward compatibility.
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      enabled:
+                        description: Can be used to enable or disable a trait. All
+                          traits share this common property.
+                        type: boolean
+                      taints:
+                        description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]`
+                        items:
+                          type: string
+                        type: array
+                    type: object
+                  tracing:
+                    description: 'Deprecated: for backward compatibility.'
+                    properties:
+                      configuration:
+                        description: TraitConfiguration parameters configuration
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                    required:
+                    - configuration
+                    type: object
+                type: object
             type: object
           status:
             description: the status of a Pipe
diff --git a/pkg/trait/util.go b/pkg/trait/util.go
index 896501ca3..a658cbd94 100644
--- a/pkg/trait/util.go
+++ b/pkg/trait/util.go
@@ -445,6 +445,14 @@ func NewSpecTraitsOptionsForIntegrationKit(c client.Client, i *v1.IntegrationKit
 func NewTraitsOptionsForPipe(c client.Client, pipe *v1.Pipe) (Options, error) {
 	options := Options{}
 
+	if pipe.Spec.Traits != nil {
+		var err error
+		options, err = ToTraitMap(*pipe.Spec.Traits)
+		if err != nil {
+			return nil, err
+		}
+	}
+
 	return newTraitsOptions(c, options, pipe.Annotations)
 }