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

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

commit 2b0a4348a93553732b3315bd5d41a0cdfd3c7c26
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Thu Sep 29 10:59:06 2022 +0200

    chore(api): Add validation to trait enum parameters in CRDs
---
 .../bases/camel.apache.org_integrationkits.yaml    |  3 +
 .../camel.apache.org_integrationplatforms.yaml     | 92 +++++++++++++++++++++-
 .../crd/bases/camel.apache.org_integrations.yaml   | 46 ++++++++++-
 .../bases/camel.apache.org_kameletbindings.yaml    | 46 ++++++++++-
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  |  4 +-
 docs/modules/traits/pages/cron.adoc                |  2 +-
 docs/modules/traits/pages/knative-service.adoc     |  2 +-
 helm/camel-k/crds/crd-integration-kit.yaml         |  3 +
 helm/camel-k/crds/crd-integration-platform.yaml    | 92 +++++++++++++++++++++-
 helm/camel-k/crds/crd-integration.yaml             | 46 ++++++++++-
 helm/camel-k/crds/crd-kamelet-binding.yaml         | 46 ++++++++++-
 pkg/apis/camel/v1/trait/container.go               |  1 +
 pkg/apis/camel/v1/trait/cron.go                    |  3 +-
 pkg/apis/camel/v1/trait/deployer.go                |  1 +
 pkg/apis/camel/v1/trait/gc.go                      |  1 +
 pkg/apis/camel/v1/trait/knative_service.go         |  4 +-
 pkg/apis/camel/v1/trait/logging.go                 |  1 +
 pkg/apis/camel/v1/trait/quarkus.go                 |  1 +
 pkg/apis/camel/v1/trait/route.go                   |  2 +
 pkg/apis/camel/v1/trait/service.go                 |  1 +
 pkg/resources/resources.go                         | 20 ++---
 resources/traits.yaml                              |  4 +-
 22 files changed, 387 insertions(+), 34 deletions(-)

diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml 
b/config/crd/bases/camel.apache.org_integrationkits.yaml
index a6c966e2f..8d51628ab 100644
--- a/config/crd/bases/camel.apache.org_integrationkits.yaml
+++ b/config/crd/bases/camel.apache.org_integrationkits.yaml
@@ -185,6 +185,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
diff --git a/config/crd/bases/camel.apache.org_integrationplatforms.yaml 
b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index e990fd40a..90545b2bc 100644
--- a/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -501,6 +501,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -626,7 +630,7 @@ spec:
                           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
+                          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
@@ -652,6 +656,10 @@ spec:
                           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:
@@ -708,6 +716,10 @@ spec:
                         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
@@ -815,6 +827,10 @@ spec:
                         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
@@ -1157,7 +1173,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -1175,6 +1191,9 @@ spec:
                           (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:
@@ -1209,6 +1228,8 @@ spec:
                           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:
@@ -1237,6 +1258,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -1471,6 +1498,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -1552,6 +1582,10 @@ spec:
                         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
@@ -1569,6 +1603,10 @@ spec:
                         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:
@@ -1594,6 +1632,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
@@ -2139,6 +2181,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -2264,7 +2310,7 @@ spec:
                           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
+                          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
@@ -2290,6 +2336,10 @@ spec:
                           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:
@@ -2346,6 +2396,10 @@ spec:
                         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
@@ -2453,6 +2507,10 @@ spec:
                         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
@@ -2795,7 +2853,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -2813,6 +2871,9 @@ spec:
                           (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:
@@ -2847,6 +2908,8 @@ spec:
                           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:
@@ -2875,6 +2938,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -3109,6 +3178,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -3190,6 +3262,10 @@ spec:
                         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
@@ -3207,6 +3283,10 @@ spec:
                         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:
@@ -3232,6 +3312,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml 
b/config/crd/bases/camel.apache.org_integrations.yaml
index 00ce1ac6a..b08f6f3a6 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -6192,6 +6192,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -6317,7 +6321,7 @@ spec:
                           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
+                          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
@@ -6343,6 +6347,10 @@ spec:
                           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:
@@ -6399,6 +6407,10 @@ spec:
                         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
@@ -6506,6 +6518,10 @@ spec:
                         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
@@ -6848,7 +6864,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -6866,6 +6882,9 @@ spec:
                           (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:
@@ -6900,6 +6919,8 @@ spec:
                           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:
@@ -6928,6 +6949,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -7162,6 +7189,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -7243,6 +7273,10 @@ spec:
                         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
@@ -7260,6 +7294,10 @@ spec:
                         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:
@@ -7285,6 +7323,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
diff --git a/config/crd/bases/camel.apache.org_kameletbindings.yaml 
b/config/crd/bases/camel.apache.org_kameletbindings.yaml
index dbf907941..d24809996 100644
--- a/config/crd/bases/camel.apache.org_kameletbindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -6470,6 +6470,10 @@ spec:
                             type: string
                           imagePullPolicy:
                             description: 'The pull policy: 
Always|Never|IfNotPresent'
+                            enum:
+                            - Always
+                            - Never
+                            - IfNotPresent
                             type: string
                           limitCPU:
                             description: The maximum amount of CPU required.
@@ -6600,7 +6604,7 @@ spec:
                               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
+                              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
@@ -6626,6 +6630,10 @@ spec:
                               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:
@@ -6682,6 +6690,10 @@ spec:
                             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
@@ -6789,6 +6801,10 @@ spec:
                             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.
@@ -7136,7 +7152,7 @@ spec:
                             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 a HTTP based consumer or a passive 
consumer
+                              starting from an HTTP based consumer or a 
passive consumer
                               (e.g. `direct` is a passive consumer)"
                             type: boolean
                           autoscalingMetric:
@@ -7156,6 +7172,9 @@ spec:
                               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:
@@ -7192,6 +7211,8 @@ spec:
                               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:
@@ -7220,6 +7241,12 @@ spec:
                             type: boolean
                           level:
                             description: Adjust the logging level (defaults to 
INFO)
+                            enum:
+                            - FATAL
+                            - WARN
+                            - INFO
+                            - DEBUG
+                            - TRACE
                             type: string
                         type: object
                       master:
@@ -7454,6 +7481,9 @@ spec:
                               The kit corresponding to the first package type 
will
                               be assigned to the integration in case no 
existing kit
                               that matches the integration exists.
+                            enum:
+                            - fast-jar
+                            - native
                             items:
                               description: Quarkus package type.
                               type: string
@@ -7541,6 +7571,10 @@ spec:
                               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
@@ -7560,6 +7594,10 @@ spec:
                             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:
@@ -7585,6 +7623,10 @@ spec:
                           type:
                             description: The type of service to be used, 
either 'ClusterIP',
                               'NodePort' or 'LoadBalancer'.
+                            enum:
+                            - ClusterIP
+                            - NodePort
+                            - LoadBalancer
                             type: string
                         type: object
                       service-binding:
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc 
b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 6ed75c0d5..a268fd66d 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -4101,7 +4101,7 @@ bool
 Automatically deploy the integration as CronJob when all routes are
 either starting from a periodic consumer (only `cron`, `timer` and `quartz` 
are supported) or a passive consumer (e.g. `direct` is a passive consumer).
 
-It's required that all periodic consumers have the same period and it can be 
expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * *`,
+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).
 
 |`startingDeadlineSeconds` +
@@ -4913,7 +4913,7 @@ bool
 Automatically deploy the integration as Knative service when all conditions 
hold:
 
 * Integration is using the Knative profile
-* All routes are either starting from a HTTP based consumer or a passive 
consumer (e.g. `direct` is a passive consumer)
+* All routes are either starting from an HTTP based consumer or a passive 
consumer (e.g. `direct` is a passive consumer)
 
 
 |===
diff --git a/docs/modules/traits/pages/cron.adoc 
b/docs/modules/traits/pages/cron.adoc
index 8708acfda..60d90f904 100755
--- a/docs/modules/traits/pages/cron.adoc
+++ b/docs/modules/traits/pages/cron.adoc
@@ -68,7 +68,7 @@ Valid values are:
 | Automatically deploy the integration as CronJob when all routes are
 either starting from a periodic consumer (only `cron`, `timer` and `quartz` 
are supported) or a passive consumer (e.g. `direct` is a passive consumer).
 
-It's required that all periodic consumers have the same period and it can be 
expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * *`,
+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).
 
 | cron.starting-deadline-seconds
diff --git a/docs/modules/traits/pages/knative-service.adoc 
b/docs/modules/traits/pages/knative-service.adoc
index 08c9a1e6a..e9729d059 100755
--- a/docs/modules/traits/pages/knative-service.adoc
+++ b/docs/modules/traits/pages/knative-service.adoc
@@ -79,7 +79,7 @@ Refer to the Knative documentation for more information.
 | Automatically deploy the integration as Knative service when all conditions 
hold:
 
 * Integration is using the Knative profile
-* All routes are either starting from a HTTP based consumer or a passive 
consumer (e.g. `direct` is a passive consumer)
+* All routes are either starting from an HTTP based consumer or a passive 
consumer (e.g. `direct` is a passive consumer)
 
 |===
 
diff --git a/helm/camel-k/crds/crd-integration-kit.yaml 
b/helm/camel-k/crds/crd-integration-kit.yaml
index a6c966e2f..8d51628ab 100644
--- a/helm/camel-k/crds/crd-integration-kit.yaml
+++ b/helm/camel-k/crds/crd-integration-kit.yaml
@@ -185,6 +185,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
diff --git a/helm/camel-k/crds/crd-integration-platform.yaml 
b/helm/camel-k/crds/crd-integration-platform.yaml
index e990fd40a..90545b2bc 100644
--- a/helm/camel-k/crds/crd-integration-platform.yaml
+++ b/helm/camel-k/crds/crd-integration-platform.yaml
@@ -501,6 +501,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -626,7 +630,7 @@ spec:
                           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
+                          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
@@ -652,6 +656,10 @@ spec:
                           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:
@@ -708,6 +716,10 @@ spec:
                         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
@@ -815,6 +827,10 @@ spec:
                         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
@@ -1157,7 +1173,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -1175,6 +1191,9 @@ spec:
                           (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:
@@ -1209,6 +1228,8 @@ spec:
                           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:
@@ -1237,6 +1258,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -1471,6 +1498,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -1552,6 +1582,10 @@ spec:
                         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
@@ -1569,6 +1603,10 @@ spec:
                         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:
@@ -1594,6 +1632,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
@@ -2139,6 +2181,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -2264,7 +2310,7 @@ spec:
                           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
+                          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
@@ -2290,6 +2336,10 @@ spec:
                           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:
@@ -2346,6 +2396,10 @@ spec:
                         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
@@ -2453,6 +2507,10 @@ spec:
                         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
@@ -2795,7 +2853,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -2813,6 +2871,9 @@ spec:
                           (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:
@@ -2847,6 +2908,8 @@ spec:
                           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:
@@ -2875,6 +2938,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -3109,6 +3178,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -3190,6 +3262,10 @@ spec:
                         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
@@ -3207,6 +3283,10 @@ spec:
                         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:
@@ -3232,6 +3312,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
diff --git a/helm/camel-k/crds/crd-integration.yaml 
b/helm/camel-k/crds/crd-integration.yaml
index 00ce1ac6a..b08f6f3a6 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -6192,6 +6192,10 @@ spec:
                         type: string
                       imagePullPolicy:
                         description: 'The pull policy: 
Always|Never|IfNotPresent'
+                        enum:
+                        - Always
+                        - Never
+                        - IfNotPresent
                         type: string
                       limitCPU:
                         description: The maximum amount of CPU required.
@@ -6317,7 +6321,7 @@ spec:
                           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
+                          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
@@ -6343,6 +6347,10 @@ spec:
                           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:
@@ -6399,6 +6407,10 @@ spec:
                         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
@@ -6506,6 +6518,10 @@ spec:
                         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
@@ -6848,7 +6864,7 @@ spec:
                         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
-                          a HTTP based consumer or a passive consumer (e.g. 
`direct`
+                          an HTTP based consumer or a passive consumer (e.g. 
`direct`
                           is a passive consumer)"
                         type: boolean
                       autoscalingMetric:
@@ -6866,6 +6882,9 @@ spec:
                           (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:
@@ -6900,6 +6919,8 @@ spec:
                           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:
@@ -6928,6 +6949,12 @@ spec:
                         type: boolean
                       level:
                         description: Adjust the logging level (defaults to 
INFO)
+                        enum:
+                        - FATAL
+                        - WARN
+                        - INFO
+                        - DEBUG
+                        - TRACE
                         type: string
                     type: object
                   master:
@@ -7162,6 +7189,9 @@ spec:
                           corresponding to the first package type will be 
assigned
                           to the integration in case no existing kit that 
matches
                           the integration exists.
+                        enum:
+                        - fast-jar
+                        - native
                         items:
                           description: Quarkus package type.
                           type: string
@@ -7243,6 +7273,10 @@ spec:
                         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
@@ -7260,6 +7294,10 @@ spec:
                         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:
@@ -7285,6 +7323,10 @@ spec:
                       type:
                         description: The type of service to be used, either 
'ClusterIP',
                           'NodePort' or 'LoadBalancer'.
+                        enum:
+                        - ClusterIP
+                        - NodePort
+                        - LoadBalancer
                         type: string
                     type: object
                   service-binding:
diff --git a/helm/camel-k/crds/crd-kamelet-binding.yaml 
b/helm/camel-k/crds/crd-kamelet-binding.yaml
index dbf907941..d24809996 100644
--- a/helm/camel-k/crds/crd-kamelet-binding.yaml
+++ b/helm/camel-k/crds/crd-kamelet-binding.yaml
@@ -6470,6 +6470,10 @@ spec:
                             type: string
                           imagePullPolicy:
                             description: 'The pull policy: 
Always|Never|IfNotPresent'
+                            enum:
+                            - Always
+                            - Never
+                            - IfNotPresent
                             type: string
                           limitCPU:
                             description: The maximum amount of CPU required.
@@ -6600,7 +6604,7 @@ spec:
                               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
+                              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
@@ -6626,6 +6630,10 @@ spec:
                               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:
@@ -6682,6 +6690,10 @@ spec:
                             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
@@ -6789,6 +6801,10 @@ spec:
                             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.
@@ -7136,7 +7152,7 @@ spec:
                             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 a HTTP based consumer or a passive 
consumer
+                              starting from an HTTP based consumer or a 
passive consumer
                               (e.g. `direct` is a passive consumer)"
                             type: boolean
                           autoscalingMetric:
@@ -7156,6 +7172,9 @@ spec:
                               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:
@@ -7192,6 +7211,8 @@ spec:
                               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:
@@ -7220,6 +7241,12 @@ spec:
                             type: boolean
                           level:
                             description: Adjust the logging level (defaults to 
INFO)
+                            enum:
+                            - FATAL
+                            - WARN
+                            - INFO
+                            - DEBUG
+                            - TRACE
                             type: string
                         type: object
                       master:
@@ -7454,6 +7481,9 @@ spec:
                               The kit corresponding to the first package type 
will
                               be assigned to the integration in case no 
existing kit
                               that matches the integration exists.
+                            enum:
+                            - fast-jar
+                            - native
                             items:
                               description: Quarkus package type.
                               type: string
@@ -7541,6 +7571,10 @@ spec:
                               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
@@ -7560,6 +7594,10 @@ spec:
                             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:
@@ -7585,6 +7623,10 @@ spec:
                           type:
                             description: The type of service to be used, 
either 'ClusterIP',
                               'NodePort' or 'LoadBalancer'.
+                            enum:
+                            - ClusterIP
+                            - NodePort
+                            - LoadBalancer
                             type: string
                         type: object
                       service-binding:
diff --git a/pkg/apis/camel/v1/trait/container.go 
b/pkg/apis/camel/v1/trait/container.go
index 0b6213574..d05252c43 100644
--- a/pkg/apis/camel/v1/trait/container.go
+++ b/pkg/apis/camel/v1/trait/container.go
@@ -55,6 +55,7 @@ type ContainerTrait struct {
        // The main container image
        Image string `property:"image" json:"image,omitempty"`
        // The pull policy: Always|Never|IfNotPresent
+       // +kubebuilder:validation:Enum=Always;Never;IfNotPresent
        ImagePullPolicy corev1.PullPolicy `property:"image-pull-policy" 
json:"imagePullPolicy,omitempty"`
 
        // DeprecatedProbesEnabled enable/disable probes on the container 
(default `false`).
diff --git a/pkg/apis/camel/v1/trait/cron.go b/pkg/apis/camel/v1/trait/cron.go
index 84bd87c90..67e8cb749 100644
--- a/pkg/apis/camel/v1/trait/cron.go
+++ b/pkg/apis/camel/v1/trait/cron.go
@@ -51,11 +51,12 @@ type CronTrait struct {
        // - "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
+       // +kubebuilder:validation:Enum=Allow;Forbid;Replace
        ConcurrencyPolicy string `property:"concurrency-policy" 
json:"concurrencyPolicy,omitempty"`
        // Automatically deploy the integration as CronJob when all routes are
        // either starting from a periodic consumer (only `cron`, `timer` and 
`quartz` are supported) or a passive consumer (e.g. `direct` is a passive 
consumer).
        //
-       // It's required that all periodic consumers have the same period and 
it can be expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * 
*`,
+       // 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).
        Auto *bool `property:"auto" json:"auto,omitempty"`
        // Optional deadline in seconds for starting the job if it misses 
scheduled
diff --git a/pkg/apis/camel/v1/trait/deployer.go 
b/pkg/apis/camel/v1/trait/deployer.go
index f26f72bed..f9f666a0e 100644
--- a/pkg/apis/camel/v1/trait/deployer.go
+++ b/pkg/apis/camel/v1/trait/deployer.go
@@ -24,6 +24,7 @@ package trait
 type DeployerTrait struct {
        Trait `property:",squash" json:",inline"`
        // Allows to explicitly select the desired deployment kind between 
`deployment`, `cron-job` or `knative-service` when creating the resources for 
running the integration.
+       // +kubebuilder:validation:Enum=deployment;cron-job;knative-service
        Kind string `property:"kind" json:"kind,omitempty"`
        // 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.
diff --git a/pkg/apis/camel/v1/trait/gc.go b/pkg/apis/camel/v1/trait/gc.go
index 8b4ddf43c..e61b161f1 100644
--- a/pkg/apis/camel/v1/trait/gc.go
+++ b/pkg/apis/camel/v1/trait/gc.go
@@ -27,6 +27,7 @@ type GCTrait struct {
        DiscoveryCache *DiscoveryCacheType `property:"discovery-cache" 
json:"discoveryCache,omitempty"`
 }
 
+// +kubebuilder:validation:Enum=disabled;disk;memory
 type DiscoveryCacheType string
 
 const (
diff --git a/pkg/apis/camel/v1/trait/knative_service.go 
b/pkg/apis/camel/v1/trait/knative_service.go
index af8764e2b..a474ec33f 100644
--- a/pkg/apis/camel/v1/trait/knative_service.go
+++ b/pkg/apis/camel/v1/trait/knative_service.go
@@ -29,6 +29,7 @@ type KnativeServiceTrait struct {
        // Configures the Knative autoscaling class property (e.g. to set 
`hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` autoscaling).
        //
        // Refer to the Knative documentation for more information.
+       // 
+kubebuilder:validation:Enum=kpa.autoscaling.knative.dev;hpa.autoscaling.knative.dev
        Class string `property:"autoscaling-class" json:"class,omitempty"`
        // Configures the Knative autoscaling metric property (e.g. to set 
`concurrency` based or `cpu` based autoscaling).
        //
@@ -56,10 +57,11 @@ type KnativeServiceTrait struct {
        // Specifically, this option applies the 
`networking.knative.dev/visibility` label to Knative service.
        //
        // Refer to the Knative documentation for more information.
+       // +kubebuilder:validation:Enum=cluster-local
        Visibility string `property:"visibility" json:"visibility,omitempty"`
        // Automatically deploy the integration as Knative service when all 
conditions hold:
        //
        // * Integration is using the Knative profile
-       // * All routes are either starting from a HTTP based consumer or a 
passive consumer (e.g. `direct` is a passive consumer)
+       // * All routes are either starting from an HTTP based consumer or a 
passive consumer (e.g. `direct` is a passive consumer)
        Auto *bool `property:"auto" json:"auto,omitempty"`
 }
diff --git a/pkg/apis/camel/v1/trait/logging.go 
b/pkg/apis/camel/v1/trait/logging.go
index ea0c466c3..546102468 100644
--- a/pkg/apis/camel/v1/trait/logging.go
+++ b/pkg/apis/camel/v1/trait/logging.go
@@ -28,6 +28,7 @@ type LoggingTrait struct {
        // Logs message format
        Format string `property:"format" json:"format,omitempty"`
        // Adjust the logging level (defaults to INFO)
+       // +kubebuilder:validation:Enum=FATAL;WARN;INFO;DEBUG;TRACE
        Level string `property:"level" json:"level,omitempty"`
        // Output the logs in JSON
        JSON *bool `property:"json" json:"json,omitempty"`
diff --git a/pkg/apis/camel/v1/trait/quarkus.go 
b/pkg/apis/camel/v1/trait/quarkus.go
index c521fe616..d07b98906 100644
--- a/pkg/apis/camel/v1/trait/quarkus.go
+++ b/pkg/apis/camel/v1/trait/quarkus.go
@@ -36,6 +36,7 @@ type QuarkusTrait struct {
        // 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.
+       // +kubebuilder:validation:Enum=fast-jar;native
        PackageTypes []QuarkusPackageType `property:"package-type" 
json:"packageTypes,omitempty"`
 }
 
diff --git a/pkg/apis/camel/v1/trait/route.go b/pkg/apis/camel/v1/trait/route.go
index 29466b9cd..66c242975 100644
--- a/pkg/apis/camel/v1/trait/route.go
+++ b/pkg/apis/camel/v1/trait/route.go
@@ -36,6 +36,7 @@ type RouteTrait struct {
        // The TLS termination type, like `edge`, `passthrough` or `reencrypt`.
        //
        // Refer to the OpenShift route documentation for additional 
information.
+       // +kubebuilder:validation:Enum=edge;reencrypt;passthrough
        TLSTermination string `property:"tls-termination" 
json:"tlsTermination,omitempty"`
        // The TLS certificate contents.
        //
@@ -76,5 +77,6 @@ type RouteTrait struct {
        // To configure how to deal with insecure traffic, e.g. `Allow`, 
`Disable` or `Redirect` traffic.
        //
        // Refer to the OpenShift route documentation for additional 
information.
+       // +kubebuilder:validation:Enum=None;Allow;Redirect
        TLSInsecureEdgeTerminationPolicy string 
`property:"tls-insecure-edge-termination-policy" 
json:"tlsInsecureEdgeTerminationPolicy,omitempty"`
 }
diff --git a/pkg/apis/camel/v1/trait/service.go 
b/pkg/apis/camel/v1/trait/service.go
index 039567695..d16baae42 100644
--- a/pkg/apis/camel/v1/trait/service.go
+++ b/pkg/apis/camel/v1/trait/service.go
@@ -31,6 +31,7 @@ type ServiceTrait struct {
        // Deprecated: Use service type instead.
        NodePort *bool `property:"node-port" json:"nodePort,omitempty"`
        // The type of service to be used, either 'ClusterIP', 'NodePort' or 
'LoadBalancer'.
+       // +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
        Type *ServiceType `property:"type" json:"type,omitempty"`
 }
 
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index ba6a2c379..8795ad166 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -131,30 +131,30 @@ var assets = func() http.FileSystem {
                "/crd/bases/camel.apache.org_integrationkits.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             
"camel.apache.org_integrationkits.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 15078,
+                       uncompressedSize: 15176,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x5d\x6f\xdb\x48\x92\xef\xfa\x15\x85\xf1\x43\x12\x40\xa2\x77\xee\x16\x8b\x83\x0f\xf7\xe0\x75\x92\x59\x23\x89\x9d\x8b\x34\xb3\x37\xc0\x3c\xb8\x44\x96\xa8\x1e\x91\xdd\xdc\xee\xa6\x64\xdd\xe1\xfe\xfb\xa2\xaa\x9b\x14\x25\x91\x92\xc6\x33\xc1\xbe\x84\x2f\xb1\xc8\xee\xea\xfa\xfe\xec\x5c\xc1\xe4\x8f\x7b\x46\x57\xf0\x51\xa5\xa4\x1d\x65\xe0\x0d\xf8\x25\xc1\x6d\x85\xe9\x92\x60\x6a\x16\x7e\x83\x96\xe0\xbd\xa9\x75\x86\x5e\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x5d\x6f\xdb\x48\x92\xef\xfa\x15\x85\xf1\x43\x12\x40\xa2\x77\xee\x16\x8b\x83\x0f\xf7\xe0\x75\x92\x59\x23\x89\x9d\x8b\x34\xb3\x37\xc0\x3c\xb8\x44\x96\xa8\x1e\x91\xdd\xdc\xee\xa6\x64\xdd\xe1\xfe\xfb\xa2\xaa\x9b\x14\x25\x91\x92\xc6\x33\xc1\xbe\x84\x2f\x89\xc8\xee\xea\xfa\xfe\x6c\x5f\xc1\xe4\x8f\x7b\x46\x57\xf0\x51\xa5\xa4\x1d\x65\xe0\x0d\xf8\x25\xc1\x6d\x85\xe9\x92\x60\x6a\x16\x7e\x83\x96\xe0\xbd\xa9\x75\x86\x5e\x
 [...]
                },
                "/crd/bases/camel.apache.org_integrationplatforms.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             
"camel.apache.org_integrationplatforms.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 178481,
+                       uncompressedSize: 181351,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfd\x73\xdb\x36\xb6\x30\x8e\xff\x9e\xbf\x02\xe3\xce\x1d\x3b\x19\x49\x4e\xba\xb7\xbb\xbd\x7e\xa6\xf3\x3c\xae\x93\xb6\x6e\xe2\xd8\xd7\x76\x72\xef\x4e\xdb\xa9\x20\xf2\x48\x42\x4c\x02\x5c\x00\x94\xa3\x7e\xf7\xfb\xbf\x7f\x06\x07\x00\x49\x49\x24\x48\x49\x7e\x6b\x23\x76\x66\x37\xb6\x09\xf0\xe0\xe0\xe0\xbc\xe1\xbc\x7c\x45\xfa\x77\xf7\x3c\xfb\x8a\xbc\x63\x11\x70\x05\x31\xd1\x82\xe8\x29\x90\xe3\x8c\x46\x53\x20\x57\x62\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdb\x36\xb6\x30\xfe\x7f\x3e\x05\xc6\x9d\x3b\x76\x32\x92\x9c\xec\xde\xee\xf6\xfa\x4e\xe7\x79\x5c\x27\x6d\xdd\xc4\xb1\xaf\xed\x64\xef\x4e\xdb\xa9\x20\xf2\x48\x42\x4c\x02\x5c\x00\x94\xad\xfe\xf6\xf7\xdd\x9f\xc1\x01\x40\x52\x12\x09\x52\x92\x5f\xd2\x46\xec\xcc\x6e\x6c\x13\xe0\xc1\xc1\xc1\x79\xc3\x79\xf9\x8a\xf4\xef\xef\x79\xf6\x15\x79\xc7\x22\xe0\x0a\x62\xa2\x05\xd1\x53\x20\xc7\x19\x8d\xa6\x40\xae\xc4\x58\x
 [...]
                },
                "/crd/bases/camel.apache.org_integrations.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             "camel.apache.org_integrations.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 487606,
+                       uncompressedSize: 489041,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x38\x0c\xff\xef\x4f\x81\x72\x52\x3f\x49\x1b\x91\xb2\x33\xb3\x53\x3b\x7e\xa7\x36\xa5\x91\xe4\x44\x6f\x6c\x99\x65\x29\xc9\x2f\xe5\x64\x13\xb0\x1b\x24\xb1\x6a\x02\x3d\x00\x9a\x12\xe7\xc9\xf3\xdd\x9f\xc2\x01\xd0\x17\xde\xfa\xa0\x45\x3a\xce\x4c\x63\xaa\x32\x26\xc5\x3e\x8d\xcb\xc1\xb9\x5f\x3e\x23\x83\xfd\x8d\x67\x9f\x91\x37\x3c\x61\x42\xb3\x94\x18\x49\xcc\x8c\x91\xf3\x9c\x26\x33\x46\x6e\xe5\xc4\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x38\x0c\xff\xef\x4f\x81\x72\x52\x3f\x49\x1b\x91\xb2\x33\xb3\x53\x3b\x7e\xa7\x36\xa5\x91\xe4\x44\x6f\x6c\x99\x65\x29\xc9\x2f\xe5\x64\x13\xb0\x1b\x24\xb1\x6a\x02\x3d\x00\x9a\x12\xe7\xc9\xf3\xdd\x9f\xc2\x01\xd0\x17\xde\xfa\xa0\x45\x3a\xce\x4c\x63\xaa\x32\x26\xc5\x3e\x8d\xcb\xc1\xb9\x5f\x3e\x23\x83\xfd\x8d\x67\x9f\x91\x37\x3c\x61\x42\xb3\x94\x18\x49\xcc\x8c\x91\xf3\x9c\x26\x33\x46\x6e\xe5\xc4\x
 [...]
                },
                "/crd/bases/camel.apache.org_kameletbindings.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             
"camel.apache.org_kameletbindings.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 561496,
+                       uncompressedSize: 563099,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\x72\x52\x47\xd2\x8e\x48\xd9\x99\x47\xed\xf1\x6f\xea\xa4\xb4\x65\x39\xd1\x2f\xb1\xcc\xb2\x94\xe4\xa4\x9c\xec\x04\xec\x06\x49\x1c\x35\x81\xde\x00\x9a\x12\xe7\xe6\x7e\xf7\x5b\x58\x00\xba\xd1\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x7c\x4e\x06\x0f\x37\x3e\xfb\x9c\x7c\xcf\x33\x26\x34\xcb\x89\x91\xc4\xcc\x18\x39\x2d\x69\x36\x63\xe4\x4a\x4e\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\xb6\x28\x8a\xff\x9f\x4f\x81\x72\x52\x47\xd2\x8e\x48\xd9\x99\x47\xed\xf1\x6f\xea\xa4\xb4\x65\x39\xd1\x2f\xb1\xcc\xb2\x94\xe4\xa4\x9c\xec\x04\xec\x06\x49\x1c\x35\x81\xde\x00\x9a\x12\xe7\xe6\x7e\xf7\x5b\x58\x00\xba\xd1\x7c\x09\xab\x29\x69\xe4\x99\xc6\x54\x65\x4c\x8a\xbd\x1a\x8f\x85\xf5\x7e\x7c\x4e\x06\x0f\x37\x3e\xfb\x9c\x7c\xcf\x33\x26\x34\xcb\x89\x91\xc4\xcc\x18\x39\x2d\x69\x36\x63\xe4\x4a\x4e\x
 [...]
                },
                "/crd/bases/camel.apache.org_kamelets.yaml": 
&vfsgen۰CompressedFileInfo{
                        name:             "camel.apache.org_kamelets.yaml",
@@ -611,9 +611,9 @@ var assets = func() http.FileSystem {
                "/traits.yaml": &vfsgen۰CompressedFileInfo{
                        name:             "traits.yaml",
                        modTime:          time.Time{},
-                       uncompressedSize: 57922,
+                       uncompressedSize: 59349,
 
-                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\xb9\x91\xe0\xef\xfe\x2b\xf0\xb4\xb7\x4f\x92\x1f\x49\x69\x26\x9b\xec\xac\xee\xbc\x39\x8d\xed\x49\x34\xe3\x0f\x9d\xa5\x99\x6c\x9e\xcf\x2f\x04\xbb\x41\x12\x66\x37\xd0\x01\xd0\x92\x99\xdb\xfb\xdf\xef\xa1\xaa\xf0\xd1\xcd\xa6\x48\xd9\xd6\x5c\x74\xb9\xcc\x7b\xb1\x48\x76\x17\x0a\x85\x42\xa1\x50\x9f\xce\x70\xe9\xec\xd9\x93\x31\x53\xbc\x16\x67\xec\x37\xb6\xe0\x95\x78\xc2\x58\x53\x71\x37\xd7\xa6\x3e\x63\x73\x
 [...]
+                       compressedContent: 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xfd\x77\x1b\x37\x92\xe0\xef\xf9\x2b\xf0\xb4\xb7\x4f\x92\x1f\x49\x39\x99\x9d\xd9\xac\xee\xbc\x73\x8a\xed\xcc\x28\xf1\x87\xce\x52\x32\x3b\xcf\xe7\x37\x04\xbb\x41\x12\x66\x37\xd0\x01\xd0\x92\x99\xdb\xfb\xdf\xef\xa1\xaa\xf0\xd1\xcd\xa6\x48\xd9\x52\x6e\x74\x73\x3b\xef\x6d\x2c\xa9\x51\x28\x14\x0a\x85\x42\x7d\x3a\xc3\xa5\xb3\xa7\x5f\x8d\x99\xe2\xb5\x38\x65\xbf\xb3\x05\xaf\xc4\x57\x8c\x35\x15\x77\x73\x6d\xea\x53\x36\x
 [...]
                },
        }
        fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
diff --git a/resources/traits.yaml b/resources/traits.yaml
index 940c7c7c1..4bc741a2f 100755
--- a/resources/traits.yaml
+++ b/resources/traits.yaml
@@ -334,7 +334,7 @@ traits:
     description: Automatically deploy the integration as CronJob when all 
routes are
       either starting from a periodic consumer (only `cron`, `timer` and 
`quartz`
       are supported) or a passive consumer (e.g. `direct` is a passive 
consumer).  It's
-      required that all periodic consumers have the same period and it can be 
expressed
+      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).
   - name: starting-deadline-seconds
@@ -885,7 +885,7 @@ traits:
     type: bool
     description: 'Automatically deploy the integration as Knative service when 
all
       conditions hold:  * Integration is using the Knative profile * All 
routes are
-      either starting from a HTTP based consumer or a passive consumer (e.g. 
`direct`
+      either starting from an HTTP based consumer or a passive consumer (e.g. 
`direct`
       is a passive consumer)'
 - name: logging
   platform: false

Reply via email to