From 69d4144a59301ed5b685297fb286e262b82c5ddf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de>
Date: Thu, 16 Jun 2022 13:52:18 +0200
Subject: [PATCH] Add custom schema registry

---
 .../kafka/schema-registry-deployment.yaml     | 59 +++++++++++++++++++
 .../kafka/schema-registry-service.yaml        | 14 +++++
 helm/values.yaml                              | 22 ++++++-
 3 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 helm/templates/kafka/schema-registry-deployment.yaml
 create mode 100644 helm/templates/kafka/schema-registry-service.yaml

diff --git a/helm/templates/kafka/schema-registry-deployment.yaml b/helm/templates/kafka/schema-registry-deployment.yaml
new file mode 100644
index 000000000..e59acdb7e
--- /dev/null
+++ b/helm/templates/kafka/schema-registry-deployment.yaml
@@ -0,0 +1,59 @@
+{{- if .Values.strimzi.schemaRegistry.enabled -}}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "theodolite.fullname" . }}-kafka-schema-registry
+  labels:
+    app: schema-registry
+spec:
+  replicas: {{ .Values.strimzi.schemaRegistry.replicaCount }}
+  selector:
+    matchLabels:
+      app: schema-registry
+  template:
+    metadata:
+      labels:
+        app: schema-registry
+    spec:
+      securityContext:
+      {{- if .Values.strimzi.schemaRegistry.securityContext }}
+{{ toYaml .Values.strimzi.schemaRegistry.securityContext | indent 8 }}
+      {{- end}}
+      containers:
+        - name: {{ template "theodolite.fullname" . }}-kafka-schema-registry-server
+          image: "{{ .Values.strimzi.schemaRegistry.image }}:{{ .Values.strimzi.schemaRegistry.imageTag }}"
+          imagePullPolicy: "{{ .Values.strimzi.schemaRegistry.imagePullPolicy }}"
+          ports:
+            - name: schema-registry
+              containerPort: {{ .Values.strimzi.schemaRegistry.servicePort }}
+              protocol: TCP
+          resources:
+{{ toYaml .Values.strimzi.schemaRegistry.resources | indent 12 }}
+          env:
+          - name: SCHEMA_REGISTRY_HOST_NAME
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          - name: SCHEMA_REGISTRY_LISTENERS
+            value: http://0.0.0.0:{{ .Values.strimzi.schemaRegistry.servicePort }}
+          - name: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS
+            value: {{ template "theodolite.fullname" . }}-kafka-kafka-bootstrap:9092
+          - name: SCHEMA_REGISTRY_KAFKASTORE_GROUP_ID
+            value: {{ template "theodolite.fullname" . }}
+          - name: SCHEMA_REGISTRY_MASTER_ELIGIBILITY
+            value: "true"
+          - name: SCHEMA_REGISTRY_HEAP_OPTS
+            value: "{{ .Values.strimzi.schemaRegistry.heapOptions }}"
+      {{- if .Values.strimzi.schemaRegistry.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.strimzi.schemaRegistry.nodeSelector | indent 8 }}
+      {{- end }}
+      {{- if .Values.strimzi.schemaRegistry.tolerations }}
+      tolerations:
+{{ toYaml .Values.strimzi.schemaRegistry.tolerations | indent 8 }}
+      {{- end }}
+      {{- if .Values.strimzi.schemaRegistry.affinity }}
+      affinity:
+{{ toYaml .Values.strimzi.schemaRegistry.affinity | indent 8 }}
+      {{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/helm/templates/kafka/schema-registry-service.yaml b/helm/templates/kafka/schema-registry-service.yaml
new file mode 100644
index 000000000..ccee27f47
--- /dev/null
+++ b/helm/templates/kafka/schema-registry-service.yaml
@@ -0,0 +1,14 @@
+{{- if .Values.strimzi.schemaRegistry.enabled -}}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "theodolite.fullname" . }}-kafka-schema-registry
+  labels:
+    app: schema-registry
+spec:
+  ports:
+    - name: schema-registry
+      port: {{ .Values.strimzi.schemaRegistry.servicePort }}
+  selector:
+    app: schema-registry
+{{- end }}
\ No newline at end of file
diff --git a/helm/values.yaml b/helm/values.yaml
index eb4cfc4b2..995408344 100644
--- a/helm/values.yaml
+++ b/helm/values.yaml
@@ -122,7 +122,7 @@ cp-helm-charts:
   ## Schema Registry
   ## ------------------------------------------------------
   cp-schema-registry:
-    enabled: true
+    enabled: false
     nodeSelector: {}
     image: confluentinc/cp-schema-registry
     imageTag: 5.4.0
@@ -194,6 +194,26 @@ strimzi:
   topicOperator:
     enabled: true
 
+  schemaRegistry:
+    enabled: true
+    replicaCount: 1
+    ## ref: https://hub.docker.com/r/confluentinc/cp-schema-registry/
+    image: confluentinc/cp-schema-registry
+    #imageTag: 6.1.0
+    imageTag: 5.4.0
+    imagePullPolicy: IfNotPresent
+    servicePort: 8081
+    heapOptions: "-Xms512M -Xmx512M"
+    resources: {}
+    nodeSelector: {}
+    tolerations: []
+    affinity: {}
+    securityContext:
+      runAsUser: 10001
+      runAsGroup: 10001
+      fsGroup: 10001
+      runAsNonRoot: true
+
 
 ###
 # Prometheus Monitoring Stack (Prometheus Operator)
-- 
GitLab