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

[camel-k] 08/18: feat(api): promote kamelet to v1

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

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

commit 6aa610979429cde12d949eb674842aba00f92092
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Thu Mar 30 16:38:40 2023 +0200

    feat(api): promote kamelet to v1
---
 config/crd/bases/camel.apache.org_bindings.yaml    | 15 ------
 .../crd/bases/camel.apache.org_integrations.yaml   |  1 -
 .../bases/camel.apache.org_kameletbindings.yaml    |  4 +-
 config/crd/bases/camel.apache.org_kamelets.yaml    | 14 +----
 config/crd/kustomization.yaml                      |  3 +-
 .../bases/camel-k.clusterserviceversion.yaml       |  2 +-
 helm/camel-k/crds/crd-binding.yaml                 | 15 ------
 helm/camel-k/crds/crd-integration.yaml             |  1 -
 helm/camel-k/crds/crd-kamelet-binding.yaml         |  4 +-
 helm/camel-k/crds/crd-kamelet.yaml                 | 14 +----
 pkg/apis/camel/v1/binding_types.go                 |  2 +-
 pkg/apis/camel/v1/common_types.go                  |  2 +-
 pkg/apis/camel/v1alpha1/kamelet_binding_types.go   |  2 +-
 pkg/apis/camel/v1alpha1/kamelet_types.go           |  2 +-
 pkg/install/cluster.go                             | 62 ++++++++++++++--------
 pkg/resources/resources.go                         | 16 +++---
 pkg/resources/resources_test.go                    |  3 +-
 script/prepare-operators.sh                        |  6 ++-
 18 files changed, 67 insertions(+), 101 deletions(-)

diff --git a/config/crd/bases/camel.apache.org_bindings.yaml b/config/crd/bases/camel.apache.org_bindings.yaml
index eecb595e9..d2a6833c1 100644
--- a/config/crd/bases/camel.apache.org_bindings.yaml
+++ b/config/crd/bases/camel.apache.org_bindings.yaml
@@ -33,8 +33,6 @@ spec:
     kind: Binding
     listKind: BindingList
     plural: bindings
-    shortNames:
-    - klb
     singular: binding
   scope: Namespaced
   versions:
@@ -7777,7 +7775,6 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
-                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -7796,7 +7793,6 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -7808,7 +7804,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -7816,7 +7811,6 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8016,7 +8010,6 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
-                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -8035,7 +8028,6 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -8047,7 +8039,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -8055,7 +8046,6 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8260,7 +8250,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -8279,7 +8268,6 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -8291,7 +8279,6 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
-                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -8299,7 +8286,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
@@ -8489,7 +8475,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml
index 1c4bf2eba..a9d9b4624 100644
--- a/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/config/crd/bases/camel.apache.org_integrations.yaml
@@ -7465,7 +7465,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/config/crd/bases/camel.apache.org_kameletbindings.yaml b/config/crd/bases/camel.apache.org_kameletbindings.yaml
index ede33f2ba..dce3df057 100644
--- a/config/crd/bases/camel.apache.org_kameletbindings.yaml
+++ b/config/crd/bases/camel.apache.org_kameletbindings.yaml
@@ -48,7 +48,8 @@ spec:
       name: Replicas
       type: integer
     deprecated: true
-    deprecationWarning: v1apha1 is deprecated, please, use v1 instead
+    deprecationWarning: v1apha1.KameletBinding is deprecated, please, use v1.Binding
+      instead
     name: v1alpha1
     schema:
       openAPIV3Schema:
@@ -8479,7 +8480,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/config/crd/bases/camel.apache.org_kamelets.yaml b/config/crd/bases/camel.apache.org_kamelets.yaml
index 223b9b01d..3e2facd12 100644
--- a/config/crd/bases/camel.apache.org_kamelets.yaml
+++ b/config/crd/bases/camel.apache.org_kamelets.yaml
@@ -141,7 +141,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -160,7 +159,6 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -172,7 +170,6 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
-                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -180,7 +177,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
@@ -312,7 +308,6 @@ spec:
                     description: 'JSON represents any valid JSON value. These types
                       are supported: bool, int64, float64, string, []interface{},
                       map[string]interface{} and nil.'
-                    type: object
                     x-kubernetes-preserve-unknown-fields: true
                   externalDocs:
                     description: ExternalDocumentation allows referencing an external
@@ -331,7 +326,6 @@ spec:
                         default:
                           description: default is a default value for undefined object
                             fields.
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         deprecated:
                           type: boolean
@@ -342,14 +336,12 @@ spec:
                             description: 'JSON represents any valid JSON value. These
                               types are supported: bool, int64, float64, string, []interface{},
                               map[string]interface{} and nil.'
-                            type: object
                             x-kubernetes-preserve-unknown-fields: true
                           type: array
                         example:
                           description: 'JSON represents any valid JSON value. These
                             types are supported: bool, int64, float64, string, []interface{},
                             map[string]interface{} and nil.'
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         exclusiveMaximum:
                           type: boolean
@@ -535,7 +527,6 @@ spec:
                           description: 'JSON represents any valid JSON value. These
                             types are supported: bool, int64, float64, string, []interface{},
                             map[string]interface{} and nil.'
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         externalDocs:
                           description: ExternalDocumentation allows referencing an
@@ -554,7 +545,6 @@ spec:
                               default:
                                 description: default is a default value for undefined
                                   object fields.
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               deprecated:
                                 type: boolean
@@ -566,7 +556,6 @@ spec:
                                     These types are supported: bool, int64, float64,
                                     string, []interface{}, map[string]interface{}
                                     and nil.'
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 type: array
                               example:
@@ -574,7 +563,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               exclusiveMaximum:
                                 type: boolean
@@ -751,7 +739,7 @@ spec:
       name: Phase
       type: string
     deprecated: true
-    deprecationWarning: v1apha1 is deprecated, please, use v1 instead
+    deprecationWarning: v1apha1.Kamelet is deprecated, please, use v1.Kamelet instead
     name: v1alpha1
     schema:
       openAPIV3Schema:
diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml
index be191a381..0b0099bb8 100644
--- a/config/crd/kustomization.yaml
+++ b/config/crd/kustomization.yaml
@@ -23,5 +23,6 @@ resources:
 - bases/camel.apache.org_integrationkits.yaml
 - bases/camel.apache.org_integrationplatforms.yaml
 - bases/camel.apache.org_integrations.yaml
-- bases/camel.apache.org_bindings.yaml
 - bases/camel.apache.org_kamelets.yaml
+- bases/camel.apache.org_kameletbindings.yaml
+- bases/camel.apache.org_bindings.yaml
diff --git a/config/manifests/bases/camel-k.clusterserviceversion.yaml b/config/manifests/bases/camel-k.clusterserviceversion.yaml
index 560bb6bfc..236050ca2 100644
--- a/config/manifests/bases/camel-k.clusterserviceversion.yaml
+++ b/config/manifests/bases/camel-k.clusterserviceversion.yaml
@@ -23,7 +23,7 @@ metadata:
     categories: Integration & Delivery
     certified: "false"
     containerImage: docker.io/apache/camel-k:2.0.0-SNAPSHOT
-    createdAt: 2023-03-24T15:48:09Z
+    createdAt: 2023-03-30T11:22:34Z
     description: Apache Camel K is a lightweight integration platform, born on Kubernetes,
       with serverless superpowers.
     operators.operatorframework.io/builder: operator-sdk-v1.16.0
diff --git a/helm/camel-k/crds/crd-binding.yaml b/helm/camel-k/crds/crd-binding.yaml
index eecb595e9..d2a6833c1 100644
--- a/helm/camel-k/crds/crd-binding.yaml
+++ b/helm/camel-k/crds/crd-binding.yaml
@@ -33,8 +33,6 @@ spec:
     kind: Binding
     listKind: BindingList
     plural: bindings
-    shortNames:
-    - klb
     singular: binding
   scope: Namespaced
   versions:
@@ -7777,7 +7775,6 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
-                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -7796,7 +7793,6 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -7808,7 +7804,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -7816,7 +7811,6 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8016,7 +8010,6 @@ spec:
                               description: 'JSON represents any valid JSON value.
                                 These types are supported: bool, int64, float64, string,
                                 []interface{}, map[string]interface{} and nil.'
-                              type: object
                               x-kubernetes-preserve-unknown-fields: true
                             externalDocs:
                               description: ExternalDocumentation allows referencing
@@ -8035,7 +8028,6 @@ spec:
                                   default:
                                     description: default is a default value for undefined
                                       object fields.
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   deprecated:
                                     type: boolean
@@ -8047,7 +8039,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     type: array
                                   example:
@@ -8055,7 +8046,6 @@ spec:
                                       These types are supported: bool, int64, float64,
                                       string, []interface{}, map[string]interface{}
                                       and nil.'
-                                    type: object
                                     x-kubernetes-preserve-unknown-fields: true
                                   exclusiveMaximum:
                                     type: boolean
@@ -8260,7 +8250,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -8279,7 +8268,6 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -8291,7 +8279,6 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
-                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -8299,7 +8286,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
@@ -8489,7 +8475,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml
index 1c4bf2eba..a9d9b4624 100644
--- a/helm/camel-k/crds/crd-integration.yaml
+++ b/helm/camel-k/crds/crd-integration.yaml
@@ -7465,7 +7465,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/helm/camel-k/crds/crd-kamelet-binding.yaml b/helm/camel-k/crds/crd-kamelet-binding.yaml
index ede33f2ba..dce3df057 100644
--- a/helm/camel-k/crds/crd-kamelet-binding.yaml
+++ b/helm/camel-k/crds/crd-kamelet-binding.yaml
@@ -48,7 +48,8 @@ spec:
       name: Replicas
       type: integer
     deprecated: true
-    deprecationWarning: v1apha1 is deprecated, please, use v1 instead
+    deprecationWarning: v1apha1.KameletBinding is deprecated, please, use v1.Binding
+      instead
     name: v1alpha1
     schema:
       openAPIV3Schema:
@@ -8479,7 +8480,6 @@ spec:
                                     It implements Marshaler and Unmarshaler and can
                                     be used to delay JSON decoding or precompute a
                                     JSON encoding.
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 name:
                                   type: string
diff --git a/helm/camel-k/crds/crd-kamelet.yaml b/helm/camel-k/crds/crd-kamelet.yaml
index 223b9b01d..3e2facd12 100644
--- a/helm/camel-k/crds/crd-kamelet.yaml
+++ b/helm/camel-k/crds/crd-kamelet.yaml
@@ -141,7 +141,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               externalDocs:
                                 description: ExternalDocumentation allows referencing
@@ -160,7 +159,6 @@ spec:
                                     default:
                                       description: default is a default value for
                                         undefined object fields.
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     deprecated:
                                       type: boolean
@@ -172,7 +170,6 @@ spec:
                                           value. These types are supported: bool,
                                           int64, float64, string, []interface{}, map[string]interface{}
                                           and nil.'
-                                        type: object
                                         x-kubernetes-preserve-unknown-fields: true
                                       type: array
                                     example:
@@ -180,7 +177,6 @@ spec:
                                         value. These types are supported: bool, int64,
                                         float64, string, []interface{}, map[string]interface{}
                                         and nil.'
-                                      type: object
                                       x-kubernetes-preserve-unknown-fields: true
                                     exclusiveMaximum:
                                       type: boolean
@@ -312,7 +308,6 @@ spec:
                     description: 'JSON represents any valid JSON value. These types
                       are supported: bool, int64, float64, string, []interface{},
                       map[string]interface{} and nil.'
-                    type: object
                     x-kubernetes-preserve-unknown-fields: true
                   externalDocs:
                     description: ExternalDocumentation allows referencing an external
@@ -331,7 +326,6 @@ spec:
                         default:
                           description: default is a default value for undefined object
                             fields.
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         deprecated:
                           type: boolean
@@ -342,14 +336,12 @@ spec:
                             description: 'JSON represents any valid JSON value. These
                               types are supported: bool, int64, float64, string, []interface{},
                               map[string]interface{} and nil.'
-                            type: object
                             x-kubernetes-preserve-unknown-fields: true
                           type: array
                         example:
                           description: 'JSON represents any valid JSON value. These
                             types are supported: bool, int64, float64, string, []interface{},
                             map[string]interface{} and nil.'
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         exclusiveMaximum:
                           type: boolean
@@ -535,7 +527,6 @@ spec:
                           description: 'JSON represents any valid JSON value. These
                             types are supported: bool, int64, float64, string, []interface{},
                             map[string]interface{} and nil.'
-                          type: object
                           x-kubernetes-preserve-unknown-fields: true
                         externalDocs:
                           description: ExternalDocumentation allows referencing an
@@ -554,7 +545,6 @@ spec:
                               default:
                                 description: default is a default value for undefined
                                   object fields.
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               deprecated:
                                 type: boolean
@@ -566,7 +556,6 @@ spec:
                                     These types are supported: bool, int64, float64,
                                     string, []interface{}, map[string]interface{}
                                     and nil.'
-                                  type: object
                                   x-kubernetes-preserve-unknown-fields: true
                                 type: array
                               example:
@@ -574,7 +563,6 @@ spec:
                                   These types are supported: bool, int64, float64,
                                   string, []interface{}, map[string]interface{} and
                                   nil.'
-                                type: object
                                 x-kubernetes-preserve-unknown-fields: true
                               exclusiveMaximum:
                                 type: boolean
@@ -751,7 +739,7 @@ spec:
       name: Phase
       type: string
     deprecated: true
-    deprecationWarning: v1apha1 is deprecated, please, use v1 instead
+    deprecationWarning: v1apha1.Kamelet is deprecated, please, use v1.Kamelet instead
     name: v1alpha1
     schema:
       openAPIV3Schema:
diff --git a/pkg/apis/camel/v1/binding_types.go b/pkg/apis/camel/v1/binding_types.go
index a72b62160..550141542 100644
--- a/pkg/apis/camel/v1/binding_types.go
+++ b/pkg/apis/camel/v1/binding_types.go
@@ -24,7 +24,7 @@ import (
 
 // +genclient
 // +kubebuilder:object:root=true
-// +kubebuilder:resource:path=bindings,scope=Namespaced,shortName=klb,categories=kamel;camel
+// +kubebuilder:resource:path=bindings,scope=Namespaced,categories=kamel;camel
 // +kubebuilder:subresource:status
 // +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
 // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
diff --git a/pkg/apis/camel/v1/common_types.go b/pkg/apis/camel/v1/common_types.go
index b8001c120..52978eb47 100644
--- a/pkg/apis/camel/v1/common_types.go
+++ b/pkg/apis/camel/v1/common_types.go
@@ -223,7 +223,7 @@ type TraitConfiguration struct {
 // RawMessage is a raw encoded JSON value.
 // It implements Marshaler and Unmarshaler and can
 // be used to delay JSON decoding or precompute a JSON encoding.
-// +kubebuilder:validation:Type=object
+// +kubebuilder:validation:Type=""
 // +kubebuilder:validation:Format=""
 // +kubebuilder:pruning:PreserveUnknownFields
 type RawMessage []byte
diff --git a/pkg/apis/camel/v1alpha1/kamelet_binding_types.go b/pkg/apis/camel/v1alpha1/kamelet_binding_types.go
index c529abf06..5dd12743a 100644
--- a/pkg/apis/camel/v1alpha1/kamelet_binding_types.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_binding_types.go
@@ -27,7 +27,7 @@ import (
 )
 
 // +genclient
-// +kubebuilder:deprecatedversion:warning="v1apha1 is deprecated, please, use v1 instead"
+// +kubebuilder:deprecatedversion:warning="v1apha1.KameletBinding is deprecated, please, use v1.Binding instead"
 // +kubebuilder:object:root=true
 // +kubebuilder:resource:path=kameletbindings,scope=Namespaced,shortName=klb,categories=kamel;camel
 // +kubebuilder:subresource:status
diff --git a/pkg/apis/camel/v1alpha1/kamelet_types.go b/pkg/apis/camel/v1alpha1/kamelet_types.go
index ec4c0a6b7..c8b8ff673 100644
--- a/pkg/apis/camel/v1alpha1/kamelet_types.go
+++ b/pkg/apis/camel/v1alpha1/kamelet_types.go
@@ -54,7 +54,7 @@ var (
 )
 
 // +genclient
-// +kubebuilder:deprecatedversion:warning="v1apha1 is deprecated, please, use v1 instead"
+// +kubebuilder:deprecatedversion:warning="v1apha1.Kamelet is deprecated, please, use v1.Kamelet instead"
 // +kubebuilder:object:root=true
 // +kubebuilder:resource:path=kamelets,scope=Namespaced,shortName=kl,categories=kamel;camel
 // +kubebuilder:subresource:status
diff --git a/pkg/install/cluster.go b/pkg/install/cluster.go
index 169fcf994..da4d44b57 100644
--- a/pkg/install/cluster.go
+++ b/pkg/install/cluster.go
@@ -31,12 +31,12 @@ import (
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 
-	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
-
 	"github.com/apache/camel-k/v2/pkg/client"
 	"github.com/apache/camel-k/v2/pkg/resources"
 	"github.com/apache/camel-k/v2/pkg/util/knative"
 	"github.com/apache/camel-k/v2/pkg/util/kubernetes"
+	pkgerr "github.com/pkg/errors"
+	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 func SetupClusterWideResourcesOrCollect(
@@ -200,8 +200,14 @@ func installCRDs(ctx context.Context, c client.Client, collection *kubernetes.Co
 		return err
 	}
 
+	// Install CRD for KameletBinding (if needed)
+	if err := installCRD(ctx, c, "KameletBinding", "v1alpha1", "camel.apache.org_kameletbindings.yaml",
+		v1beta1Customizer, collection, force); err != nil {
+		return err
+	}
+
 	// Install CRD for Binding (if needed)
-	if err := installCRD(ctx, c, "Binding", "v1alpha1", "camel.apache.org_bindings.yaml",
+	if err := installCRD(ctx, c, "Binding", "v1", "camel.apache.org_bindings.yaml",
 		v1beta1Customizer, collection, force); err != nil {
 		return err
 	}
@@ -265,54 +271,66 @@ func WaitForAllCrdInstallation(ctx context.Context, clientProvider client.Provid
 		if c, err = clientProvider.Get(); err != nil {
 			return err
 		}
-		var inst bool
-		if inst, err = areAllCrdInstalled(c); err != nil {
+		var errno int
+		if errno, err = areAllCrdInstalled(c); err != nil {
 			return err
-		} else if inst {
+		}
+		if errno == 0 {
 			return nil
 		}
 		// Check after 2 seconds if not expired
 		if time.Now().After(deadline) {
 			return fmt.Errorf(
-				"cannot check CRD installation after %s seconds",
-				strconv.FormatInt(timeout.Nanoseconds()/1000000000, 10))
+				"cannot check CRD installation after %s seconds (errno %d)",
+				strconv.FormatInt(timeout.Nanoseconds()/1000000000, 10),
+				errno)
 		}
 		time.Sleep(2 * time.Second)
 	}
 }
 
-func areAllCrdInstalled(c client.Client) (bool, error) {
+func areAllCrdInstalled(c client.Client) (int, error) {
 	if ok, err := isCrdInstalled(c, "IntegrationPlatform", "v1"); err != nil {
-		return ok, err
+		return 1, pkgerr.Wrap(err, "Error installing IntegrationPlatform CRDs")
 	} else if !ok {
-		return false, nil
+		return 1, nil
 	}
 	if ok, err := isCrdInstalled(c, "IntegrationKit", "v1"); err != nil {
-		return ok, err
+		return 2, pkgerr.Wrap(err, "Error installing IntegrationKit CRDs")
 	} else if !ok {
-		return false, nil
+		return 2, nil
 	}
 	if ok, err := isCrdInstalled(c, "Integration", "v1"); err != nil {
-		return ok, err
+		return 3, pkgerr.Wrap(err, "Error installing Integration CRDs")
 	} else if !ok {
-		return false, nil
+		return 3, nil
 	}
 	if ok, err := isCrdInstalled(c, "CamelCatalog", "v1"); err != nil {
-		return ok, err
+		return 4, pkgerr.Wrap(err, "Error installing CamelCatalog CRDs")
 	} else if !ok {
-		return false, nil
+		return 4, nil
 	}
 	if ok, err := isCrdInstalled(c, "Build", "v1"); err != nil {
-		return ok, err
+		return 5, pkgerr.Wrap(err, "Error installing Build CRDs")
 	} else if !ok {
-		return false, nil
+		return 5, nil
 	}
 	if ok, err := isCrdInstalled(c, "Kamelet", "v1"); err != nil {
-		return ok, err
+		return 6, pkgerr.Wrap(err, "Error installing Kamelet CRDs")
 	} else if !ok {
-		return false, nil
+		return 6, nil
+	}
+	if ok, err := isCrdInstalled(c, "KameletBinding", "v1alpha1"); err != nil {
+		return 7, pkgerr.Wrap(err, "Error installing KameletBindings CRDs")
+	} else if !ok {
+		return 7, nil
+	}
+	if ok, err := isCrdInstalled(c, "Binding", "v1"); err != nil {
+		return 8, pkgerr.Wrap(err, "Error installing Binding CRDs")
+	} else if !ok {
+		return 8, nil
 	}
-	return isCrdInstalled(c, "Binding", "v1")
+	return 0, nil
 }
 
 func isCrdInstalled(c client.Client, kind string, version string) (bool, error) {
diff --git a/pkg/resources/resources.go b/pkg/resources/resources.go
index 701371ab0..ce7e3ddd5 100644
--- a/pkg/resources/resources.go
+++ b/pkg/resources/resources.go
@@ -117,9 +117,9 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_bindings.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_bindings.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 573023,
+			uncompressedSize: 572366,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x1b\x37\xd6\x28\x8c\xff\xef\x4f\x81\x92\x53\x57\xd2\x13\x91\xb2\x33\x4b\xcd\xf8\x37\x75\x53\x1a\x59\x76\xf4\x8b\x2d\xb3\x2c\x25\xb9\x29\x27\x4f\x02\x76\x83\x24\xae\xba\x81\x7e\x00\x34\x25\xe6\xf5\xfb\xdd\xdf\xc2\x01\xd0\x0b\x37\xe1\x34\x25\x8d\x3c\xd3\x98\xaa\x8c\x49\xb1\x4f\x63\x3b\xfb\xf6\x9c\x0c\xee\x6f\x3c\x7b\x4e\xde\xf1\x84\x09\xcd\x52\x62\x24\x31\x33\x46\x4e\x0a\x9a\xcc\x18\xb9\x94\x13\x73\x43\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x1b\x37\xd6\x28\x8c\xff\xef\x4f\x81\x92\x53\x57\xd2\x13\x91\xb2\x33\x4b\xcd\xf8\x37\x75\x53\x1a\x59\x76\xf4\x8b\x2d\xb3\x2c\x25\xb9\x29\x27\x4f\x02\x76\x83\x24\xae\xba\x81\x7e\x00\x34\x25\xe6\xf5\xfb\xdd\xdf\xc2\x01\xd0\x0b\x37\xe1\x34\x25\x8d\x3c\xd3\x98\xaa\x8c\x49\xb1\x4f\x63\x3b\xfb\xf6\x9c\x0c\xee\x6f\x3c\x7b\x4e\xde\xf1\x84\x09\xcd\x52\x62\x24\x31\x33\x46\x4e\x0a\x9a\xcc\x18\xb9\x94\x13\x73\x43\x [...]
 		},
 		"/crd/bases/camel.apache.org_builds.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_builds.yaml",
@@ -152,23 +152,23 @@ var assets = func() http.FileSystem {
 		"/crd/bases/camel.apache.org_integrations.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_integrations.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 492832,
+			uncompressedSize: 492785,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x19\xff\xa6\x9e\x94\x56\x96\x13\xfd\x62\xcb\x2a\x4b\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x48\xc7\xd9\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xb4\xbf\xf1\xd9\xe7\xe4\x0d\x4f\x98\xd0\x2c\x25\x46\x12\x33\x67\xe4\xbc\xa0\xc9\x9c\x91\x5b\x39\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x1b\x37\x96\x30\x8c\xff\x9f\x4f\x81\x72\x52\x8f\xa4\x8d\x48\xd9\x99\xd9\xa9\x19\xff\xa6\x9e\x94\x56\x96\x13\xfd\x62\xcb\x2a\x4b\x49\x9e\x94\x93\x4d\xc0\x6e\x90\xc4\xa3\x6e\xa0\x17\x40\x53\xe2\xbc\x79\xbf\xfb\x5b\x38\x00\xfa\xc2\x5b\x1f\xb4\x48\xc7\xd9\x6d\x4c\x55\xc6\x14\xd9\xa7\x71\x39\x38\xf7\xcb\xe7\x64\xb4\xbf\xf1\xd9\xe7\xe4\x0d\x4f\x98\xd0\x2c\x25\x46\x12\x33\x67\xe4\xbc\xa0\xc9\x9c\x91\x5b\x39\x [...]
 		},
 		"/crd/bases/camel.apache.org_kameletbindings.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kameletbindings.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 572531,
+			uncompressedSize: 572604,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x1b\x37\xd6\x28\x8c\xff\xef\x4f\x81\x92\x53\x57\xd2\x13\x91\xb2\x33\x4b\xcd\xf8\x37\x75\x53\x1a\x59\x76\xf4\x8b\x2d\xb3\x2c\x25\xb9\x29\x27\x4f\x02\x76\x83\x24\xae\xba\x81\x7e\x00\x34\x25\xe6\xf5\xfb\xdd\xdf\xc2\x01\xd0\x0b\x37\xe1\x34\x25\x8d\x3c\xd3\x98\xaa\x8c\x49\xb1\x4f\x63\x3b\xfb\xf6\x9c\x0c\xee\x6f\x3c\x7b\x4e\xde\xf1\x84\x09\xcd\x52\x62\x24\x31\x33\x46\x4e\x0a\x9a\xcc\x18\xb9\x94\x13\x73\x43\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\x1b\x37\xb6\x30\x0a\x7f\xf7\xaf\x40\xc9\xa9\x47\xd2\x8e\x48\xd9\x99\x99\xd4\x8c\xdf\xa9\x9d\xd2\xc8\x72\xa2\x37\xb6\xcc\xb2\x94\xe4\x49\x39\xd9\x09\xd8\x0d\x92\xd8\xea\x06\x7a\x00\x34\x25\xe6\xf8\xfc\xf7\x53\x58\x00\xfa\xc2\x9b\xb0\x9a\x92\x46\x9e\x69\x4c\x55\xc6\xa4\xd8\xab\x71\x5b\xf7\xdb\x73\x32\xb8\xbf\xf1\xec\x39\x79\xcb\x13\x26\x34\x4b\x89\x91\xc4\xcc\x18\x39\x29\x68\x32\x63\xe4\x52\x4e\xcc\x0d\x [...]
 		},
 		"/crd/bases/camel.apache.org_kamelets.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "camel.apache.org_kamelets.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 78374,
+			uncompressedSize: 77953,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x7d\x6f\xdb\x3a\xb2\xf7\xff\xf9\x14\x83\xf4\x02\x4d\x81\xd8\x49\x9a\xb6\x7b\x36\xcf\x1f\x45\x36\x6d\x77\xf3\x9c\xbe\x04\x49\xba\xf7\xd9\xa7\x3d\x17\xa0\x25\xda\xe6\x46\xa6\x74\x49\x2a\x2f\x77\xdb\xef\x7e\x41\x52\x92\x25\x5b\x2f\x33\x8e\x94\xe4\x2c\x0e\x81\xa2\xb1\x2d\x0d\x87\xe4\x90\x1c\x92\xbf\xf9\xf1\x19\x8c\xfa\x4b\x5b\xcf\xe0\xa3\x08\xb8\xd4\x3c\x04\x13\x83\x99\x73\x38\x4e\x58\x30\xe7\x70\x11\x4f\xcd\x0d\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x6f\x1b\x39\xd2\xee\x77\xff\x8a\x82\xfd\x02\x71\x00\x4b\xb6\xe3\x24\x3b\xe3\xf3\x21\xf0\x3a\xc9\x8c\xcf\x38\x89\x61\x3b\xb3\x67\x4e\x32\x0b\x50\xdd\x94\xc4\x75\x8b\xdd\x4b\xb2\x7d\xd9\x4d\xfe\xfb\x0b\x92\xcd\xbe\x48\x7d\x29\xca\xdd\xb6\x67\x30\x04\x82\x58\x52\x77\xb1\x78\xad\x22\xf9\xd4\xc3\x2d\x18\xf5\x97\x36\xb6\xe0\x94\x05\x94\x4b\x1a\x82\x8a\x41\xcd\x29\x1c\x25\x24\x98\x53\xb8\x88\xa7\xea\x86\x08\x0a\x [...]
 		},
 		"/manager": &vfsgen۰DirInfo{
 			name:    "manager",
diff --git a/pkg/resources/resources_test.go b/pkg/resources/resources_test.go
index 6dae89525..9b4921895 100644
--- a/pkg/resources/resources_test.go
+++ b/pkg/resources/resources_test.go
@@ -169,6 +169,7 @@ func TestCRDResources(t *testing.T) {
 	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_integrationkits.yaml", Resource)
 	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_integrationplatforms.yaml", Resource)
 	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_integrations.yaml", Resource)
-	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_bindings.yaml", Resource)
 	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_kamelets.yaml", Resource)
+	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_kameletbindings.yaml", Resource)
+	NoErrorAndNotEmptyBytes(t, "/crd/bases/camel.apache.org_bindings.yaml", Resource)
 }
diff --git a/script/prepare-operators.sh b/script/prepare-operators.sh
index a8a27357a..57ad22950 100755
--- a/script/prepare-operators.sh
+++ b/script/prepare-operators.sh
@@ -39,8 +39,9 @@ cp ./manifests/camel.apache.org_camelcatalogs.yaml k8s-operatorhub/$1/manifests/
 cp ./manifests/camel.apache.org_integrationkits.yaml k8s-operatorhub/$1/manifests/integrationkits.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_integrationplatforms.yaml k8s-operatorhub/$1/manifests/integrationplatforms.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_integrations.yaml k8s-operatorhub/$1/manifests/integrations.camel.apache.org.crd.yaml
-cp ./manifests/camel.apache.org_bindings.yaml k8s-operatorhub/$1/manifests/bindings.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_kamelets.yaml k8s-operatorhub/$1/manifests/kamelets.camel.apache.org.crd.yaml
+cp ./manifests/camel.apache.org_kameletbindings.yaml k8s-operatorhub/$1/manifests/kameletbindings.camel.apache.org.crd.yaml
+cp ./manifests/camel.apache.org_bindings.yaml k8s-operatorhub/$1/manifests/bindings.camel.apache.org.crd.yaml
 cp ./manifests/camel-k.clusterserviceversion.yaml k8s-operatorhub/$1/manifests/camel-k.v$1.clusterserviceversion.yaml
 cp ./metadata/annotations.yaml k8s-operatorhub/$1/metadata/annotations.yaml
 cp ./tests/scorecard/config.yaml k8s-operatorhub/$1/tests/scorecard/config.yaml
@@ -50,8 +51,9 @@ cp ./manifests/camel.apache.org_camelcatalogs.yaml openshift-ecosystem/$1/manife
 cp ./manifests/camel.apache.org_integrationkits.yaml openshift-ecosystem/$1/manifests/integrationkits.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_integrationplatforms.yaml openshift-ecosystem/$1/manifests/integrationplatforms.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_integrations.yaml openshift-ecosystem/$1/manifests/integrations.camel.apache.org.crd.yaml
-cp ./manifests/camel.apache.org_bindings.yaml openshift-ecosystem/$1/manifests/bindings.camel.apache.org.crd.yaml
 cp ./manifests/camel.apache.org_kamelets.yaml openshift-ecosystem/$1/manifests/kamelets.camel.apache.org.crd.yaml
+cp ./manifests/camel.apache.org_kameletbindings.yaml openshift-ecosystem/$1/manifests/kameletbindings.camel.apache.org.crd.yaml
+cp ./manifests/camel.apache.org_bindings.yaml openshift-ecosystem/$1/manifests/bindings.camel.apache.org.crd.yaml
 cp ./manifests/camel-k.clusterserviceversion.yaml openshift-ecosystem/$1/manifests/camel-k.v$1.clusterserviceversion.yaml
 cp ./metadata/annotations.yaml openshift-ecosystem/$1/metadata/annotations.yaml
 cp ./tests/scorecard/config.yaml openshift-ecosystem/$1/tests/scorecard/config.yaml