Repository: apache/camel-k
Pull request #1466 (2020-05-26 16:22:02)

#1465 remove crd and clusterrole on uninstall
Fix for #1465. It enables the removal of _**CRD**_ and _**ClusterRole**_ upon _kamel uninstall_.

nicolaferraro: Well, I think we should not change this. I've disabled the deletion of global stuff unless explicitly stated.

Think to this scenario:

- User 1 does `kamel install` on namespace `a`
- User 2 does `kamel install` on namespace `b`

Then at some point:
- User 2 does `kamel uninstall` on namespace `b`

If we delete the global roles and CRDs on `kamel uninstall`, then User 1 and all other users are also affected. Deleting the CRDs also means deleting all integrations running in the whole cluster...
davsclaus: Good point, maybe add code comments in the source code about this so its easier to remember why the behavior is like this
davsclaus: There could also be a flag to the command for --all to delete those bits as well 
ipolyzos: @nicolaferraro good point indeed, I can work on the proposal of @davsclaus  for the _--all_ flag if this is ok?
nicolaferraro: > @nicolaferraro good point indeed, I can work on the proposal of @davsclaus for the _--all_ flag if this is ok?

Yeah, sounds good!
ipolyzos: The _**"--all"**_ flag to added to uninstall command.

Please see below for the test scenario to verify behaviour:
```
$ kamel install 
Camel K installed in namespace default 
$ kubectl get all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k'
NAME                                   READY   STATUS              RESTARTS   AGE
pod/camel-k-operator-89fb65586-rvdvd   0/1     ContainerCreating   0          2s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/camel-k-operator   0/1     1            0           2s

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/camel-k-operator-89fb65586   1         1         0       2s

NAME                                                                     ROLE                                    AGE
rolebinding.rbac.authorization.k8s.io/camel-k-operator                   Role/camel-k-operator                   2s
rolebinding.rbac.authorization.k8s.io/camel-k-operator-events            Role/camel-k-operator-events            2s
rolebinding.rbac.authorization.k8s.io/camel-k-operator-servicemonitors   Role/camel-k-operator-servicemonitors   2s

NAME                              SECRETS   AGE
serviceaccount/camel-k-operator   1         2s

NAME                                                              CREATED AT
role.rbac.authorization.k8s.io/camel-k-operator                   2020-05-27T19:50:43Z
role.rbac.authorization.k8s.io/camel-k-operator-events            2020-05-27T19:50:43Z
role.rbac.authorization.k8s.io/camel-k-operator-servicemonitors   2020-05-27T19:50:43Z

NAME                                                 CREATED AT
clusterrole.rbac.authorization.k8s.io/camel-k:edit   2020-05-27T19:50:43Z

NAME                                                                                  CREATED AT
customresourcedefinition.apiextensions.k8s.io/builds.camel.apache.org                 2020-05-27T19:50:43Z
customresourcedefinition.apiextensions.k8s.io/camelcatalogs.camel.apache.org          2020-05-27T19:50:43Z
customresourcedefinition.apiextensions.k8s.io/integrationkits.camel.apache.org        2020-05-27T19:50:43Z
customresourcedefinition.apiextensions.k8s.io/integrationplatforms.camel.apache.org   2020-05-27T19:50:43Z
customresourcedefinition.apiextensions.k8s.io/integrations.camel.apache.org           2020-05-27T19:50:43Z
$ kamel uninstall --all
Camel K Integration Platform removed from namespace default
Camel K Config Maps removed from namespace default
Camel K Operator removed from namespace default
Camel K Role Bindings removed from namespace default
Camel K Roles removed from namespace default
Camel K Service Accounts removed from namespace default
Camel K Custom Resource Definitions removed from cluster
Camel K Cluster Roles removed from cluster
$ kubectl get all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k'                                                                               
No resources found in default namespace.
$ kamel install 
Camel K installed in namespace default 
$ kamel uninstall                                                                git:(kamel-uninstall-remove-crd-clusterrole↑1|✚2 
Camel K Integration Platform removed from namespace default
Camel K Config Maps removed from namespace default
Camel K Operator removed from namespace default
Camel K Role Bindings removed from namespace default
Camel K Roles removed from namespace default
Camel K Service Accounts removed from namespace default
$ kubectl get all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k'                                                                               
NAME                                   READY   STATUS        RESTARTS   AGE
pod/camel-k-operator-89fb65586-zpv8z   0/1     Terminating   0          10s

NAME                                                 CREATED AT
clusterrole.rbac.authorization.k8s.io/camel-k:edit   2020-05-27T19:59:49Z

NAME                                                                                  CREATED AT
customresourcedefinition.apiextensions.k8s.io/builds.camel.apache.org                 2020-05-27T19:59:48Z
customresourcedefinition.apiextensions.k8s.io/camelcatalogs.camel.apache.org          2020-05-27T19:59:48Z
customresourcedefinition.apiextensions.k8s.io/integrationkits.camel.apache.org        2020-05-27T19:59:48Z
customresourcedefinition.apiextensions.k8s.io/integrationplatforms.camel.apache.org   2020-05-27T19:59:48Z
customresourcedefinition.apiextensions.k8s.io/integrations.camel.apache.org           2020-05-27T19:59:48Z

```


Patch:
diff --git a/deploy/olm-catalog/camel-k/0.3.4/camel-k.v0.3.4.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/camel-k.v0.3.4.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/camel-k.v0.3.4.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/camel-k.v0.3.4.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/0.3.4/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/0.3.4/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/0.3.4/crd-integration-context.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration-context.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/crd-integration-context.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration-context.yaml
diff --git a/deploy/olm-catalog/camel-k/0.3.4/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/0.3.4/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/0.3.4/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/0.3.4/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/camel-k.v1.0.0-M1.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/camel-k.v1.0.0-M1.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/camel-k.v1.0.0-M1.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/camel-k.v1.0.0-M1.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m1/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m1/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/camel-k.v1.0.0-M2.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/camel-k.v1.0.0-M2.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/camel-k.v1.0.0-M2.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/camel-k.v1.0.0-M2.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m2/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m2/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/camel-k.v1.0.0-m3.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/camel-k.v1.0.0-m3.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/camel-k.v1.0.0-m3.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/camel-k.v1.0.0-m3.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m3/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m3/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/camel-k.v1.0.0-m4.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/camel-k.v1.0.0-m4.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/camel-k.v1.0.0-m4.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/camel-k.v1.0.0-m4.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-m4/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-m4/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/camel-k.v1.0.0-rc1.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/camel-k.v1.0.0-rc1.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/camel-k.v1.0.0-rc1.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/camel-k.v1.0.0-rc1.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc1/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc1/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/camel-k.v1.0.0-rc2.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/camel-k.v1.0.0-rc2.clusterserviceversion.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/camel-k.v1.0.0-rc2.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/camel-k.v1.0.0-rc2.clusterserviceversion.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/crd-build.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-build.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/crd-build.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-build.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/crd-camel-catalog.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-camel-catalog.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/crd-camel-catalog.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-camel-catalog.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration-kit.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration-kit.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration-kit.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration-kit.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration-platform.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration-platform.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration-platform.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration-platform.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-rc2/crd-integration.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-rc2/crd-integration.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/builds.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/builds.camel.apache.org.crd.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/builds.camel.apache.org.crd.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/builds.camel.apache.org.crd.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml
similarity index 98%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml
index cd0302925..415b0b757 100644
--- a/deploy/olm-catalog/camel-k/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml
+++ b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/camel-k.v1.0.0-snapshot.clusterserviceversion.yaml
@@ -75,6 +75,7 @@ metadata:
     description: Apache Camel K is a lightweight integration platform, born on Kubernetes,
       with serverless superpowers.
     repository: https://github.com/apache/camel-k
+    operators.operatorframework.io/internal-objects: '["builds.camel.apache.org","integrationkits.camel.apache.org","camelcatalogs.camel.apache.org"]'
     support: Camel
   name: camel-k-operator.v1.0.0-snapshot
   namespace: placeholder
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/integrationkits.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrationkits.camel.apache.org.crd.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/integrationkits.camel.apache.org.crd.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrationkits.camel.apache.org.crd.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml
diff --git a/deploy/olm-catalog/camel-k/1.0.0-snapshot/integrations.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrations.camel.apache.org.crd.yaml
similarity index 100%
rename from deploy/olm-catalog/camel-k/1.0.0-snapshot/integrations.camel.apache.org.crd.yaml
rename to deploy/olm-catalog/camel-k-dev/1.0.0-snapshot/integrations.camel.apache.org.crd.yaml
diff --git a/deploy/olm-catalog/camel-k/camel-k.package.yaml b/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml
similarity index 90%
rename from deploy/olm-catalog/camel-k/camel-k.package.yaml
rename to deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml
index 1dfb8c161..b08fcb296 100644
--- a/deploy/olm-catalog/camel-k/camel-k.package.yaml
+++ b/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml
@@ -17,6 +17,8 @@
 
 channels:
 - currentCSV: camel-k-operator.v1.0.0-snapshot
+  name: stable
+- currentCSV: camel-k-operator.v1.0.0-rc2
   name: alpha
-defaultChannel: alpha
-packageName: camel-k
+defaultChannel: stable
+packageName: camel-k-dev
diff --git a/deploy/olm-catalog/camel-k/0.3.3/camel-k.v0.3.3.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k/0.3.3/camel-k.v0.3.3.clusterserviceversion.yaml
deleted file mode 100644
index 70c57954d..000000000
--- a/deploy/olm-catalog/camel-k/0.3.3/camel-k.v0.3.3.clusterserviceversion.yaml
+++ /dev/null
@@ -1,290 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: operators.coreos.com/v1alpha1
-kind: ClusterServiceVersion
-metadata:
-  annotations:
-    capabilities: Basic Install
-    categories: "Integration & Delivery"
-    repository: https://github.com/apache/camel-k
-    containerImage: docker.io/apache/camel-k:0.3.3
-    support: Camel
-    createdAt: 2019-05-06T16:45:00Z
-    certified: "false"
-    description: |-
-      Apache Camel K (a.k.a. Kamel) is a lightweight integration framework built from Apache Camel that runs natively on Kubernetes and is specifically designed for serverless and microservice architectures.
-    alm-examples: |-
-      [{
-        "apiVersion": "camel.apache.org/v1alpha1",
-        "kind": "IntegrationPlatform",
-        "metadata": {
-          "name": "example"
-        },
-        "spec": {
-          "build": {
-            "buildStrategy": "pod"
-          },
-          "resources": {
-            "kits": [
-              "jvm"
-            ]
-          }
-        }
-      },
-      {
-        "apiVersion": "camel.apache.org/v1alpha1",
-        "kind": "Integration",
-        "metadata": {
-          "name": "example"
-        },
-        "spec": {
-          "source": {
-            "content": "// Add example Java code to create Integration",
-            "name": "Example.java"
-          }
-        }
-      },
-      {
-        "apiVersion": "camel.apache.org/v1alpha1",
-        "kind": "IntegrationKit",
-        "metadata": {
-          "name": "example"
-        }
-      },
-      {
-        "apiVersion": "camel.apache.org/v1alpha1",
-        "kind": "CamelCatalog",
-        "metadata": {
-          "name": "example"
-        }
-      },
-      {
-        "apiVersion": "camel.apache.org/v1alpha1",
-        "kind": "Build",
-        "metadata": {
-          "name": "example"
-        }
-      }]
-  name: camel-k-operator.v0.3.3
-  namespace: placeholder
-spec:
-  displayName: Camel K Operator
-  version: 0.3.3
-  description: |
-    Apache Camel K
-    ==============
-
-    Camel K (a.k.a Kamel) is a lightweight integration framework built from Apache Camel that runs natively on Kubernetes and is specifically designed for serverless and microservice architectures.
-
-    # Installation
-
-    To start using Camel K, install the operator and then create the following `IntegrationPlatform`:
-    ```
-    apiVersion: camel.apache.org/v1alpha1
-    kind: IntegrationPlatform
-    metadata:
-      name: camel-k
-      labels:
-        app: "camel-k"
-    ```
-
-    # Running an Integration
-
-    After the initial setup, you can run a Camel integration on the cluster by creating an example `Integration`:
-    ```
-    apiVersion: camel.apache.org/v1alpha1
-    kind: Integration
-    metadata:
-      name: example
-    spec:
-      sources:
-      - content: |
-        import org.apache.camel.builder.RouteBuilder;
-
-        public class Example extends RouteBuilder {
-            @Override
-            public void configure() throws Exception {
-                from("timer:tick")
-                    .setBody(constant("Hello World!"))
-                .to("log:info?skipBodyLineSeparator=false");
-            }
-        }
-      name: Example.java
-    ```
-  keywords: ['apache', 'kamel', 'kubernetes', 'serverless', 'microservices']
-  maintainers:
-    - name: The Apache Software Foundation
-      email: users@camel.apache.org
-  provider:
-    name: The Apache Software Foundation
-  labels:
-    name: camel-k-operator
-  selector:
-    matchLabels:
-      name: camel-k-operator
-  links:
-    - name: Camel K source code repository
-      url: https://github.com/apache/camel-k
-  icon:
-    - base64data: PHN2ZyB2aWV3Qm94PSIwIDAgMTMwLjIxIDEzMC4wMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIzMzMuNDgiIHgyPSI0NzciIHkxPSI3MDIuNiIgeTI9IjU2My43MyIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg5NC4wMzggMjc2LjA2KSBzY2FsZSguOTkyMDYpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0Y2OTkyMyIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3OUEyMyIgb2Zmc2V0PSIuMTEiLz48c3RvcCBzdG9wLWNvbG9yPSIjRTk3ODI2IiBvZmZzZXQ9Ii45NDUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjMzMy40OCIgeDI9IjQ3NyIgeTE9IjcwMi42IiB5Mj0iNTYzLjczIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDk0LjAzOCAyNzYuMDYpIHNjYWxlKC45OTIwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRjY5OTIzIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjc5QTIzIiBvZmZzZXQ9Ii4wOCIvPjxzdG9wIHN0b3AtY29sb3I9IiNFOTc4MjYiIG9mZnNldD0iLjQxOSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iNjMzLjU1IiB4Mj0iNTY2LjQ3IiB5MT0iODE0LjYiIHkyPSI5MDkuMTIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg1LjQyMSA1Ni4yMzYpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2Y2ZTQyMyIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3OUEyMyIgb2Zmc2V0PSIuNDEyIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U5NzgyNiIgb2Zmc2V0PSIuNzMzIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQzNy44OSAtODM1LjI5KSI+PGNpcmNsZSBjeD0iNTAzLjEiIGN5PSI5MDAuMjkiIHI9IjYyLjUyIiBmaWxsPSJ1cmwoI2EpIiBzdHJva2U9InVybCgjYikiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iNC45NiIvPjxwYXRoIGQ9Ik00ODcuODkgODczLjY0YTg5LjUzIDg5LjUzIDAgMCAwLTIuNjg4LjAzMWMtMS4wNDMuMDMxLTIuNDQ1LjM2Mi00LjA2Mi45MDYgMjcuMzA5IDIwLjczNyAzNy4xMjcgNTguMTQ2IDIwLjI1IDkwLjY1Ni41NzMuMDE1IDEuMTQyLjA2MyAxLjcxOS4wNjMgMzAuODQ0IDAgNTYuNjItMjEuNDkzIDYzLjI4LTUwLjMxMi0xOS41NzItMjIuOTQzLTQ2LjExNy00MS4yOTQtNzguNS00MS4zNDR6IiBmaWxsPSJ1cmwoI2MpIiBvcGFjaXR5PSIuNzUiLz48cGF0aCBkPSJNNDgxLjE0IDg3NC41OGMtOS4wNjggMy4wNTItMjYuMzY4IDEzLjgwMi00MyAyOC4xNTYgMS4yNjMgMzQuMTk1IDI4Ljk2MSA2MS42MDcgNjMuMjUgNjIuNSAxNi44NzctMzIuNTEgNy4wNi02OS45MTktMjAuMjUtOTAuNjU2eiIgZmlsbD0iIzI4MTcwYiIgb3BhY2l0eT0iLjc1Ii8+PHBhdGggZD0iTTUwNC44ODkgODYyLjU0NmMtLjQ3Mi0uMDMyLS45MzIuMDI4LTEuMzc1LjI1LTUuNiAyLjgwMSAwIDE0IDAgMTQtMTYuODA3IDE0LjAwOS0xMy4yMzYgMzcuOTM4LTMyLjg0NCAzNy45MzgtMTAuNjg5IDAtMjEuMzIyLTEyLjI5My0zMi41MzEtMTkuODEyLS4xNDQgMS43NzMtLjI1IDMuNTY0LS4yNSA1LjM3NSAwIDI0LjUxNSAxMy41MSA0NS44NjMgMzMuNDY5IDU3LjA2MyA1LjU4My0uNzAzIDExLjE1OC0yLjExNCAxNS4zNDQtNC45MDYgMjEuOTkyLTE0LjY2MiAyNy40NTItNDIuNTU3IDM2LjQzOC01Ni4wMzEgNS41OTYtOC40MDcgMzEuODI0LTcuNjc3IDMzLjU5NC0xMS4yMiAyLjgwNC01LjYwMS01LjYwMi0xNC04LjQwNi0xNGgtMjIuNDA2Yy0xLjU2NiAwLTQuMDI1LTIuNzgtNS41OTQtMi43OGgtOC40MDZzLTMuNzI1LTUuNjUtNy4wMzEtNS44NzV6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==
-      mediatype: image/svg+xml
-  maturity: alpha
-  minKubeVersion: 1.11.0
-  customresourcedefinitions:
-    owned:
-      - kind: Build
-        name: builds.camel.apache.org
-        version: v1alpha1
-        displayName: Build
-        description: A Camel K build
-      - kind: CamelCatalog
-        name: camelcatalogs.camel.apache.org
-        version: v1alpha1
-        displayName: Camel Catalog
-        description: A Camel catalog
-      - kind: Integration
-        name: integrations.camel.apache.org
-        version: v1alpha1
-        displayName: Integration
-        description: A Camel K integration
-      - kind: IntegrationKit
-        name: integrationlkits.camel.apache.org
-        displayName: Integration Kit
-        description: A Camel K integration kit
-        version: v1alpha1
-      - kind: IntegrationPlatform
-        name: integrationplatforms.camel.apache.org
-        version: v1alpha1
-        displayName: Integration Platform
-        description: A Camel K integration platform
-  install:
-    spec:
-      deployments:
-        - name: camel-k-operator
-          spec:
-            replicas: 1
-            selector:
-              matchLabels:
-                name: camel-k-operator
-            strategy:
-              type: Recreate
-            template:
-              metadata:
-                labels:
-                  camel.apache.org/component: operator
-                  name: camel-k-operator
-              spec:
-                containers:
-                  - command:
-                      - camel-k
-                    env:
-                      - name: WATCH_NAMESPACE
-                        valueFrom:
-                          fieldRef:
-                            fieldPath: metadata.annotations['olm.targetNamespaces']
-                      - name: OPERATOR_NAME
-                        value: camel-k
-                      - name: POD_NAME
-                        valueFrom:
-                          fieldRef:
-                            fieldPath: metadata.name
-                    image: docker.io/apache/camel-k:0.3.3
-                    imagePullPolicy: IfNotPresent
-                    name: camel-k-operator
-                serviceAccountName: camel-k-operator
-      permissions:
-        - rules:
-            - apiGroups:
-                - camel.apache.org
-              resources:
-                - '*'
-              verbs:
-                - '*'
-            - apiGroups:
-                - ""
-              resources:
-                - pods
-                - services
-                - endpoints
-                - persistentvolumeclaims
-                - configmaps
-                - secrets
-              verbs:
-                - create
-                - delete
-                - deletecollection
-                - get
-                - list
-                - patch
-                - update
-                - watch
-            - apiGroups:
-                - ""
-              resources:
-                - events
-              verbs:
-                - get
-                - list
-                - watch
-            - apiGroups:
-                - apps
-              resources:
-                - deployments
-                - replicasets
-                - statefulsets
-              verbs:
-                - create
-                - delete
-                - deletecollection
-                - get
-                - list
-                - patch
-                - update
-                - watch
-            - apiGroups:
-                - apps
-              resources:
-                - daemonsets
-              verbs:
-                - get
-                - list
-                - watch
-            - apiGroups:
-                - extensions
-              resources:
-                - ingresses
-              verbs:
-                - create
-                - delete
-                - deletecollection
-                - get
-                - list
-                - patch
-                - update
-                - watch
-          serviceAccountName: camel-k-operator
-    strategy: deployment
-  installModes:
-    - supported: true
-      type: OwnNamespace
-    - supported: true
-      type: SingleNamespace
-    - supported: false
-      type: MultiNamespace
-    - supported: false
-      type: AllNamespaces
diff --git a/docs/modules/ROOT/pages/cli/cli.adoc b/docs/modules/ROOT/pages/cli/cli.adoc
index a388d17ed..b90044cf2 100644
--- a/docs/modules/ROOT/pages/cli/cli.adoc
+++ b/docs/modules/ROOT/pages/cli/cli.adoc
@@ -21,7 +21,7 @@ Some of the most used commands are:
 |`kamel help`
 
 |init
-|Initialize empty Camel K files
+|Initialize empty Camel K files (besides Java you can also do this for other languages like Groovy, Kotlin, XML, YMAL)
 |`kamel init Routes.java`
 
 |run
@@ -47,6 +47,12 @@ Some of the most used commands are:
 |===
 
 The list above is not the full list of available commands. You can run `kamel help` to obtain the full list.
+And each command also takes `--help` as parameter to output more information, eg
+
+[source]
+----
+kamel run --help
+----
 
 == Modeline
 
diff --git a/docs/modules/ROOT/pages/developers.adoc b/docs/modules/ROOT/pages/developers.adoc
index 97ef744dc..c3664dc8b 100644
--- a/docs/modules/ROOT/pages/developers.adoc
+++ b/docs/modules/ROOT/pages/developers.adoc
@@ -59,9 +59,10 @@ This is a high-level overview of the project structure:
 
 To build the whole project you now need to run:
 
-```
+[source]
+----
 make
-```
+----
 
 This execute a full build of both the Java and Go code. If you need to build the components separately you can execute:
 
@@ -71,9 +72,10 @@ This execute a full build of both the Java and Go code. If you need to build the
 
 After a successful build, if you're connected to a Docker daemon, you can build the operator Docker image by running:
 
-```
+[source]
+----
 make images
-```
+----
 
 [[push-snapshot]]
 == Push runtime snapshot
@@ -84,7 +86,8 @@ For the Java bits in runtime you can push to the Apache Snapshot repository with
 
 In your settings.xml you'll need to have the correct ASF credentials to push.
 
-```
+[source,xml]
+----
     <server>
       <id>apache.snapshots.https</id>
       <username>username</username>
@@ -95,15 +98,16 @@ In your settings.xml you'll need to have the correct ASF credentials to push.
       <username>username</username>
       <password>password</password>
     </server>
-```
+----
 
 Don't forget to first run a `make build-runtime` before pushing the snapshot.
 
 The above command produces a `camel-k` image with name `docker.io/apache/camel-k`. Sometimes you might need to produce camel-k images that need to be pushed to the custom repository e.g. `docker.io/myrepo/camel-k`, to do that you can pass a parameter `imgDestination` to the make as shown below:
 
-```
+[source]
+----
 make imgDestination='docker.io/myrepo' images
-```
+----
 
 [[testing]]
 == Testing
@@ -118,18 +122,20 @@ Integration tests are all in the https://github.com/apache/camel-k/tree/master/e
 Since both names end with `_test.go`, both would be executed by go during build, so you need to put a special **build tag** to mark
 integration tests. A integration test should start with the following line:
 
-```
+[source]
+----
 // +build integration
-```
+----
 
 Look into the https://github.com/apache/camel-k/tree/master/e2e[/e2e] directory for examples of integration tests.
 
 Before running a integration test, you need to be connected to a Kubernetes/OpenShift namespace.
 After you log in into your cluster, you can run the following command to execute **all** integration tests:
 
-```
+[source]
+----
 make test-integration
-```
+----
 
 [[running]]
 == Running
@@ -153,15 +159,17 @@ This command assumes you have an already running Minikube instance.
 
 Now you can play with Camel K:
 
-```
+[source]
+----
 ./kamel run examples/Sample.java
-```
+----
 
 To add additional dependencies to your routes:
 
-```
+[source]
+----
 ./kamel run -d camel:dns examples/dns.js
-```
+----
 
 [[debugging]]
 == Debugging and Running from IDE
@@ -178,10 +186,11 @@ It is a bit more complex (but not so much).
 
 You are going to run the operator code **outside** OpenShift in your IDE so, first of all, you need to **stop the operator running inside**:
 
-```
+[source]
+----
 // use kubectl in plain Kubernetes
 oc scale deployment/camel-k-operator --replicas 0
-```
+----
 
 You can scale it back to 1 when you're done and you have updated the operator image.
 
diff --git a/docs/modules/ROOT/pages/installation/installation.adoc b/docs/modules/ROOT/pages/installation/installation.adoc
index 915746679..c1dd880cf 100644
--- a/docs/modules/ROOT/pages/installation/installation.adoc
+++ b/docs/modules/ROOT/pages/installation/installation.adoc
@@ -28,9 +28,10 @@ For example, if you're using Linux, you can put `kamel` in `/usr/bin`.
 
 Once you have put the "kamel" CLI in the path, log into your cluster using the standard "oc" (OpenShift) or "kubectl" (Kubernetes) client tool and execute the following command to install Camel K:
 
-```
+[source]
+----
 kamel install
-```
+----
 
 This will configure the cluster with the Camel K custom resource definitions and install the operator on the current namespace.
 
@@ -44,4 +45,4 @@ You're now ready to xref:running/running.adoc[run some integrations].
 == Installation via Helm
 
 Camel K is also available in Helm Hub for installation.
-Follow the instructions on the [Camel K](https://hub.helm.sh/charts/camel-k/camel-k) page for more information.
+Follow the instructions on the https://hub.helm.sh/charts/camel-k/camel-k[Camel K] page for more information.
diff --git a/docs/modules/ROOT/pages/uninstalling.adoc b/docs/modules/ROOT/pages/uninstalling.adoc
index 29c9514f5..ca05c4b50 100644
--- a/docs/modules/ROOT/pages/uninstalling.adoc
+++ b/docs/modules/ROOT/pages/uninstalling.adoc
@@ -3,14 +3,17 @@
 
 If you really need to, it is possible to completely uninstall Camel K from OpenShift or Kubernetes with the following command:
 
-```
+[source]
+----
 kamel uninstall
-```
+----
 
 This will uninstall from the cluster namespace all Camel K resources along with the operator.
 
- To verify that all resources have been removed you can use the following command:
-```
-kubectl get all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k' 
+To verify that all resources have been removed you can use the following command:
+
+[source]
+----
+kubectl get all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k'
 No resources found in default namespace.
-```
+----
diff --git a/pkg/cmd/uninstall.go b/pkg/cmd/uninstall.go
index aa6054878..c6aeb6ad9 100644
--- a/pkg/cmd/uninstall.go
+++ b/pkg/cmd/uninstall.go
@@ -60,6 +60,7 @@ func newCmdUninstall(rootCmdOptions *RootCmdOptions) (*cobra.Command, *uninstall
 	cmd.Flags().String("olm-package", olm.DefaultPackage, "Name of the Camel K package in the OLM source or marketplace")
 	cmd.Flags().String("olm-global-namespace", olm.DefaultGlobalNamespace, "A namespace containing an OperatorGroup that defines "+
 		"global scope for the operator (used in combination with the --global flag)")
+	cmd.Flags().Bool("all", false, "Do uninstall all Camel-K resources")
 
 	return &cmd, &options
 }
@@ -76,6 +77,7 @@ type uninstallCmdOptions struct {
 	SkipConfigMaps          bool `mapstructure:"skip-config-maps"`
 	Global                  bool `mapstructure:"global"`
 	OlmEnabled              bool `mapstructure:"olm"`
+	UninstallAll            bool `mapstructure:"all"`
 
 	OlmOptions olm.Options
 }
@@ -175,7 +177,7 @@ func (o *uninstallCmdOptions) uninstallOperator(c client.Client) error {
 }
 
 func (o *uninstallCmdOptions) uninstallClusterWideResources(c client.Client) error {
-	if !o.SkipCrd {
+	if !o.SkipCrd || o.UninstallAll {
 		if err := o.uninstallCrd(c); err != nil {
 			if k8serrors.IsForbidden(err) {
 				return createActionNotAuthorizedError()
@@ -185,7 +187,7 @@ func (o *uninstallCmdOptions) uninstallClusterWideResources(c client.Client) err
 		fmt.Printf("Camel K Custom Resource Definitions removed from cluster\n")
 	}
 
-	if !o.SkipClusterRoles {
+	if !o.SkipClusterRoles || o.UninstallAll {
 		if err := o.uninstallClusterRoles(c); err != nil {
 			if k8serrors.IsForbidden(err) {
 				return createActionNotAuthorizedError()
diff --git a/script/build_olm.sh b/script/build_olm.sh
index f8d9ae9b2..ffdae30fc 100755
--- a/script/build_olm.sh
+++ b/script/build_olm.sh
@@ -29,5 +29,5 @@ cd $location/..
 
 operator-sdk generate csv --csv-version ${version} --csv-config deploy/olm-catalog/csv-config.yaml --update-crds
 
-rm $olm_catalog/camel-k/${version}/crd-*.yaml 2>/dev/null || true
-cp $location/../deploy/crd-*.yaml $olm_catalog/camel-k/${version}/
+rm $olm_catalog/camel-k-dev/${version}/crd-*.yaml 2>/dev/null || true
+cp $location/../deploy/crd-*.yaml $olm_catalog/camel-k-dev/${version}/
diff --git a/script/unsnapshot_olm.sh b/script/unsnapshot_olm.sh
index cde56e3f4..7c24af35f 100755
--- a/script/unsnapshot_olm.sh
+++ b/script/unsnapshot_olm.sh
@@ -39,11 +39,11 @@ do
   mv ${f} ${f//-snapshot/}
 done
 
-for f in $(find ${olm_catalog}/camel-k -type f);
+for f in $(find ${olm_catalog}/camel-k-dev -type f);
 do
   sed -i 's/-SNAPSHOT//g' $f
 done
-for f in $(find ${olm_catalog}/camel-k -type f);
+for f in $(find ${olm_catalog}/camel-k-dev -type f);
 do
   sed -i 's/-snapshot//g' $f
 done


Test patch:
diff --git a/pkg/cmd/uninstall_test.go b/pkg/cmd/uninstall_test.go
index ddcfce202..9cd8b54d9 100644
--- a/pkg/cmd/uninstall_test.go
+++ b/pkg/cmd/uninstall_test.go
@@ -64,3 +64,17 @@ func TestUninstallSkipFlags(t *testing.T) {
 	assert.True(t, uninstallCmdOptions.SkipClusterRoles)
 	assert.True(t, uninstallCmdOptions.SkipIntegrationPlatform)
 }
+
+func TestUninstallAllFlag(t *testing.T) {
+	options, cmd := kamelTestPreAddCommandInit()
+
+	uninstallCmdOptions := addTestUninstallCmd(options, cmd)
+
+	kamelTestPostAddCommandInit(t, cmd)
+
+	_, err := test.ExecuteCommand(cmd, "uninstall", "--all")
+	assert.Nil(t, err)
+	assert.True(t, uninstallCmdOptions.SkipCrd)
+	assert.True(t, uninstallCmdOptions.SkipClusterRoles)
+	assert.False(t, uninstallCmdOptions.SkipIntegrationPlatform)
+}
diff --git a/script/olm_publish_test_bundle.sh b/script/olm_publish_test_bundle.sh
new file mode 100755
index 000000000..84473e842
--- /dev/null
+++ b/script/olm_publish_test_bundle.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+location=$(dirname $0)
+
+cd $location/..
+
+PACKAGE=camel-k-dev
+VERSION=$(make get-version)
+
+if [ -z "${QUAY_USERNAME}" ]; then
+  echo "Missing QUAY_USERNAME environment variable"
+  exit 1
+fi
+
+if [ -z "${QUAY_PASSWORD}" ]; then
+  echo "Missing QUAY_PASSWORD environment variable"
+  exit 1
+fi
+
+QUAY_ORGANIZATION=${QUAY_ORGANIZATION:-${QUAY_USERNAME}}
+echo "Quay organization: $QUAY_ORGANIZATION"
+
+echo "Publishing version: $VERSION"
+
+export AUTH_TOKEN=$(curl -sH "Content-Type: application/json" -XPOST https://quay.io/cnr/api/v1/users/login -d '{"user": {"username": "'"${QUAY_USERNAME}"'", "password": "'"${QUAY_PASSWORD}"'"}}' | jq -r '.token')
+
+operator-courier --verbose push deploy/olm-catalog/${PACKAGE}/ ${QUAY_ORGANIZATION} ${PACKAGE} ${VERSION} "$AUTH_TOKEN"
diff --git a/script/olm_test_operator_source.yaml b/script/olm_test_operator_source.yaml
new file mode 100644
index 000000000..6bb8b997d
--- /dev/null
+++ b/script/olm_test_operator_source.yaml
@@ -0,0 +1,31 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+# This resource can be used to install an operator source on a OLM powered cluster
+# that will display Camel K dev packages (e.g. nightly releases)
+
+apiVersion: operators.coreos.com/v1
+kind: OperatorSource
+metadata:
+  name: camel-k-tests
+  namespace: openshift-marketplace
+spec:
+  type: appregistry
+  endpoint: https://quay.io/cnr
+  registryNamespace: camelk
+  displayName: "Apache Nightly Operators"
+  publisher: "Apache"