You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/10/20 15:28:35 UTC

[camel-kamelets] branch main updated: Added Kafka Apicurio Registry Sink Kamelet (#1697)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 13a8e0e4 Added Kafka Apicurio Registry Sink Kamelet (#1697)
13a8e0e4 is described below

commit 13a8e0e4be705a5ce894fc7eea0034314b2d5af2
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Oct 20 17:28:30 2023 +0200

    Added Kafka Apicurio Registry Sink Kamelet (#1697)
    
    * Added Kafka Apicurio Registry Sink Kamelet
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
    
    * Added Kafka Apicurio Registry Sink Kamelet
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
    
    ---------
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 docs/modules/ROOT/nav.adoc                         |   1 +
 ...apicurio-registry-not-secured-sink.kamelet.yaml | 115 +++++++++++++++++++++
 ...apicurio-registry-not-secured-sink.kamelet.yaml | 115 +++++++++++++++++++++
 3 files changed, 231 insertions(+)

diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 227dd455..3e344f5e 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -123,6 +123,7 @@
 * xref:json-schema-validator-action.adoc[]
 * xref:json-serialize-action.adoc[]
 * xref:jsonata-action.adoc[]
+* xref:kafka-apicurio-registry-not-secured-sink.adoc[]
 * xref:kafka-apicurio-registry-not-secured-source.adoc[]
 * xref:kafka-azure-schema-registry-source.adoc[]
 * xref:kafka-manual-commit-action.adoc[]
diff --git a/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml b/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
new file mode 100644
index 00000000..ebb2604d
--- /dev/null
+++ b/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
@@ -0,0 +1,115 @@
+# ---------------------------------------------------------------------------
+# 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/v1
+kind: Kamelet
+metadata:
+  name: kafka-apicurio-registry-not-secured-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.1.0-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Kafka"
+    camel.apache.org/kamelet.namespace: "Kafka"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Kafka Not Secured with Apicurio Registry Sink"
+    description: |-
+      Send data to Kafka topics on an insecure broker with Apicurio Registry.
+
+      The Kamelet is able to understand the following headers to be set:
+
+      - `key` / `ce-key`: as message key
+    
+      - `partition-key` / `ce-partitionkey`: as message partition key
+
+      Both the headers are optional.
+
+      Three headers, if specified, will be deduplicated with different names, kafka.key will be duplicated into kafka.KEY, kafka.topic into kafka.TOPIC and kafka.override_topic into kafka.OVERRIDE_TOPIC
+    required:
+      - topic
+      - bootstrapServers
+      - apicurioRegistryUrl
+    type: object
+    properties:
+      topic:
+        title: Topic Names
+        description: Comma separated list of Kafka topic names
+        type: string
+      bootstrapServers:
+        title: Bootstrap Servers
+        description: Comma separated list of Kafka Broker URLs
+        type: string
+      valueSerializer:
+        title: Value Serializer
+        description: Serliazer class for value that implements the Serializer interface.
+        type: string
+        default: "io.apicurio.registry.serde.avro.AvroKafkaSerializer"
+      apicurioRegistryUrl:
+        title: Apicurio Registry URL
+        description: The Apicurio Schema Registry URL
+        type: string
+        x-descriptors:
+        - urn:keda:metadata:apicurioRegistryUrl
+        - urn:keda:required
+      avroDatumProvider:
+        title: Avro Datum Provider
+        description: How to write data with Avro
+        type: string
+        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:kafka"
+    - "mvn:io.apicurio:apicurio-registry-serdes-avro-serde:2.4.12.Final"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[key]}"
+            steps:
+            - set-header:
+                name: kafka.KEY
+                simple: "${header[key]}"
+          - simple: "${header[ce-key]}"
+            steps:
+            - set-header:
+                name: kafka.KEY
+                simple: "${header[ce-key]}"
+      - choice:
+          when:
+          - simple: "${header[partition-key]}"
+            steps:
+            - set-header:
+                name: kafka.PARTITION_KEY
+                simple: "${header[partition-key]}"
+          - simple: "${header[ce-partitionkey]}"
+            steps:
+            - set-header:
+                name: kafka.PARTITION_KEY
+                simple: "${header[ce-partitionkey]}"
+      - to:
+          uri: "kafka:{{topic}}"
+          parameters:
+            brokers: "{{bootstrapServers}}"
+            valueSerializer: "{{valueSerializer}}"
+            additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
+            additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
diff --git a/library/camel-kamelets/src/main/resources/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
new file mode 100644
index 00000000..ebb2604d
--- /dev/null
+++ b/library/camel-kamelets/src/main/resources/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
@@ -0,0 +1,115 @@
+# ---------------------------------------------------------------------------
+# 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/v1
+kind: Kamelet
+metadata:
+  name: kafka-apicurio-registry-not-secured-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.1.0-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MD [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Kafka"
+    camel.apache.org/kamelet.namespace: "Kafka"
+  labels:
+    camel.apache.org/kamelet.type: "sink"
+spec:
+  definition:
+    title: "Kafka Not Secured with Apicurio Registry Sink"
+    description: |-
+      Send data to Kafka topics on an insecure broker with Apicurio Registry.
+
+      The Kamelet is able to understand the following headers to be set:
+
+      - `key` / `ce-key`: as message key
+    
+      - `partition-key` / `ce-partitionkey`: as message partition key
+
+      Both the headers are optional.
+
+      Three headers, if specified, will be deduplicated with different names, kafka.key will be duplicated into kafka.KEY, kafka.topic into kafka.TOPIC and kafka.override_topic into kafka.OVERRIDE_TOPIC
+    required:
+      - topic
+      - bootstrapServers
+      - apicurioRegistryUrl
+    type: object
+    properties:
+      topic:
+        title: Topic Names
+        description: Comma separated list of Kafka topic names
+        type: string
+      bootstrapServers:
+        title: Bootstrap Servers
+        description: Comma separated list of Kafka Broker URLs
+        type: string
+      valueSerializer:
+        title: Value Serializer
+        description: Serliazer class for value that implements the Serializer interface.
+        type: string
+        default: "io.apicurio.registry.serde.avro.AvroKafkaSerializer"
+      apicurioRegistryUrl:
+        title: Apicurio Registry URL
+        description: The Apicurio Schema Registry URL
+        type: string
+        x-descriptors:
+        - urn:keda:metadata:apicurioRegistryUrl
+        - urn:keda:required
+      avroDatumProvider:
+        title: Avro Datum Provider
+        description: How to write data with Avro
+        type: string
+        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:kafka"
+    - "mvn:io.apicurio:apicurio-registry-serdes-avro-serde:2.4.12.Final"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[key]}"
+            steps:
+            - set-header:
+                name: kafka.KEY
+                simple: "${header[key]}"
+          - simple: "${header[ce-key]}"
+            steps:
+            - set-header:
+                name: kafka.KEY
+                simple: "${header[ce-key]}"
+      - choice:
+          when:
+          - simple: "${header[partition-key]}"
+            steps:
+            - set-header:
+                name: kafka.PARTITION_KEY
+                simple: "${header[partition-key]}"
+          - simple: "${header[ce-partitionkey]}"
+            steps:
+            - set-header:
+                name: kafka.PARTITION_KEY
+                simple: "${header[ce-partitionkey]}"
+      - to:
+          uri: "kafka:{{topic}}"
+          parameters:
+            brokers: "{{bootstrapServers}}"
+            valueSerializer: "{{valueSerializer}}"
+            additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
+            additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"