Repository: apache/camel-k
Pull request #1781 (2020-10-23 14:40:23)

doc(example): timer-source example refactory and timer-source-log-sink new example
<!-- Description -->
As I've started playing with `Kamelets` I think it would be good to include some more verbose example to the list:
* With cef9c8c I've refactored the basic timer-source example in order to include a step by step guideline.
* With 351860d I've included a new log-sink example in order to show a full basic EDA scenario, with an `event source` and an `event sink` wired together.

<!--
Enter your extended release note in the below block. If the PR requires
additional action from users switching to the new release, include the string
"action required". If no release note is required, write "NONE". 

You can (optionally) mark this PR with labels "kind/bug" or "kind/feature" to make sure
the text is added to the right section of the release notes. 
-->

**Release Note**
```release-note
NONE
```



Patch:
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 317431444..b0d087f0d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,6 +21,7 @@ on:
   pull_request:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
@@ -29,6 +30,7 @@ on:
   push:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml
index bce238b76..3bcd7e906 100644
--- a/.github/workflows/builder.yml
+++ b/.github/workflows/builder.yml
@@ -21,6 +21,7 @@ on:
   pull_request:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
@@ -29,6 +30,7 @@ on:
   push:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
diff --git a/.github/workflows/knative.yml b/.github/workflows/knative.yml
index 4e01d19a9..fb93c3a5c 100644
--- a/.github/workflows/knative.yml
+++ b/.github/workflows/knative.yml
@@ -21,6 +21,7 @@ on:
   pull_request:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
@@ -29,6 +30,7 @@ on:
   push:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
diff --git a/.github/workflows/kubernetes.yml b/.github/workflows/kubernetes.yml
index 78e6885b7..b138abc9f 100644
--- a/.github/workflows/kubernetes.yml
+++ b/.github/workflows/kubernetes.yml
@@ -21,6 +21,7 @@ on:
   pull_request:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
@@ -29,6 +30,7 @@ on:
   push:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
diff --git a/.github/workflows/openshift.yml b/.github/workflows/openshift.yml
index e41a078df..7502f0a5d 100644
--- a/.github/workflows/openshift.yml
+++ b/.github/workflows/openshift.yml
@@ -21,6 +21,7 @@ on:
   pull_request:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
@@ -29,6 +30,7 @@ on:
   push:
     branches:
       - master
+      - "release-*"
     paths-ignore:
       - '**.adoc'
       - 'KEYS'
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index f8c2be797..5decec1f1 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -21,9 +21,11 @@ on:
   pull_request:
     branches: 
       - master
+      - "release-*"
   push:
     branches:
       - master
+      - "release-*"
 jobs:
   build:
     runs-on: ubuntu-latest
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a7e2185cc..2d89aba59 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@
 
 **Closed issues:**
 
+- KameletBinding to broker fails [\#1778](https://github.com/apache/camel-k/issues/1778)
+- Kamelet binding to an explicit URI failing [\#1774](https://github.com/apache/camel-k/issues/1774)
 - When building quarkus, properties should be part of the generate application.properties used to build the project [\#1763](https://github.com/apache/camel-k/issues/1763)
 - Release 1.2.0 [\#1754](https://github.com/apache/camel-k/issues/1754)
 - Add suport for gists [\#1740](https://github.com/apache/camel-k/issues/1740)
@@ -14,6 +16,10 @@
 
 **Merged pull requests:**
 
+- \[ENTESB-15044\] Refactor monitoring test to be able consume camel quar… [\#1790](https://github.com/apache/camel-k/pull/1790) ([llowinge](https://github.com/llowinge))
+- Make inspect subcommand run locally. [\#1782](https://github.com/apache/camel-k/pull/1782) ([doru1004](https://github.com/doru1004))
+- Fix \#1778: allow pushing to broker via KameletBinding [\#1780](https://github.com/apache/camel-k/pull/1780) ([nicolaferraro](https://github.com/nicolaferraro))
+- Fix \#1774: use direct HTTP binding when Knative is not in use [\#1776](https://github.com/apache/camel-k/pull/1776) ([nicolaferraro](https://github.com/nicolaferraro))
 - Automatic changelog: Remove deprecated github action commands [\#1775](https://github.com/apache/camel-k/pull/1775) ([oscerd](https://github.com/oscerd))
 - update prometheus trait doc with quarkus as default runtime [\#1772](https://github.com/apache/camel-k/pull/1772) ([smccarthy-ie](https://github.com/smccarthy-ie))
 - Add a kamel debug command [\#1769](https://github.com/apache/camel-k/pull/1769) ([nicolaferraro](https://github.com/nicolaferraro))
diff --git a/examples/kamelets/timer-source-log-sink/log-sink.binding.yaml b/examples/kamelets/timer-source-log-sink/log-sink.binding.yaml
new file mode 100644
index 000000000..6b6608cd9
--- /dev/null
+++ b/examples/kamelets/timer-source-log-sink/log-sink.binding.yaml
@@ -0,0 +1,32 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: log-event-sink
+spec:
+  source:
+    ref:
+      kind: InMemoryChannel
+      apiVersion: messaging.knative.dev/v1beta1
+      name: messages
+  sink:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: log-sink
diff --git a/examples/kamelets/timer-source-log-sink/log-sink.kamelet.yaml b/examples/kamelets/timer-source-log-sink/log-sink.kamelet.yaml
new file mode 100644
index 000000000..0d9ff42c6
--- /dev/null
+++ b/examples/kamelets/timer-source-log-sink/log-sink.kamelet.yaml
@@ -0,0 +1,34 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: log-sink
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,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"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Log Sink"
+    description: "Consume events from a channel"
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - to: "log:sink"
diff --git a/examples/kamelets/timer-source-log-sink/readme.md b/examples/kamelets/timer-source-log-sink/readme.md
new file mode 100644
index 000000000..4d4d6713a
--- /dev/null
+++ b/examples/kamelets/timer-source-log-sink/readme.md
@@ -0,0 +1,62 @@
+# Timer Source to Log Sink
+
+This example shows how to create a simple timer `event source` and a log `event sink`. The timer events emitted are consumed by a simple logging connector which will print out those events.
+
+## Create events source and sink
+
+Let's start by creating the timer event source and log event sink as `kamelet`s.
+```
+$ kubectl apply -f timer-source.kamelet.yaml
+$ kubectl apply -f log-sink.kamelet.yaml
+```
+
+You can check the newly created `kamelet`s in the list.
+```
+$ kubectl get kamelets
+
+NAME           PHASE
+log-sink       Ready
+timer-source   Ready
+```
+
+## Create channel destination
+
+Let's continue by creating a `knative` destination.
+```
+$ kubectl apply -f timer-events.yaml
+```
+
+## Binding events
+
+We can now bind the timer event source to produce events on the destination with the `timer-source.binding.yaml` configuration.
+```
+$ kubectl apply -f timer-source.binding.yaml
+```
+In a similar fashion you can bind to the log sink in order to consume those events with the `log-sink.binding.yaml` configuration.
+```
+$ kubectl apply -f log-sink.binding.yaml
+```
+You can check the newly created bindings listing the `KameletBidings`.
+```
+$ kubectl get KameletBindings
+
+NAME                 PHASE
+log-event-sink       Ready
+timer-event-source   Ready
+```
+
+### Watch the event sink
+
+After a while you will be able to watch the event consumed by the underlying `log-event-sink` integration:
+
+```
+$ kamel log log-event-sink
+
+[1] Monitoring pod log-event-sink-wjm9w-deployment-cf4f49655-xwq82
+...
+[1] 2020-10-23 14:28:11,878 INFO  [sink] (vert.x-worker-thread-1) Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: Hello world!]
+[1] 2020-10-23 14:28:11,877 INFO  [sink] (vert.x-worker-thread-0) Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: Hello world!]
+[1] 2020-10-23 14:28:12,381 INFO  [sink] (vert.x-worker-thread-2) Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: Hello world!]
+[1] 2020-10-23 14:28:13,276 INFO  [sink] (vert.x-worker-thread-3) Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: Hello world!]
+[1] 2020-10-23 14:28:14,299 INFO  [sink] (vert.x-worker-thread-4) Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: Hello world!]
+```
\ No newline at end of file
diff --git a/jitpack.yml b/examples/kamelets/timer-source-log-sink/timer-events.yaml
similarity index 90%
rename from jitpack.yml
rename to examples/kamelets/timer-source-log-sink/timer-events.yaml
index 2c2b52e5f..b7b413305 100644
--- a/jitpack.yml
+++ b/examples/kamelets/timer-source-log-sink/timer-events.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-jdk:
-  - openjdk11
-install:
-  - mvn clean install -f ./e2e/yaks/openshift/monitoring/app/pom.xml
+apiVersion: messaging.knative.dev/v1beta1
+kind: InMemoryChannel
+metadata:
+  name: messages
\ No newline at end of file
diff --git a/examples/kamelets/timer-source-log-sink/timer-source.binding.yaml b/examples/kamelets/timer-source-log-sink/timer-source.binding.yaml
new file mode 100644
index 000000000..622e01560
--- /dev/null
+++ b/examples/kamelets/timer-source-log-sink/timer-source.binding.yaml
@@ -0,0 +1,34 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: timer-event-source
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello world!"
+  sink:
+    ref:
+      kind: InMemoryChannel
+      apiVersion: messaging.knative.dev/v1beta1
+      name: messages
\ No newline at end of file
diff --git a/examples/kamelets/timer-source-log-sink/timer-source.kamelet.yaml b/examples/kamelets/timer-source-log-sink/timer-source.kamelet.yaml
new file mode 100644
index 000000000..47a63931b
--- /dev/null
+++ b/examples/kamelets/timer-source-log-sink/timer-source.kamelet.yaml
@@ -0,0 +1,54 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: timer-source
+  annotations:
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg=="
+  labels:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Timer Source"
+    description: "Produces periodic events with a custom payload"
+    required:
+      - message
+    properties:
+      period:
+        title: Period
+        description: The interval between two events
+        type: integer
+        default: 1000
+      message:
+        title: Message
+        description: The message to generate
+        type: string
+        example: "hello world"
+  types:
+    out:
+      mediaType: text/plain
+  flow:
+    from:
+      uri: timer:tick
+      parameters:
+        period: "#property:period"
+      steps:
+      - set-body:
+          constant: "{{message}}"
+      - to: "kamelet:sink"
\ No newline at end of file
diff --git a/examples/kamelets/kamelet-binding-example.yaml b/examples/kamelets/timer-source/kamelet-binding-example.yaml
similarity index 100%
rename from examples/kamelets/kamelet-binding-example.yaml
rename to examples/kamelets/timer-source/kamelet-binding-example.yaml
diff --git a/examples/kamelets/messages-channel.yaml b/examples/kamelets/timer-source/messages-channel.yaml
similarity index 100%
rename from examples/kamelets/messages-channel.yaml
rename to examples/kamelets/timer-source/messages-channel.yaml
diff --git a/examples/kamelets/timer-source/readme.md b/examples/kamelets/timer-source/readme.md
new file mode 100644
index 000000000..25d27fd67
--- /dev/null
+++ b/examples/kamelets/timer-source/readme.md
@@ -0,0 +1,66 @@
+# Timer Source Hello World example
+
+This example shows how to create a simple timer-source `kamelet` and how to use it in a new integration or how to bind it to a knative destination through a `KameletBinding`.
+
+## Timer Source Kamelet
+
+First of all, you must install the timer source kamelet defined in `timer-source.kamelet.yaml` file:
+```
+$ kubectl apply -f timer-source.kamelet.yaml
+```
+You can check the newly created `kamelet` checking the list of kamelets available:
+```
+$ kubectl get kamelets
+
+NAME                   PHASE
+timer-source           Ready
+```
+## Timer Source integration
+As soon as the `kamelet` is available in your cluster, you can use it in any integration such as the one defined in `usage.groovy` file:
+```
+from('kamelet:timer-source?message=Hello+Kamelets&period=1000')
+    .log('${body}')
+```
+Just run the integration via:
+```
+$ kamel run usage.groovy
+```
+You should be able to see the new integration running after some time:
+```
+$ kamel get
+NAME	PHASE	KIT
+usage	Running	kit-bu9d2r22hhmoa6qrtc2g
+```
+As soon as the integration starts, you will be able to log the timer source events emitted:
+```
+$ kamel log usage
+
+[1] Monitoring pod usage-785d65897b-5jdvp
+...
+[1] 2020-10-23 12:51:19,724 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+[1] 2020-10-23 12:51:20,681 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+[1] 2020-10-23 12:51:21,682 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+[1] 2020-10-23 12:51:22,681 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+[1] 2020-10-23 12:51:23,684 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+[1] 2020-10-23 12:51:24,682 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Kamelets
+....
+```
+## Timer Source KameletBinding
+You can also bind the `kamelet` to a knative destination (or other events channel, [see the official documention](https://camel.apache.org/camel-k/latest/kamelets/kamelets.html#kamelets-usage-binding)) in order to source the events emitted by the configuration described by the `kamelet`. Make sure to have Knative properly installed on your cluster ([see installation guide](https://knative.dev/docs/install/)).
+
+First of all, you must declare the knative destination:
+```
+kubectl apply -f messages-channel.yaml
+```
+Once the destination is ready, you can reference it from a `KameletBinding` such as in the example `kamelet-binding-example.yaml`. In order to bind the connector to the destination apply the configuration:
+```
+$ kubectl apply -f kamelet-binding-example.yaml
+```
+You can confirm the creation of the `KameletBinding` listing the resources:
+```
+$ kubectl get kameletbindings
+
+NAME           PHASE
+timer-source   Ready
+```
+At this stage you will be able to consume the timer event sources from the knative destination.
diff --git a/examples/kamelets/timer-source.kamelet.yaml b/examples/kamelets/timer-source/timer-source.kamelet.yaml
similarity index 100%
rename from examples/kamelets/timer-source.kamelet.yaml
rename to examples/kamelets/timer-source/timer-source.kamelet.yaml
diff --git a/examples/kamelets/usage.groovy b/examples/kamelets/timer-source/usage.groovy
similarity index 100%
rename from examples/kamelets/usage.groovy
rename to examples/kamelets/timer-source/usage.groovy
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 134212811..f899c95fc 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -52,6 +52,9 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 
 			return nil
 		},
+		Annotations: map[string]string{
+			offlineCommandLabel: "true",
+		},
 	}
 
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
diff --git a/pkg/util/bindings/knative_ref.go b/pkg/util/bindings/knative_ref.go
index e3ad420c2..07e945478 100644
--- a/pkg/util/bindings/knative_ref.go
+++ b/pkg/util/bindings/knative_ref.go
@@ -19,6 +19,7 @@ package bindings
 
 import (
 	"encoding/json"
+	"errors"
 	"fmt"
 	"net/url"
 
@@ -69,12 +70,21 @@ func (k KnativeRefBindingProvider) Translate(ctx BindingContext, endpointType v1
 
 	var serviceURI string
 	if *serviceType == knativeapis.CamelServiceTypeEvent {
+		// TODO enable this when the runtime will support changing the broker name (https://github.com/apache/camel-k-runtime/issues/535)
+		//if props["name"] == "" {
+		//	props["name"] = e.Ref.Name
+		//}
 		if eventType, ok := props["type"]; ok {
 			// consume prop
 			delete(props, "type")
 			serviceURI = fmt.Sprintf("knative:%s/%s", *serviceType, eventType)
 		} else {
-			serviceURI = fmt.Sprintf("knative:%s", *serviceType)
+			if endpointType == v1alpha1.EndpointTypeSink {
+				// Allowing no event type, but it can fail. See https://github.com/apache/camel-k-runtime/issues/536
+				serviceURI = fmt.Sprintf("knative:%s", *serviceType)
+			} else {
+				return nil, errors.New(`property "type" must be provided when reading from the Broker`)
+			}
 		}
 	} else {
 		serviceURI = fmt.Sprintf("knative:%s/%s", *serviceType, url.PathEscape(e.Ref.Name))
diff --git a/pkg/util/knative/knative.go b/pkg/util/knative/knative.go
index 2a45fb1fe..4f506ea3a 100644
--- a/pkg/util/knative/knative.go
+++ b/pkg/util/knative/knative.go
@@ -80,7 +80,7 @@ func CreateTrigger(brokerReference corev1.ObjectReference, serviceName string, e
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: brokerReference.Namespace,
-			Name:      brokerReference.Name + "-" + serviceName + "-" + eventType,
+			Name:      brokerReference.Name + "-" + serviceName + "-" + kubernetesutils.SanitizeLabel(eventType),
 		},
 		Spec: eventing.TriggerSpec{
 			Filter: &eventing.TriggerFilter{
diff --git a/pkg/util/knative/uri.go b/pkg/util/knative/uri.go
index 3df11d6e0..5dd6e6958 100644
--- a/pkg/util/knative/uri.go
+++ b/pkg/util/knative/uri.go
@@ -26,14 +26,13 @@ import (
 	v1 "k8s.io/api/core/v1"
 )
 
-var uriRegexp = regexp.MustCompile(`^knative:[/]*(channel|endpoint|event)(?:$|/([A-Za-z0-9.-]+)(?:[/?].*|$))`)
+var uriRegexp = regexp.MustCompile(`^knative:[/]*(channel|endpoint|event)(?:[?].*|$|/([A-Za-z0-9.-]+)(?:[/?].*|$))`)
 var plainNameRegexp = regexp.MustCompile(`^[A-Za-z0-9.-]+$`)
 
 const (
-	paramAPIVersion       = "apiVersion"
-	paramKind             = "kind"
-	paramBrokerName       = "brokerName"
-	paramBrokerAPIVersion = "brokerApiVersion"
+	paramAPIVersion = "apiVersion"
+	paramKind       = "kind"
+	paramBrokerName = "name"
 )
 
 // FilterURIs returns all Knative URIs of the given type from a slice
@@ -62,7 +61,7 @@ func ExtractObjectReference(uri string) (v1.ObjectReference, error) {
 		if name == "" {
 			name = "default"
 		}
-		apiVersion := uriutils.GetQueryParameter(uri, paramBrokerAPIVersion)
+		apiVersion := uriutils.GetQueryParameter(uri, paramAPIVersion)
 		return v1.ObjectReference{
 			Name:       name,
 			APIVersion: apiVersion,


Test patch:
diff --git a/e2e/yaks/common/kamelet-binding-broker/kamelet.feature b/e2e/yaks/common/kamelet-binding-broker/kamelet.feature
new file mode 100644
index 000000000..4fb1de32f
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/kamelet.feature
@@ -0,0 +1,5 @@
+Feature: Camel K can bind Kamelets to the broker
+
+  Scenario: Sending event to the broker with KameletBinding
+    Given integration logger-sink-binding is running
+    Then integration logger-sink-binding should print message: Hello Custom Event
diff --git a/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml b/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml
new file mode 100644
index 000000000..6b0c0a04c
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/logger-sink-binding.yaml
@@ -0,0 +1,34 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: logger-sink-binding
+spec:
+  source:
+    ref:
+      kind: Broker
+      apiVersion: eventing.knative.dev/v1beta1
+      name: default
+    properties:
+      type: custom-type
+  sink:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: logger-sink
diff --git a/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml b/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml
new file mode 100644
index 000000000..edc710f47
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/logger-sink.kamelet.yaml
@@ -0,0 +1,43 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: logger-sink
+  label:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Logger"
+    description: "Logs the received payload of each incoming event"
+    properties:
+      prefix:
+        title: Prefix
+        description: The prefix to prepend to the logged message
+        type: string
+        default: "message: "
+  types:
+    in:
+      mediaType: text/plain
+    out:
+      mediaType: text/plain
+  flow:
+    from:
+      uri: "kamelet:source"
+      steps:
+        - log: "{{prefix}}${body}"
diff --git a/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml b/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml
new file mode 100644
index 000000000..317ab02e1
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/timer-source-binding.yaml
@@ -0,0 +1,37 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: timer-source-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: Hello Custom Event
+      period: 1000
+  sink:
+    ref:
+      kind: Broker
+      apiVersion: eventing.knative.dev/v1beta1
+      name: default
+    properties:
+      type: custom-type
diff --git a/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml b/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml
new file mode 100644
index 000000000..dc64b5723
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/timer-source.kamelet.yaml
@@ -0,0 +1,54 @@
+# ---------------------------------------------------------------------------
+# 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: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: timer-source
+  label:
+    camel.apache.org/kamelet.type: "source"
+spec:
+  definition:
+    title: "Timer"
+    description: "Produces periodic events with a custom payload"
+    required:
+      - message
+    properties:
+      period:
+        title: Period
+        description: The time interval between two events
+        type: integer
+        default: 1000
+      message:
+        title: Message
+        description: The message to generate
+        type: string
+  types:
+    out:
+      mediaType: application/json
+      schema:
+        id: text.camel.apache.org
+        type: string
+  flow:
+    from:
+      uri: timer:tick
+      parameters:
+        period: "{{period}}"
+      steps:
+        - set-body:
+            constant: "{{message}}"
+        - to: "kamelet:sink"
diff --git a/e2e/yaks/common/kamelet-binding-broker/yaks-config.yaml b/e2e/yaks/common/kamelet-binding-broker/yaks-config.yaml
new file mode 100644
index 000000000..e8414f85c
--- /dev/null
+++ b/e2e/yaks/common/kamelet-binding-broker/yaks-config.yaml
@@ -0,0 +1,36 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+config:
+  namespace:
+    temporary: true
+pre:
+- name: installation
+  run: |
+    # One of the two labels should work
+    oc label namespace $YAKS_NAMESPACE eventing.knative.dev/injection=enabled
+    oc label namespace $YAKS_NAMESPACE knative-eventing-injection=enabled
+
+    kamel install -n $YAKS_NAMESPACE
+
+    kubectl apply -f timer-source.kamelet.yaml -n $YAKS_NAMESPACE
+    kubectl apply -f logger-sink.kamelet.yaml -n $YAKS_NAMESPACE
+
+    kubectl apply -f timer-source-binding.yaml -n $YAKS_NAMESPACE
+    kubectl apply -f logger-sink-binding.yaml -n $YAKS_NAMESPACE
+    kubectl wait kameletbinding timer-source-binding --for=condition=Ready --timeout=10m -n $YAKS_NAMESPACE
+    kubectl wait kameletbinding logger-sink-binding --for=condition=Ready --timeout=10m -n $YAKS_NAMESPACE
diff --git a/e2e/yaks/openshift/monitoring/app/.gitignore b/e2e/yaks/openshift/monitoring/app/.gitignore
new file mode 100644
index 000000000..9f970225a
--- /dev/null
+++ b/e2e/yaks/openshift/monitoring/app/.gitignore
@@ -0,0 +1,1 @@
+target/
\ No newline at end of file
diff --git a/e2e/yaks/openshift/monitoring/app/pom.xml b/e2e/yaks/openshift/monitoring/app/pom.xml
index aa77c9e1d..e024a40fe 100644
--- a/e2e/yaks/openshift/monitoring/app/pom.xml
+++ b/e2e/yaks/openshift/monitoring/app/pom.xml
@@ -15,52 +15,54 @@
 -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
 
-    <groupId>com.github.openshift-integration</groupId>
-    <artifactId>camel-k-example-metrics</artifactId>
-    <version>master-SNAPSHOT</version>
+	<groupId>com.github.openshift-integration</groupId>
+	<artifactId>camel-k-example-metrics</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
 
-    <name>camel-k-example-metrics</name>
+	<name>camel-k-example-metrics</name>
 
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<!-- Will be replaced by sed to test specific version. -->
+		<version.camel.quarkus>1.0.0-CR2</version.camel.quarkus>
+	</properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-microprofile-metrics</artifactId>
-            <version>1.0.0-CR2</version>
-        </dependency>
-    </dependencies>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.camel.quarkus</groupId>
+			<artifactId>camel-quarkus-microprofile-metrics</artifactId>
+			<version>${version.camel.quarkus}</version>
+		</dependency>
+	</dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>11</source>
-                    <target>11</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.jboss.jandex</groupId>
-                <artifactId>jandex-maven-plugin</artifactId>
-                <version>1.0.7</version>
-                <executions>
-                    <execution>
-                    <id>make-index</id>
-                    <goals>
-                        <goal>jandex</goal>
-                    </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.1</version>
+				<configuration>
+					<source>11</source>
+					<target>11</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.jboss.jandex</groupId>
+				<artifactId>jandex-maven-plugin</artifactId>
+				<version>1.0.7</version>
+				<executions>
+					<execution>
+						<id>make-index</id>
+						<goals>
+							<goal>jandex</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
 
 </project>
diff --git a/e2e/yaks/openshift/monitoring/dependencyInstall.sh b/e2e/yaks/openshift/monitoring/dependencyInstall.sh
new file mode 100644
index 000000000..392a50d62
--- /dev/null
+++ b/e2e/yaks/openshift/monitoring/dependencyInstall.sh
@@ -0,0 +1,26 @@
+#!/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.
+
+SOURCE_DIR=$( dirname "${BASH_SOURCE[0]}")
+APP_FOLDER="${SOURCE_DIR}/app"
+
+mvn clean install -f $APP_FOLDER
+LOCAL_MVN_HOME=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
+
+OPERATOR_POD=$(oc -n ${YAKS_NAMESPACE} get pods -l name=camel-k-operator --no-headers -o custom-columns=NAME:.metadata.name)
+oc -n ${YAKS_NAMESPACE} exec $OPERATOR_POD -- mkdir -p /tmp/artifacts/m2/com/github/openshift-integration/camel-k-example-metrics/1.0.0-SNAPSHOT/
+oc -n ${YAKS_NAMESPACE} rsync $LOCAL_MVN_HOME/com/github/openshift-integration/camel-k-example-metrics/1.0.0-SNAPSHOT/ $OPERATOR_POD:/tmp/artifacts/m2/com/github/openshift-integration/camel-k-example-metrics/1.0.0-SNAPSHOT/ --exclude=\* --include=camel-k-example-metrics-1.0.0-SNAPSHOT.\* --no-perms=true
\ No newline at end of file
diff --git a/e2e/yaks/openshift/monitoring/metrics.feature b/e2e/yaks/openshift/monitoring/metrics.feature
index 451f0ccad..3b28f599a 100644
--- a/e2e/yaks/openshift/monitoring/metrics.feature
+++ b/e2e/yaks/openshift/monitoring/metrics.feature
@@ -4,12 +4,12 @@ Feature: Camel K can serve metrics to Prometheus
     Given URL: https://thanos-querier.openshift-monitoring:9091
 
   Scenario: Integration gets the message from the timer
-    Given integration metrics is running
-    Then integration metrics should print Successfully processed
+    Given Camel-K integration metrics is running
+    Then Camel-K integration metrics should print Successfully processed
     Then sleep 120000 ms
 
   Scenario: Thanos is able to serve custom microprofile annotation metrics
-    Given HTTP request header Authorization is "Bearer TOKEN"
+    Given HTTP request header Authorization is "Bearer ${openshift.token}"
     When send GET /api/v1/query?query=application_camel_k_example_metrics_attempt_total
     Then verify HTTP response expressions
       | $.status                         | success                                           |
@@ -19,7 +19,7 @@ Feature: Camel K can serve metrics to Prometheus
     And receive HTTP 200
 
   Scenario: Thanos is able to serve custom camel microprofile metrics
-    Given HTTP request header Authorization is "Bearer TOKEN"
+    Given HTTP request header Authorization is "Bearer ${openshift.token}"
     When send GET /api/v1/query?query=application_camel_k_example_metrics_error_total
     Then verify HTTP response expressions
       | $.status                         | success                                         |
diff --git a/e2e/yaks/openshift/monitoring/obtainToken.sh b/e2e/yaks/openshift/monitoring/obtainToken.sh
index 6c32107c9..c3616d382 100755
--- a/e2e/yaks/openshift/monitoring/obtainToken.sh
+++ b/e2e/yaks/openshift/monitoring/obtainToken.sh
@@ -15,8 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-SOURCE_DIR=$( dirname "${BASH_SOURCE[0]}")
-TEST_FILE="${SOURCE_DIR}/metrics.feature"
-
-TOKEN=`kubectl config view --minify --output 'jsonpath={..token}'`
-sed -i -e "s/TOKEN/${TOKEN}/g" "${TEST_FILE}"
\ No newline at end of file
+TOKEN=`oc config view --minify --output 'jsonpath={..token}'`
+echo "openshift.token=${TOKEN}" > openshift-token.properties
+oc -n ${YAKS_NAMESPACE} create secret generic openshift-token-secret --from-file=openshift-token.properties
+oc -n ${YAKS_NAMESPACE} label secret openshift-token-secret yaks.citrusframework.org/test=metrics
+rm openshift-token.properties
\ No newline at end of file
diff --git a/e2e/yaks/openshift/monitoring/yaks-config.yaml b/e2e/yaks/openshift/monitoring/yaks-config.yaml
index 1df8ebf87..5f2651974 100644
--- a/e2e/yaks/openshift/monitoring/yaks-config.yaml
+++ b/e2e/yaks/openshift/monitoring/yaks-config.yaml
@@ -21,7 +21,11 @@ config:
 pre:
   - name: ObtainToken
     script: ./obtainToken.sh
-  - name: installation
+  - name: Camel-k install
     run: |
       kamel install -w -n ${YAKS_NAMESPACE}
-      kamel run --name metrics Metrics.java -w -n $YAKS_NAMESPACE --dependency github:apache:camel-k:master-SNAPSHOT
+  - name: Dependency install
+    script: ./dependencyInstall.sh
+  - name: Integration run
+    run: |
+      kamel run --name metrics Metrics.java -w -n $YAKS_NAMESPACE --dependency mvn:com.github.openshift-integration:camel-k-example-metrics:1.0.0-SNAPSHOT
diff --git a/pkg/util/knative/apis_test.go b/pkg/util/knative/apis_test.go
index 3f1730f19..fd1331dee 100644
--- a/pkg/util/knative/apis_test.go
+++ b/pkg/util/knative/apis_test.go
@@ -134,7 +134,7 @@ func TestAPIs(t *testing.T) {
 		Name:       "default",
 	}, refs[0])
 
-	ref, err = ExtractObjectReference("knative:event/ciao?brokerApiVersion=xxx")
+	ref, err = ExtractObjectReference("knative:event/ciao?apiVersion=xxx")
 	assert.Nil(t, err)
 	refs = FillMissingReferenceData(knative.CamelServiceTypeEvent, ref)
 	checkValidRefs(t, refs)
@@ -144,7 +144,7 @@ func TestAPIs(t *testing.T) {
 		Name:       "default",
 	}, refs[0])
 
-	ref, err = ExtractObjectReference("knative:event/ciao?brokerName=aaa")
+	ref, err = ExtractObjectReference("knative:event/ciao?name=aaa")
 	assert.Nil(t, err)
 	refs = FillMissingReferenceData(knative.CamelServiceTypeEvent, ref)
 	checkValidRefs(t, refs)
diff --git a/pkg/util/knative/uri_test.go b/pkg/util/knative/uri_test.go
index ece603f88..995127889 100644
--- a/pkg/util/knative/uri_test.go
+++ b/pkg/util/knative/uri_test.go
@@ -74,7 +74,7 @@ func TestChannelUri(t *testing.T) {
 		Name:       "ciao",
 	}, ref)
 
-	ref, err = ExtractObjectReference("knative://event/chuck?&brokerApiVersion=eventing.knative.dev/v1beta1&brokerName=broker2")
+	ref, err = ExtractObjectReference("knative://event/chuck?&apiVersion=eventing.knative.dev/v1beta1&name=broker2")
 	assert.Nil(t, err)
 	assert.Equal(t, v1.ObjectReference{
 		APIVersion: "eventing.knative.dev/v1beta1",
@@ -88,6 +88,14 @@ func TestChannelUri(t *testing.T) {
 		Name: "default",
 		Kind: "Broker",
 	}, ref)
+
+	ref, err = ExtractObjectReference("knative://event?&apiVersion=eventing.knative.dev/v1beta13&brokxerName=broker2")
+	assert.Nil(t, err)
+	assert.Equal(t, v1.ObjectReference{
+		APIVersion: "eventing.knative.dev/v1beta13",
+		Name:       "default",
+		Kind:       "Broker",
+	}, ref)
 }
 
 func TestNormalizeToUri(t *testing.T) {