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

commit 8f71007eda47ff124dc5785e64bea347efdd8d34
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Fri Feb 23 11:15:31 2024 +0100

    Added a Kafka Apicurio Sink secured with Keycloak Kamelet
    
    Signed-off-by: Andrea Cosentino <anco...@gmail.com>
---
 ...not-secured-apicurio-registry-sink.kamelet.yaml | 162 +++++++++++++++++++++
 1 file changed, 162 insertions(+)

diff --git 
a/library/camel-kamelets/src/main/resources/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
 
b/library/camel-kamelets/src/main/resources/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
new file mode 100644
index 00000000..cfb05337
--- /dev/null
+++ 
b/library/camel-kamelets/src/main/resources/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
@@ -0,0 +1,162 @@
+# ---------------------------------------------------------------------------
+# 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-not-secured-apicurio-registry-sink
+  annotations:
+    camel.apache.org/kamelet.support.level: "Stable"
+    camel.apache.org/catalog.version: "4.5.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  secured with 
Keycloak."
+    description: |-
+      Send data to Kafka topics on an insecure broker with Apicurio Registry 
secured with Keycloak.
+
+      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
+      - apicurioAuthServiceUrl
+      - apicurioAuthRealm
+      - apicurioAuthClientId
+      - apicurioAuthClientSecret
+      - apicurioAuthUsername
+      - apicurioAuthPassword
+    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"
+      apicurioAuthServiceUrl:
+        title: Apicurio Registry Auth Service URL
+        description: The URL for Keycloak instance securing the Apicurio 
Registry
+        type: string
+        example: "http://my-keycloak.com:8080/";
+      apicurioAuthRealm:
+        title: Apicurio Registry Auth Realm
+        description: The Realm in Keycloak instance securing the Apicurio 
Registry
+        type: string
+      apicurioAuthClientId:
+        title: Apicurio Registry Auth Client ID
+        description: The Client ID in Keycloak instance securing the Apicurio 
Registry
+        type: string
+      apicurioAuthClientSecret:
+        title: Apicurio Registry Auth Client Secret
+        description: The Client Secret in Keycloak instance securing the 
Apicurio Registry
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+        - urn:keda:authentication:password
+        - urn:keda:required
+      apicurioAuthUsername:
+        title: Apicurio Registry Auth Username
+        description: The Username in Keycloak instance securing the Apicurio 
Registry
+        type: string
+      apicurioAuthPassword:
+        title: Apicurio Registry Auth Password
+        description: The Password in Keycloak instance securing the Apicurio 
Registry
+        type: string
+        format: password
+        x-descriptors:
+        - urn:camel:group:credentials
+        - urn:keda:authentication:password
+        - urn:keda:required
+  dependencies:
+    - "camel:core"
+    - "camel:kamelet"
+    - "camel:kafka"
+    - "mvn:io.apicurio:apicurio-registry-serdes-avro-serde:2.4.14.Final"
+  template:
+    from:
+      uri: "kamelet:source"
+      steps:
+      - choice:
+          when:
+          - simple: "${header[key]}"
+            steps:
+            - setHeader:
+                name: kafka.KEY
+                simple: "${header[key]}"
+          - simple: "${header[ce-key]}"
+            steps:
+            - setHeader:
+                name: kafka.KEY
+                simple: "${header[ce-key]}"
+      - choice:
+          when:
+          - simple: "${header[partition-key]}"
+            steps:
+            - setHeader:
+                name: kafka.PARTITION_KEY
+                simple: "${header[partition-key]}"
+          - simple: "${header[ce-partitionkey]}"
+            steps:
+            - setHeader:
+                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}}"
+            additionalProperties.apicurio.auth.service.url: 
"{{apicurioAuthServiceUrl}}"
+            additionalProperties.apicurio.auth.realm: "{{apicurioAuthRealm}}"
+            additionalProperties.apicurio.auth.client.id: 
"{{apicurioAuthClientId}}"
+            additionalProperties.apicurio.auth.client.secret: 
"{{apicurioAuthClientSecret}}"
+            additionalProperties.apicurio.auth.username: 
"{{apicurioAuthUsername}}"
+            additionalProperties.apicurio.auth.password: 
"{{apicurioAuthPassword}}"

Reply via email to