diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml b/config/crd/bases/camel.apache.org_integrationkits.yaml
index 2a9de14410..8a16efffcb 100644
--- a/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -539,6 +539,236 @@ spec:
runtimeVersion:
description: the runtime version for which this kit was configured
type: string
+ traits:
+ description: generated traits executed by the kit
+ properties:
+ addons:
+ additionalProperties:
+ description: AddonTrait represents the configuration of an addon
+ trait.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ description: The collection of addon trait configurations
+ type: object
+ builder:
+ description: The builder trait is internally used to determine
+ the best strategy to build and configure IntegrationKits.
+ 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
+ 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. The content of the maven
+ profile is expected to be a text containing a valid maven
+ profile starting with `` and ending with ``
+ 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 `sequential`)
+ enum:
+ - dependencies
+ - fifo
+ - sequential
+ type: string
+ 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 `;;`.
+ items:
+ type: string
+ type: array
+ tasksFilter:
+ description: A list of tasks sorted by the order of execution
+ in a csv format, ie, `,,...`. Mind
+ that you must include also the operator tasks (`builder`,
+ `quarkus-native`, `package`, `jib`, `spectrum`, `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 `:`.
+ items:
+ type: string
+ type: array
+ tasksLimitMemory:
+ description: A list of limit memory configuration for the
+ specific task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestCPU:
+ description: A list of request cpu configuration for the specific
+ task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestMemory:
+ description: A list of request memory configuration for the
+ specific task with format `:`.
+ 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 Camel trait sets up Camel configuration.
+ 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
+ runtimeVersion:
+ description: The camel-k-runtime version to use for the integration.
+ It overrides the default version set in the Integration
+ Platform.
+ type: string
+ type: object
+ quarkus:
+ description: 'The Quarkus trait configures the Quarkus runtime.
+ It''s enabled by default. NOTE: Compiling to a native executable,
+ requires at least 4GiB of memory, so the Pod running the native
+ build must have enough memory available.'
+ 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 Registry trait sets up Maven to use the Image
+ registry as a Maven repository.
+ 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
+ type: object
version:
description: the Camel K operator version for which this kit was configured
type: string
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml
index 65682db95b..e72348827a 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -8073,6 +8073,1473 @@ spec:
selector:
description: label selector
type: string
+ traits:
+ description: the traits generated and executed for this 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
+ 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. The content of the maven
+ profile is expected to be a text containing a valid maven
+ profile starting with `` and ending with ``
+ 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 `sequential`)
+ enum:
+ - dependencies
+ - fifo
+ - sequential
+ type: string
+ 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 `;;`.
+ items:
+ type: string
+ type: array
+ tasksFilter:
+ description: A list of tasks sorted by the order of execution
+ in a csv format, ie, `,,...`. Mind
+ that you must include also the operator tasks (`builder`,
+ `quarkus-native`, `package`, `jib`, `spectrum`, `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 `:`.
+ items:
+ type: string
+ type: array
+ tasksLimitMemory:
+ description: A list of limit memory configuration for the
+ specific task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestCPU:
+ description: A list of request cpu configuration for the specific
+ task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestMemory:
+ description: A list of request memory configuration for the
+ specific task with format `:`.
+ 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
+ runtimeVersion:
+ description: The camel-k-runtime version to use for the integration.
+ It overrides the default version set in the Integration
+ Platform.
+ type: string
+ type: object
+ container:
+ description: The configuration of Container trait
+ properties:
+ auto:
+ description: To automatically enable the trait
+ type: boolean
+ 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 exposure via kubernetes
+ Service.
+ type: boolean
+ image:
+ description: The main container image
+ type: string
+ imagePullPolicy:
+ description: 'The pull policy: Always|Never|IfNotPresent'
+ enum:
+ - Always
+ - Never
+ - IfNotPresent
+ type: string
+ limitCPU:
+ description: The maximum amount of CPU required.
+ type: string
+ limitMemory:
+ description: The maximum amount of memory required.
+ type: string
+ name:
+ description: The main container name. It's named `integration`
+ by default.
+ type: string
+ port:
+ description: To configure a different port exposed by the
+ container (default `8080`).
+ type: integer
+ portName:
+ description: To configure a different port name for the port
+ exposed by the container. It defaults to `http` only when
+ the `expose` parameter is true.
+ type: string
+ requestCPU:
+ description: The minimum amount of CPU required.
+ type: string
+ requestMemory:
+ description: The minimum amount of memory required.
+ type: string
+ servicePort:
+ description: To configure under which service port the container
+ port is to be exposed (default `80`).
+ type: integer
+ servicePortName:
+ description: To configure under which service port name the
+ 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). \n 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
+ 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: 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:
+ 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%`.'
+ type: integer
+ rollingUpdateMaxUnavailable:
+ 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%`.'
+ type: integer
+ 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 KEY=VALUE, e.g.,
+ `MY_VAR="my value"`. These take precedence over the previously
+ defined environment variables.
+ items:
+ type: string
+ type: array
+ type: object
+ error-handler:
+ description: The configuration of Error Handler 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
+ 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: to be
+ removed from trait configuration.'
+ 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
+ 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
+ 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
+ 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
+ path:
+ description: To configure the path exposed by the ingress
+ (default `/`).
+ 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
+ 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`).
+ 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:
+ 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
+ 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`)
+ 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
+ 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
+ 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: \n * 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).
+ \n 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. \n 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). \n 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. \n 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. \n 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
+ visibility:
+ description: "Setting `cluster-local`, Knative service becomes
+ a private service. Specifically, this option applies the
+ `networking.knative.dev/visibility` label to Knative service.
+ \n 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: 'Deprecated: for backward compatibility.'
+ properties:
+ configuration:
+ description: TraitConfiguration parameters configuration
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - configuration
+ 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
+ configsAsProperties:
+ description: Include any property file (suffix `.properties`)
+ listed in configmaps/secrets provided in the `configs` parameter
+ as a runtime property file (default `true`).
+ type: boolean
+ configsAsPropertyFiles:
+ description: 'Deprecated: use camel.properties or include
+ your properties in an explicit property file backed by a
+ configmap or secret. Let the operator to treat configmaps
+ or secret as plain properties file with their key/value
+ list (ie .spec.data["camel.my-property"] = my-value) (default
+ `true`).'
+ type: boolean
+ 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
+ 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.
+ 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: include your properties in an explicit
+ property file backed by a secret. Let the operator to scan
+ for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`.
+ These secrets are mounted to the application and treated
+ as plain properties file with their key/value list (ie .spec.data["camel.my-property"]
+ = my-value) (default `true`).'
+ type: boolean
+ volumes:
+ description: 'A list of Persistent Volume Claims to be mounted.
+ Syntax: [pvcname:/container/path]'
+ 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
+ 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 only).
+ 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.
+ 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).
+ 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
+ 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. \n 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 \"/\". \n Refer to the OpenShift
+ route documentation for additional information."
+ type: string
+ tlsCertificate:
+ description: "The TLS certificate contents. \n 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 \"/\". \n 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. \n 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 \"/\". \n 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. \n Refer
+ to the OpenShift route documentation for additional information."
+ enum:
+ - None
+ - Allow
+ - Redirect
+ type: string
+ tlsKey:
+ description: "The TLS certificate key contents. \n 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 \"/\". \n Refer to the OpenShift
+ route documentation for additional information."
+ type: string
+ tlsTermination:
+ description: "The TLS termination type, like `edge`, `passthrough`
+ or `reencrypt`. \n Refer to the OpenShift route documentation
+ for additional information."
+ enum:
+ - edge
+ - reencrypt
+ - passthrough
+ type: string
+ type: object
+ service:
+ description: The configuration of Service trait
+ properties:
+ 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
+ nodePort:
+ description: 'Enable Service to be exposed as NodePort (default
+ `false`). Deprecated: Use service type instead.'
+ type: boolean
+ 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
+ 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
+ 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
version:
description: the operator version
type: string
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index ff9aaaa5c8..7bce2e3225 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -2559,6 +2559,13 @@ the Camel K operator version for which this kit was configured
a list of conditions which happened for the events related the kit
+|`traits` +
+*xref:#_camel_apache_org_v1_IntegrationKitTraits[IntegrationKitTraits]*
+|
+
+
+generated traits executed by the kit
+
|===
@@ -2568,6 +2575,7 @@ a list of conditions which happened for the events related the kit
*Appears on:*
* <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>>
+* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
IntegrationKitTraits defines traits assigned to an `IntegrationKit`.
@@ -3230,6 +3238,13 @@ label selector
features offered by the Integration
+|`traits` +
+*xref:#_camel_apache_org_v1_Traits[Traits]*
+|
+
+
+the traits generated and executed for this Integration
+
|`lastInitTimestamp` +
*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#time-v1-meta[Kubernetes meta/v1.Time]*
|
@@ -5355,6 +5370,7 @@ TraitConfiguration parameters configuration
* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
* <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>>
+* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
Traits represents the collection of trait configurations.
diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml
index 2a9de14410..8a16efffcb 100644
--- a/helm/camel-k/crds/crd-integration-kit.yaml
+++ b/helm/camel-k/crds/crd-integration-kit.yaml
@@ -539,6 +539,236 @@ spec:
runtimeVersion:
description: the runtime version for which this kit was configured
type: string
+ traits:
+ description: generated traits executed by the kit
+ properties:
+ addons:
+ additionalProperties:
+ description: AddonTrait represents the configuration of an addon
+ trait.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ description: The collection of addon trait configurations
+ type: object
+ builder:
+ description: The builder trait is internally used to determine
+ the best strategy to build and configure IntegrationKits.
+ 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
+ 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. The content of the maven
+ profile is expected to be a text containing a valid maven
+ profile starting with `` and ending with ``
+ 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 `sequential`)
+ enum:
+ - dependencies
+ - fifo
+ - sequential
+ type: string
+ 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 `;;`.
+ items:
+ type: string
+ type: array
+ tasksFilter:
+ description: A list of tasks sorted by the order of execution
+ in a csv format, ie, `,,...`. Mind
+ that you must include also the operator tasks (`builder`,
+ `quarkus-native`, `package`, `jib`, `spectrum`, `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 `:`.
+ items:
+ type: string
+ type: array
+ tasksLimitMemory:
+ description: A list of limit memory configuration for the
+ specific task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestCPU:
+ description: A list of request cpu configuration for the specific
+ task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestMemory:
+ description: A list of request memory configuration for the
+ specific task with format `:`.
+ 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 Camel trait sets up Camel configuration.
+ 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
+ runtimeVersion:
+ description: The camel-k-runtime version to use for the integration.
+ It overrides the default version set in the Integration
+ Platform.
+ type: string
+ type: object
+ quarkus:
+ description: 'The Quarkus trait configures the Quarkus runtime.
+ It''s enabled by default. NOTE: Compiling to a native executable,
+ requires at least 4GiB of memory, so the Pod running the native
+ build must have enough memory available.'
+ 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 Registry trait sets up Maven to use the Image
+ registry as a Maven repository.
+ 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
+ type: object
version:
description: the Camel K operator version for which this kit was configured
type: string
diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml
index 65682db95b..e72348827a 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -8073,6 +8073,1473 @@ spec:
selector:
description: label selector
type: string
+ traits:
+ description: the traits generated and executed for this 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
+ 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. The content of the maven
+ profile is expected to be a text containing a valid maven
+ profile starting with `` and ending with ``
+ 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 `sequential`)
+ enum:
+ - dependencies
+ - fifo
+ - sequential
+ type: string
+ 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 `;;`.
+ items:
+ type: string
+ type: array
+ tasksFilter:
+ description: A list of tasks sorted by the order of execution
+ in a csv format, ie, `,,...`. Mind
+ that you must include also the operator tasks (`builder`,
+ `quarkus-native`, `package`, `jib`, `spectrum`, `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 `:`.
+ items:
+ type: string
+ type: array
+ tasksLimitMemory:
+ description: A list of limit memory configuration for the
+ specific task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestCPU:
+ description: A list of request cpu configuration for the specific
+ task with format `:`.
+ items:
+ type: string
+ type: array
+ tasksRequestMemory:
+ description: A list of request memory configuration for the
+ specific task with format `:`.
+ 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
+ runtimeVersion:
+ description: The camel-k-runtime version to use for the integration.
+ It overrides the default version set in the Integration
+ Platform.
+ type: string
+ type: object
+ container:
+ description: The configuration of Container trait
+ properties:
+ auto:
+ description: To automatically enable the trait
+ type: boolean
+ 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 exposure via kubernetes
+ Service.
+ type: boolean
+ image:
+ description: The main container image
+ type: string
+ imagePullPolicy:
+ description: 'The pull policy: Always|Never|IfNotPresent'
+ enum:
+ - Always
+ - Never
+ - IfNotPresent
+ type: string
+ limitCPU:
+ description: The maximum amount of CPU required.
+ type: string
+ limitMemory:
+ description: The maximum amount of memory required.
+ type: string
+ name:
+ description: The main container name. It's named `integration`
+ by default.
+ type: string
+ port:
+ description: To configure a different port exposed by the
+ container (default `8080`).
+ type: integer
+ portName:
+ description: To configure a different port name for the port
+ exposed by the container. It defaults to `http` only when
+ the `expose` parameter is true.
+ type: string
+ requestCPU:
+ description: The minimum amount of CPU required.
+ type: string
+ requestMemory:
+ description: The minimum amount of memory required.
+ type: string
+ servicePort:
+ description: To configure under which service port the container
+ port is to be exposed (default `80`).
+ type: integer
+ servicePortName:
+ description: To configure under which service port name the
+ 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). \n 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
+ 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: 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:
+ 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%`.'
+ type: integer
+ rollingUpdateMaxUnavailable:
+ 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%`.'
+ type: integer
+ 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 KEY=VALUE, e.g.,
+ `MY_VAR="my value"`. These take precedence over the previously
+ defined environment variables.
+ items:
+ type: string
+ type: array
+ type: object
+ error-handler:
+ description: The configuration of Error Handler 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
+ 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: to be
+ removed from trait configuration.'
+ 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
+ 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
+ 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
+ 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
+ path:
+ description: To configure the path exposed by the ingress
+ (default `/`).
+ 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
+ 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`).
+ 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:
+ 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
+ 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`)
+ 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
+ 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
+ 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: \n * 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).
+ \n 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. \n 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). \n 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. \n 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. \n 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
+ visibility:
+ description: "Setting `cluster-local`, Knative service becomes
+ a private service. Specifically, this option applies the
+ `networking.knative.dev/visibility` label to Knative service.
+ \n 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: 'Deprecated: for backward compatibility.'
+ properties:
+ configuration:
+ description: TraitConfiguration parameters configuration
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - configuration
+ 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
+ configsAsProperties:
+ description: Include any property file (suffix `.properties`)
+ listed in configmaps/secrets provided in the `configs` parameter
+ as a runtime property file (default `true`).
+ type: boolean
+ configsAsPropertyFiles:
+ description: 'Deprecated: use camel.properties or include
+ your properties in an explicit property file backed by a
+ configmap or secret. Let the operator to treat configmaps
+ or secret as plain properties file with their key/value
+ list (ie .spec.data["camel.my-property"] = my-value) (default
+ `true`).'
+ type: boolean
+ 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
+ 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.
+ 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: include your properties in an explicit
+ property file backed by a secret. Let the operator to scan
+ for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`.
+ These secrets are mounted to the application and treated
+ as plain properties file with their key/value list (ie .spec.data["camel.my-property"]
+ = my-value) (default `true`).'
+ type: boolean
+ volumes:
+ description: 'A list of Persistent Volume Claims to be mounted.
+ Syntax: [pvcname:/container/path]'
+ 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
+ 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 only).
+ 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.
+ 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).
+ 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
+ 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. \n 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 \"/\". \n Refer to the OpenShift
+ route documentation for additional information."
+ type: string
+ tlsCertificate:
+ description: "The TLS certificate contents. \n 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 \"/\". \n 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. \n 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 \"/\". \n 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. \n Refer
+ to the OpenShift route documentation for additional information."
+ enum:
+ - None
+ - Allow
+ - Redirect
+ type: string
+ tlsKey:
+ description: "The TLS certificate key contents. \n 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 \"/\". \n Refer to the OpenShift
+ route documentation for additional information."
+ type: string
+ tlsTermination:
+ description: "The TLS termination type, like `edge`, `passthrough`
+ or `reencrypt`. \n Refer to the OpenShift route documentation
+ for additional information."
+ enum:
+ - edge
+ - reencrypt
+ - passthrough
+ type: string
+ type: object
+ service:
+ description: The configuration of Service trait
+ properties:
+ 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
+ nodePort:
+ description: 'Enable Service to be exposed as NodePort (default
+ `false`). Deprecated: Use service type instead.'
+ type: boolean
+ 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
+ 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
+ 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
version:
description: the operator version
type: string
diff --git a/pkg/apis/camel/v1/integration_types.go b/pkg/apis/camel/v1/integration_types.go
index 9f293f6a63..c72a96253f 100644
--- a/pkg/apis/camel/v1/integration_types.go
+++ b/pkg/apis/camel/v1/integration_types.go
@@ -118,6 +118,8 @@ type IntegrationStatus struct {
Selector string `json:"selector,omitempty"`
// features offered by the Integration
Capabilities []string `json:"capabilities,omitempty"`
+ // the traits generated and executed for this Integration
+ Traits Traits `json:"traits,omitempty"`
// the timestamp representing the last time when this integration was initialized.
InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"`
}
diff --git a/pkg/apis/camel/v1/integrationkit_types.go b/pkg/apis/camel/v1/integrationkit_types.go
index 8ee233dee6..5311e7dd7b 100644
--- a/pkg/apis/camel/v1/integrationkit_types.go
+++ b/pkg/apis/camel/v1/integrationkit_types.go
@@ -120,6 +120,8 @@ type IntegrationKitStatus struct {
Version string `json:"version,omitempty"`
// a list of conditions which happened for the events related the kit
Conditions []IntegrationKitCondition `json:"conditions,omitempty"`
+ // generated traits executed by the kit
+ Traits IntegrationKitTraits `json:"traits,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index ed9b930e3f..8a3629a384 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -1280,6 +1280,7 @@ func (in *IntegrationKitStatus) DeepCopyInto(out *IntegrationKitStatus) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
+ in.Traits.DeepCopyInto(&out.Traits)
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationKitStatus.
@@ -1667,6 +1668,7 @@ func (in *IntegrationStatus) DeepCopyInto(out *IntegrationStatus) {
*out = make([]string, len(*in))
copy(*out, *in)
}
+ in.Traits.DeepCopyInto(&out.Traits)
if in.InitializationTimestamp != nil {
in, out := &in.InitializationTimestamp, &out.InitializationTimestamp
*out = (*in).DeepCopy()
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go
index 12650227af..931c92f89f 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go
@@ -39,6 +39,7 @@ type IntegrationKitStatusApplyConfiguration struct {
Platform *string `json:"platform,omitempty"`
Version *string `json:"version,omitempty"`
Conditions []IntegrationKitConditionApplyConfiguration `json:"conditions,omitempty"`
+ Traits *IntegrationKitTraitsApplyConfiguration `json:"traits,omitempty"`
}
// IntegrationKitStatusApplyConfiguration constructs an declarative configuration of the IntegrationKitStatus type for use with
@@ -160,3 +161,11 @@ func (b *IntegrationKitStatusApplyConfiguration) WithConditions(values ...*Integ
}
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 *IntegrationKitStatusApplyConfiguration) WithTraits(value *IntegrationKitTraitsApplyConfiguration) *IntegrationKitStatusApplyConfiguration {
+ b.Traits = value
+ return b
+}
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go
index d17acaa2b2..8ef4bdfcf5 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go
@@ -45,6 +45,7 @@ type IntegrationStatusApplyConfiguration struct {
Replicas *int32 `json:"replicas,omitempty"`
Selector *string `json:"selector,omitempty"`
Capabilities []string `json:"capabilities,omitempty"`
+ Traits *TraitsApplyConfiguration `json:"traits,omitempty"`
InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"`
}
@@ -209,6 +210,14 @@ func (b *IntegrationStatusApplyConfiguration) WithCapabilities(values ...string)
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 *IntegrationStatusApplyConfiguration) WithTraits(value *TraitsApplyConfiguration) *IntegrationStatusApplyConfiguration {
+ b.Traits = value
+ return b
+}
+
// WithInitializationTimestamp sets the InitializationTimestamp 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 InitializationTimestamp field is set to the value of the last call.
diff --git a/pkg/cmd/promote_test.go b/pkg/cmd/promote_test.go
index bc39d63de9..0cf9093d88 100644
--- a/pkg/cmd/promote_test.go
+++ b/pkg/cmd/promote_test.go
@@ -101,7 +101,8 @@ spec:
traits:
container:
image: my-special-image
-status: {}
+status:
+ traits: {}
`, output)
}
@@ -197,7 +198,8 @@ spec:
traits:
container:
image: my-special-image
-status: {}
+status:
+ traits: {}
`, output)
}
@@ -316,7 +318,8 @@ spec:
traits:
container:
image: my-special-image
-status: {}
+status:
+ traits: {}
`, output)
// Verify also when the operator Id is set in the integration
defaultIntegration.Annotations = map[string]string{
@@ -338,6 +341,7 @@ spec:
traits:
container:
image: my-special-image
-status: {}
+status:
+ traits: {}
`, output)
}
diff --git a/pkg/cmd/run_test.go b/pkg/cmd/run_test.go
index 4ecc9fd1b4..d6bddb689a 100644
--- a/pkg/cmd/run_test.go
+++ b/pkg/cmd/run_test.go
@@ -608,7 +608,8 @@ spec:
{\n\t from(\"timer:tick\")\n .log(\"Hello Camel K!\");\n }\n}\n"
name: %s
traits: {}
-status: {}
+status:
+ traits: {}
`, fileName, fileName), output)
}
@@ -648,7 +649,8 @@ spec:
service-binding:
services:
- my-service-binding
-status: {}
+status:
+ traits: {}
`, fileName, fileName), output)
}
@@ -956,6 +958,7 @@ spec:
mount:
configs:
- configmap:my-cm
-status: {}
+status:
+ traits: {}
`, output)
}
diff --git a/pkg/controller/integration/kits.go b/pkg/controller/integration/kits.go
index 5cdfb06784..c4c2e69e8c 100644
--- a/pkg/controller/integration/kits.go
+++ b/pkg/controller/integration/kits.go
@@ -114,11 +114,11 @@ func integrationMatches(integration *v1.Integration, kit *v1.IntegrationKit) (bo
// A kit can be used only if it contains a subset of the traits and related configurations
// declared on integration.
- itc, err := trait.NewTraitsOptionsForIntegration(integration)
+ itc, err := trait.NewStatusTraitsOptionsForIntegration(integration)
if err != nil {
return false, err
}
- ikc, err := trait.NewTraitsOptionsForIntegrationKit(kit)
+ ikc, err := trait.NewStatusTraitsOptionsForIntegrationKit(kit)
if err != nil {
return false, err
}
@@ -162,25 +162,26 @@ func statusMatches(integration *v1.Integration, kit *v1.IntegrationKit, ilog *lo
return true
}
-// kitMatches returns whether the two v1.IntegrationKit match.
-func kitMatches(kit1 *v1.IntegrationKit, kit2 *v1.IntegrationKit) (bool, error) {
- version := kit1.Status.Version
+// kitMatches returns whether the kit matches with the existing target kit.
+func kitMatches(kit *v1.IntegrationKit, target *v1.IntegrationKit) (bool, error) {
+ version := kit.Status.Version
if version == "" {
// Defaults with the version that is going to be set during the kit initialization
version = defaults.Version
}
- if version != kit2.Status.Version {
+ if version != target.Status.Version {
return false, nil
}
- if len(kit1.Spec.Dependencies) != len(kit2.Spec.Dependencies) {
+ if len(kit.Spec.Dependencies) != len(target.Spec.Dependencies) {
return false, nil
}
- c1, err := trait.NewTraitsOptionsForIntegrationKit(kit1)
+ // We cannot have yet the status set
+ c1, err := trait.NewSpecTraitsOptionsForIntegrationKit(kit)
if err != nil {
return false, err
}
- c2, err := trait.NewTraitsOptionsForIntegrationKit(kit2)
+ c2, err := trait.NewStatusTraitsOptionsForIntegrationKit(target)
if err != nil {
return false, err
}
@@ -188,7 +189,7 @@ func kitMatches(kit1 *v1.IntegrationKit, kit2 *v1.IntegrationKit) (bool, error)
if match, err := hasMatchingTraits(c1, c2); !match || err != nil {
return false, err
}
- if !util.StringSliceContains(kit1.Spec.Dependencies, kit2.Spec.Dependencies) {
+ if !util.StringSliceContains(kit.Spec.Dependencies, target.Spec.Dependencies) {
return false, nil
}
diff --git a/pkg/controller/integration/kits_test.go b/pkg/controller/integration/kits_test.go
index 173d884cf0..c2713159c7 100644
--- a/pkg/controller/integration/kits_test.go
+++ b/pkg/controller/integration/kits_test.go
@@ -162,6 +162,11 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T)
},
Status: v1.IntegrationKitStatus{
Phase: v1.IntegrationKitPhaseReady,
+ Traits: v1.IntegrationKitTraits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ },
+ },
},
},
// Should NOT be discarded because it contains a subset of the required traits and
@@ -194,6 +199,14 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T)
},
Status: v1.IntegrationKitStatus{
Phase: v1.IntegrationKitPhaseReady,
+ Traits: v1.IntegrationKitTraits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ Properties: []string{
+ "build-key1=build-value1",
+ },
+ },
+ },
},
},
)
@@ -228,6 +241,14 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T)
"camel-core",
"camel-irc",
},
+ Traits: v1.Traits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ Properties: []string{
+ "build-key1=build-value1",
+ },
+ },
+ },
},
})
@@ -254,6 +275,13 @@ func TestHasMatchingTraits_KitNoTraitShouldNotBePicked(t *testing.T) {
},
},
},
+ Status: v1.IntegrationStatus{
+ Traits: v1.Traits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ },
+ },
+ },
}
kit := &v1.IntegrationKit{
@@ -270,7 +298,7 @@ func TestHasMatchingTraits_KitNoTraitShouldNotBePicked(t *testing.T) {
a := buildKitAction{}
a.InjectLogger(log.Log)
- ok, err := trait.IntegrationAndKitHaveSameTraits(integration, kit)
+ ok, err := integrationAndKitHaveSameTraits(integration, kit)
assert.Nil(t, err)
assert.False(t, ok)
}
@@ -295,6 +323,16 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) {
},
},
},
+ Status: v1.IntegrationStatus{
+ Traits: v1.Traits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ Properties: []string{
+ "build-key1=build-value1",
+ },
+ },
+ },
+ },
}
kit := &v1.IntegrationKit{
@@ -316,12 +354,22 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) {
},
},
},
+ Status: v1.IntegrationKitStatus{
+ Traits: v1.IntegrationKitTraits{
+ Builder: &traitv1.BuilderTrait{
+ PlatformBaseTrait: traitv1.PlatformBaseTrait{},
+ Properties: []string{
+ "build-key1=build-value1",
+ },
+ },
+ },
+ },
}
a := buildKitAction{}
a.InjectLogger(log.Log)
- ok, err := trait.IntegrationAndKitHaveSameTraits(integration, kit)
+ ok, err := integrationAndKitHaveSameTraits(integration, kit)
assert.Nil(t, err)
assert.True(t, ok)
}
@@ -422,3 +470,16 @@ func TestHasNotMatchingSources(t *testing.T) {
hsm2 := hasMatchingSourcesForNative(integration, kit2)
assert.False(t, hsm2)
}
+
+func integrationAndKitHaveSameTraits(i1 *v1.Integration, i2 *v1.IntegrationKit) (bool, error) {
+ itOpts, err := trait.NewStatusTraitsOptionsForIntegration(i1)
+ if err != nil {
+ return false, err
+ }
+ ikOpts, err := trait.NewSpecTraitsOptionsForIntegrationKit(i2)
+ if err != nil {
+ return false, err
+ }
+
+ return trait.Equals(ikOpts, itOpts), nil
+}
diff --git a/pkg/trait/trait.go b/pkg/trait/trait.go
index 059b294f14..bfbd438524 100644
--- a/pkg/trait/trait.go
+++ b/pkg/trait/trait.go
@@ -85,8 +85,14 @@ func Apply(ctx context.Context, c client.Client, integration *v1.Integration, ki
switch {
case integration != nil:
ilog.Debug("Applied traits to Integration", "integration", integration.Name, "namespace", integration.Namespace)
+ // The spec.traits may have been altered by other traits execution. We can save here the status for future
+ // reference
+ integration.Status.Traits = integration.Spec.Traits
case kit != nil:
ilog.Debug("Applied traits to Integration kit", "integration kit", kit.Name, "namespace", kit.Namespace)
+ // The spec.traits may have been altered by other traits execution We can save here the status for future
+ // reference
+ kit.Status.Traits = kit.Spec.Traits
default:
ilog.Debug("Applied traits")
}
diff --git a/pkg/trait/util.go b/pkg/trait/util.go
index 59445247c8..d8b4d4acd1 100644
--- a/pkg/trait/util.go
+++ b/pkg/trait/util.go
@@ -349,25 +349,11 @@ func Equals(i1 Options, i2 Options) bool {
// IntegrationsHaveSameTraits return if traits are the same.
func IntegrationsHaveSameTraits(i1 *v1.Integration, i2 *v1.Integration) (bool, error) {
- c1, err := NewTraitsOptionsForIntegration(i1)
+ c1, err := NewStatusTraitsOptionsForIntegration(i1)
if err != nil {
return false, err
}
- c2, err := NewTraitsOptionsForIntegration(i2)
- if err != nil {
- return false, err
- }
-
- return Equals(c1, c2), nil
-}
-
-// IntegrationKitsHaveSameTraits return if traits are the same.
-func IntegrationKitsHaveSameTraits(i1 *v1.IntegrationKit, i2 *v1.IntegrationKit) (bool, error) {
- c1, err := NewTraitsOptionsForIntegrationKit(i1)
- if err != nil {
- return false, err
- }
- c2, err := NewTraitsOptionsForIntegrationKit(i2)
+ c2, err := NewStatusTraitsOptionsForIntegration(i2)
if err != nil {
return false, err
}
@@ -408,7 +394,7 @@ func KameletBindingsHaveSameTraits(i1 *v1alpha1.KameletBinding, i2 *v1alpha1.Kam
// The comparison is done for the subset of traits defines on the binding as during the trait processing,
// some traits may be added to the Integration i.e. knative configuration in case of sink binding.
func IntegrationAndPipeSameTraits(i1 *v1.Integration, i2 *v1.Pipe) (bool, error) {
- itOpts, err := NewTraitsOptionsForIntegration(i1)
+ itOpts, err := NewStatusTraitsOptionsForIntegration(i1)
if err != nil {
return false, err
}
@@ -432,7 +418,7 @@ func IntegrationAndPipeSameTraits(i1 *v1.Integration, i2 *v1.Pipe) (bool, error)
// some traits may be added to the Integration i.e. knative configuration in case of sink binding.
// Deprecated.
func IntegrationAndKameletBindingSameTraits(i1 *v1.Integration, i2 *v1alpha1.KameletBinding) (bool, error) {
- itOpts, err := NewTraitsOptionsForIntegration(i1)
+ itOpts, err := NewStatusTraitsOptionsForIntegration(i1)
if err != nil {
return false, err
}
@@ -451,54 +437,43 @@ func IntegrationAndKameletBindingSameTraits(i1 *v1.Integration, i2 *v1alpha1.Kam
return Equals(klbOpts, toCompare), nil
}
-// IntegrationAndKitHaveSameTraits return if traits are the same.
-func IntegrationAndKitHaveSameTraits(i1 *v1.Integration, i2 *v1.IntegrationKit) (bool, error) {
- itOpts, err := NewTraitsOptionsForIntegration(i1)
- if err != nil {
- return false, err
- }
- ikOpts, err := NewTraitsOptionsForIntegrationKit(i2)
- if err != nil {
- return false, err
- }
-
- return Equals(ikOpts, itOpts), nil
-}
-
-func NewTraitsOptionsForIntegration(i *v1.Integration) (Options, error) {
- m1, err := ToTraitMap(i.Spec.Traits)
- if err != nil {
- return nil, err
- }
-
- m2, err := FromAnnotations(&i.ObjectMeta)
+func newTraitsOptions(opts Options, objectMeta *metav1.ObjectMeta) (Options, error) {
+ m2, err := FromAnnotations(objectMeta)
if err != nil {
return nil, err
}
for k, v := range m2 {
- m1[k] = v
+ opts[k] = v
}
- return m1, nil
+ return opts, nil
}
-func NewTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) {
- m1, err := ToTraitMap(i.Spec.Traits)
+func NewStatusTraitsOptionsForIntegration(i *v1.Integration) (Options, error) {
+ m1, err := ToTraitMap(i.Status.Traits)
if err != nil {
return nil, err
}
- m2, err := FromAnnotations(&i.ObjectMeta)
+ return newTraitsOptions(m1, &i.ObjectMeta)
+}
+
+func newTraitsOptionsForIntegrationKit(i *v1.IntegrationKit, traits v1.IntegrationKitTraits) (Options, error) {
+ m1, err := ToTraitMap(traits)
if err != nil {
return nil, err
}
- for k, v := range m2 {
- m1[k] = v
- }
+ return newTraitsOptions(m1, &i.ObjectMeta)
+}
- return m1, nil
+func NewStatusTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) {
+ return newTraitsOptionsForIntegrationKit(i, i.Status.Traits)
+}
+
+func NewSpecTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) {
+ return newTraitsOptionsForIntegrationKit(i, i.Spec.Traits)
}
func NewTraitsOptionsForIntegrationPlatform(i *v1.IntegrationPlatform) (Options, error) {
@@ -507,16 +482,7 @@ func NewTraitsOptionsForIntegrationPlatform(i *v1.IntegrationPlatform) (Options,
return nil, err
}
- m2, err := FromAnnotations(&i.ObjectMeta)
- if err != nil {
- return nil, err
- }
-
- for k, v := range m2 {
- m1[k] = v
- }
-
- return m1, nil
+ return newTraitsOptions(m1, &i.ObjectMeta)
}
func NewTraitsOptionsForPipe(i *v1.Pipe) (Options, error) {
diff --git a/pkg/util/digest/digest.go b/pkg/util/digest/digest.go
index 52a9a01ae0..0f17e12803 100644
--- a/pkg/util/digest/digest.go
+++ b/pkg/util/digest/digest.go
@@ -108,7 +108,7 @@ func ComputeForIntegration(integration *v1.Integration, configmaps []*corev1.Con
// Calculation logic prior to 1.10.0 (the new Traits API schema) is maintained
// in order to keep consistency in the digest calculated from the same set of
// Trait configurations for backward compatibility.
- traitsMap, err := toMap(integration.Spec.Traits)
+ traitsMap, err := toMap(integration.Status.Traits)
if err != nil {
return "", err
}