You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2022/10/03 16:23:12 UTC

[camel-k] 01/02: chore(api): Add validation to trait enum parameters in CRDs

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 <an...@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