ZooKeeper and Kafka deployment changes 38/74338/9
authorsunil unnava <sunil.unnava@att.com>
Thu, 6 Dec 2018 14:50:39 +0000 (09:50 -0500)
committersunil unnava <su622b@att.com>
Mon, 17 Dec 2018 19:55:05 +0000 (19:55 +0000)
Support creation of ZooKeeper Ensemble and Multiple Kafka Brokers

Issue-ID: DMAAP-899
Change-Id: Id2318a3e9ff03c60222142169bb9e900e26f2577
Signed-off-by: sunil unnava <sunil.unnava@att.com>
15 files changed:
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml [new file with mode: 0644]
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/pv.yaml
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/pvc.yaml [deleted file]
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/service.yaml
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/statefulset.yaml [moved from kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/deployment.yaml with 62% similarity]
kubernetes/dmaap/charts/message-router/charts/message-router-kafka/values.yaml
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml [new file with mode: 0644]
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/pv.yaml
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/pvc.yaml [deleted file]
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/service.yaml
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/statefulset.yaml [moved from kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/deployment.yaml with 55% similarity]
kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/values.yaml
kubernetes/dmaap/charts/message-router/resources/config/dmaap/MsgRtrApi.properties
kubernetes/dmaap/charts/message-router/templates/statefulset.yaml [moved from kubernetes/dmaap/charts/message-router/templates/deployment.yaml with 98% similarity]
kubernetes/dmaap/charts/message-router/values.yaml

diff --git a/kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml b/kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml
new file mode 100644 (file)
index 0000000..0bc64e7
--- /dev/null
@@ -0,0 +1,28 @@
+# Copyright © 2018  AT&T
+#
+# Licensed 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: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "common.fullname" . }}-pdb
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "common.fullname" . }}
+  maxUnavailable: 1
index bf372b3..44c9576 100644 (file)
@@ -1,6 +1,4 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
+# Copyright © 2018 Amdocs, Bell Canada, AT&T
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # 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.
-*/}}
 
+{{- $root := . -}}
 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolume
+{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }}
+---
 apiVersion: v1
+kind: PersistentVolume
 metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
+  name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }}
+  namespace: {{ $root.Release.Namespace }}
   labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-    name: {{ include "common.fullname" . }}
+    app: {{ $root.Values.service.name }}
+    chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }}
+    release: {{ $root.Release.Name }}
+    heritage: {{ $root.Release.Service }}
 spec:
   capacity:
-    storage: {{ .Values.persistence.size }}
+    storage: {{ $root.Values.persistence.size }}
   accessModes:
-    - {{ .Values.persistence.accessMode }}
-  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
+    - {{ $root.Values.persistence.accessMode }}
   hostPath:
-    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}
-{{- end -}}
+    path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }}
+  persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }}
+{{ end }}
+{{ end }}
+
diff --git a/kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/pvc.yaml b/kubernetes/dmaap/charts/message-router/charts/message-router-kafka/templates/pvc.yaml
deleted file mode 100644 (file)
index 1deed4e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
-#
-# Licensed 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.
-*/}}
-
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolumeClaim
-apiVersion: v1
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-{{- if .Values.persistence.annotations }}
-  annotations:
-{{ toYaml .Values.persistence.annotations | indent 4 }}
-{{- end }}
-spec:
-  selector:
-    matchLabels:
-      name: {{ include "common.fullname" . }}
-  accessModes:
-    - {{ .Values.persistence.accessMode }}
-  resources:
-    requests:
-      storage: {{ .Values.persistence.size }}
-{{- if .Values.persistence.storageClass }}
-{{- if (eq "-" .Values.persistence.storageClass) }}
-  storageClassName: ""
-{{- else }}
-  storageClassName: "{{ .Values.persistence.storageClass }}"
-{{- end }}
-{{- end }}
-{{- end -}}
index a88cbc4..88de96b 100644 (file)
@@ -24,10 +24,13 @@ metadata:
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
+  type: {{ .Values.service.type }}
   ports:
     - port: {{ .Values.service.externalPort }}
       targetPort: {{ .Values.service.internalPort }}
       name: {{ .Values.service.portName }}
+  clusterIP: None
   selector:
     app: {{ include "common.name" . }}
     release: {{ .Release.Name }}
+
@@ -13,8 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-apiVersion: extensions/v1beta1
-kind: Deployment
+apiVersion: apps/v1beta1
+kind: StatefulSet
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
@@ -24,32 +24,30 @@ metadata:
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
+  serviceName: {{ .Values.service.name }}
   replicas: {{ .Values.replicaCount }}
+  podManagementPolicy: Parallel
   template:
     metadata:
       labels:
         app:  {{ include "common.name" . }}
         release: {{ .Release.Name }}
     spec:
+      podAntiAffinity:
+         preferredDuringSchedulingIgnoredDuringExecution:
+         - weight: 1
+           podAffinityTerm:
+             labelSelector:
+                matchExpressions:
+                  - key: "app"
+                    operator: In
+                    values:
+                    - {{ include "common.name" . }}
+             topologyKey: "kubernetes.io/hostname"
       initContainers:
-      - name: {{ include "common.name" . }}-seed-kafka-topics
-        command:
-        - /bin/bash
-        - -c
-        - >
-          if [ -d /tmp/topics/ECOMP-PORTAL-INBOX-0 ]; then
-          echo "nothing to do";
-          else
-          git clone -b {{ .Values.config.gerritBranch }} --single-branch {{ .Values.config.gerritProject }} /tmp/gerrit;
-          echo "Clone complete. Copying from /tmp/gerrit/oom-projects/data-kafka/kafka-logs/* to /tmp/topics";
-          cp -var /tmp/gerrit/oom-topics/data-kafka/kafka-logs/* /tmp/topics;
-          echo "Done.";
-          fi
+      - name: {{ include "common.name" . }}-initcontainer
         image: "{{ .Values.global.ubuntuInitRepository }}/{{ .Values.ubuntuInitImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /tmp/topics
-          name: kafka-data
       - command:
         - /root/ready.py
         args:
@@ -72,7 +70,7 @@ spec:
 {{ include "common.resources" . | indent 12 }}
         ports:
         - containerPort: {{ .Values.service.internalPort }}
-        {{ if eq .Values.liveness.enabled true }}
+       {{ if eq .Values.liveness.enabled true }}
         livenessProbe:
           tcpSocket:
             port: {{ .Values.service.internalPort }}
@@ -85,18 +83,36 @@ spec:
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         env:
+        - name: HOST_NAME
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.name
+        - name: HOST_NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
         - name: KAFKA_ZOOKEEPER_CONNECT
           value: "{{.Values.zookeeper.name}}:{{.Values.zookeeper.port}}"
         - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
           value: "INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT"
         - name: KAFKA_ADVERTISED_LISTENERS
-          value: "INTERNAL_PLAINTEXT://{{ include "common.servicename" .  }}:{{.Values.service.internalPort}}"
+          value: "INTERNAL_PLAINTEXT://$(HOST_NAME).{{ .Values.service.name }}.$(HOST_NAMESPACE).svc.cluster.local:{{ .Values.service.internalPort}}"
         - name: KAFKA_LISTENERS
           value: "INTERNAL_PLAINTEXT://0.0.0.0:{{.Values.service.internalPort}}"
         - name: KAFKA_INTER_BROKER_LISTENER_NAME
           value: "INTERNAL_PLAINTEXT"
         - name: KAFKA_LOG_DIRS
-          value: "/kafka/logs"
+          value: "kafka/logs"
+        - name: BROKER_ID_COMMAND
+          value: "hostname | awk -F '-' '{print $NF}'"
+        - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
+          value: "{{ .Values.replicaCount }}"
+        - name: KAFKA_DEFAULT_REPLICATION_FACTOR
+          value: "{{ .Values.replicaCount }}"
+        - name: KAFKA_NUM_PARTITIONS
+          value: "{{ .Values.defaultpartitions }}"
         volumeMounts:
         - mountPath: /etc/localtime
           name: localtime
@@ -112,8 +128,30 @@ spec:
       - name: docker-socket
         hostPath:
           path: /var/run/docker.sock
+{{ if not .Values.persistence.enabled }}
       - name: kafka-data
-        persistentVolumeClaim:
-          claimName: {{ include "common.fullname" . }}
+        emptyDir: {}
+{{ else }}
+  volumeClaimTemplates:
+    - metadata:
+        name: kafka-data
+        labels:
+          app: {{ include "common.fullname" . }}
+          chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+          release: "{{ .Release.Name }}"
+          heritage: "{{ .Release.Service }}"
+      spec:
+        accessModes:
+          - {{ .Values.persistence.accessMode | quote }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+        selector:
+          matchLabels:
+            release: "{{ .Release.Name }}"
+            app: {{ .Values.service.name }}
+            chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+            heritage: "{{ .Release.Service }}"
+{{ end }}
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
index 43c4d3a..6569729 100644 (file)
@@ -41,16 +41,12 @@ zookeeper:
 # flag to enable debugging - application support required
 debugEnabled: false
 
-# application configuration
-config:
-  # gerrit branch where the latest code is checked in
-  gerritBranch: 3.0.0-ONAP
-  # gerrit project where the latest code is checked in
-  gerritProject: http://gerrit.onap.org/r/dmaap/messagerouter/messageservice.git
+# default number of instances
+replicaCount: 3
 
+# defult partitions
+defaultpartitions: 3
 
-# default number of instances
-replicaCount: 1
 
 nodeSelector: {}
 
@@ -92,7 +88,7 @@ persistence:
   mountSubPath: message-router/data-kafka
 
 service:
-  type: NodePort
+  type: ClusterIP
   name: message-router-kafka
   portName: message-router-kafka
   internalPort: 9092
@@ -120,3 +116,4 @@ resources:
       cpu: 1000m
       memory: 2Gi
   unlimited: {}
+
diff --git a/kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml b/kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml
new file mode 100644 (file)
index 0000000..0bc64e7
--- /dev/null
@@ -0,0 +1,28 @@
+# Copyright © 2018  AT&T
+#
+# Licensed 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: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "common.fullname" . }}-pdb
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "common.fullname" . }}
+  maxUnavailable: 1
index bf372b3..44c9576 100644 (file)
@@ -1,6 +1,4 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
+# Copyright © 2018 Amdocs, Bell Canada, AT&T
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # 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.
-*/}}
 
+{{- $root := . -}}
 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolume
+{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }}
+---
 apiVersion: v1
+kind: PersistentVolume
 metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
+  name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }}
+  namespace: {{ $root.Release.Namespace }}
   labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-    name: {{ include "common.fullname" . }}
+    app: {{ $root.Values.service.name }}
+    chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }}
+    release: {{ $root.Release.Name }}
+    heritage: {{ $root.Release.Service }}
 spec:
   capacity:
-    storage: {{ .Values.persistence.size }}
+    storage: {{ $root.Values.persistence.size }}
   accessModes:
-    - {{ .Values.persistence.accessMode }}
-  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
+    - {{ $root.Values.persistence.accessMode }}
   hostPath:
-    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}
-{{- end -}}
+    path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }}
+  persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }}
+{{ end }}
+{{ end }}
+
diff --git a/kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/pvc.yaml b/kubernetes/dmaap/charts/message-router/charts/message-router-zookeeper/templates/pvc.yaml
deleted file mode 100644 (file)
index 1deed4e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
-#
-# Licensed 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.
-*/}}
-
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolumeClaim
-apiVersion: v1
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-{{- if .Values.persistence.annotations }}
-  annotations:
-{{ toYaml .Values.persistence.annotations | indent 4 }}
-{{- end }}
-spec:
-  selector:
-    matchLabels:
-      name: {{ include "common.fullname" . }}
-  accessModes:
-    - {{ .Values.persistence.accessMode }}
-  resources:
-    requests:
-      storage: {{ .Values.persistence.size }}
-{{- if .Values.persistence.storageClass }}
-{{- if (eq "-" .Values.persistence.storageClass) }}
-  storageClassName: ""
-{{- else }}
-  storageClassName: "{{ .Values.persistence.storageClass }}"
-{{- end }}
-{{- end }}
-{{- end -}}
index 06bf063..da494b0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
+# Copyright © 2018 Amdocs, AT&T, Bell Canada
 # Modifications Copyright © 2018 AT&T
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,10 +24,15 @@ metadata:
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
+  type: {{ .Values.service.type }}
   ports:
-    - port: {{ .Values.service.internalPort }}
-      name: {{ .Values.service.name }}
+   - port: {{ .Values.service.clientPort }}
+     name: {{ .Values.service.clientPortName }}
+   - port: {{ .Values.service.serverPort }}
+     name: {{ .Values.service.serverPortName }}
+   - port: {{ .Values.service.leaderElectionPort }}
+     name: {{ .Values.service.leaderElectionPortName }}
+  clusterIP: None
   selector:
     app: {{ include "common.name" . }}
-    release: {{ .Release.Name }}
 clusterIP: None
+    release: {{ .Release.Name }}
No newline at end of file
@@ -13,8 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-apiVersion: extensions/v1beta1
-kind: Deployment
+apiVersion: apps/v1beta1
+kind: StatefulSet
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
@@ -24,15 +24,32 @@ metadata:
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
+  serviceName: {{ .Values.service.name }}
   replicas: {{ .Values.replicaCount }}
+  updateStrategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: {{ .Values.maxUnavailable }}
+  podManagementPolicy: Parallel
   template:
     metadata:
       labels:
         app: {{ include "common.name" . }}
         release: {{ .Release.Name }}
     spec:
+      podAntiAffinity:
+         preferredDuringSchedulingIgnoredDuringExecution:
+         - weight: 1
+           podAffinityTerm:
+             labelSelector:
+                matchExpressions:
+                  - key: "app"
+                    operator: In
+                    values:
+                    - {{ include "common.name" . }}
+             topologyKey: "kubernetes.io/hostname"
       initContainers:
-      - name: {{ include "common.name" . }}-seed-zookeeper-topics
+      - name: {{ include "common.name" . }}-seed-topics-apikeys
         command:
         - /bin/bash
         - -c
@@ -57,31 +74,73 @@ spec:
         resources:
 {{ include "common.resources" . | indent 12 }}
         ports:
-        - containerPort: {{ .Values.service.internalPort }}
+        - containerPort: {{ .Values.service.clientPort }}
+          name: {{ .Values.service.clientPortName }}
+        - containerPort: {{ .Values.service.serverPort }}
+          name: {{ .Values.service.serverPortName }}
+        - containerPort: {{ .Values.service.leaderElectionPort }}
+          name: {{ .Values.service.leaderElectionPortName }}
         {{ if eq .Values.liveness.enabled true }}
         livenessProbe:
-          tcpSocket:
-            port: {{ .Values.service.internalPort }}
+          exec:
+            command:
+            - sh
+            - -c
+            - "zookeeper-ready.sh 2181"
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
         {{ end }}
         readinessProbe:
-          tcpSocket:
-            port: {{ .Values.service.internalPort }}
+          exec:
+            command:
+            - sh
+            - -c
+            - "zookeeper-ready.sh 2181"
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
+        env:
+        - name: ZK_REPLICAS
+          value: "{{ .Values.replicaCount }}"
+        - name: ZK_INIT_LIMIT
+          value: "{{ .Values.zk.initLimit }}"
+        - name: ZK_SYNC_LIMIT
+          value: "{{ .Values.zk.syncLimit }}"
         volumeMounts:
         - mountPath: /etc/localtime
           name: localtime
           readOnly: true
-        - mountPath: /opt/zookeeper-3.4.9/data
+        - mountPath: /var/lib/zookeeper/data
           name: zookeeper-data
       volumes:
       - name: localtime
         hostPath:
           path: /etc/localtime
+{{ if not .Values.persistence.enabled }}
       - name: zookeeper-data
-        persistentVolumeClaim:
-          claimName: {{ include "common.fullname" .  }}
+        emptyDir: {}
+{{ else }}
+  volumeClaimTemplates:
+    - metadata:
+        name:  zookeeper-data
+        labels:
+          app:  {{ include "common.fullname" . }}
+          chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+          release: "{{ .Release.Name }}"
+          heritage: "{{ .Release.Service }}"
+      spec:
+        accessModes:
+          - {{ .Values.persistence.accessMode | quote }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+        selector:
+          matchLabels:
+            release: "{{ .Release.Name }}"
+            app: {{ .Values.service.name }}
+            chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+            heritage: "{{ .Release.Service }}"
+{{ end }}
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
+
+
index 05963ab..7b9e9eb 100644 (file)
@@ -29,8 +29,8 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-repository: docker.io
-image: wurstmeister/zookeeper:latest
+repository: nexus3.onap.org:10001
+image: onap/dmaap/zookeeper:1.0.0
 pullPolicy: Always
 ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
 
@@ -40,12 +40,12 @@ debugEnabled: false
 # application configuration
 config:
   # gerrit branch where the latest code is checked in
-  gerritBranch: 3.0.0-ONAP
+  gerritBranch: master
   # gerrit project where the latest code is checked in
   gerritProject: http://gerrit.onap.org/r/dmaap/messagerouter/messageservice.git
 
 # default number of instances
-replicaCount: 1
+replicaCount: 3
 
 nodeSelector: {}
 
@@ -63,6 +63,11 @@ readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
 
+#Zookeeper properties
+zk:
+ initLimit: 5
+ syncLimit: 2
+
 ## Persist data to a persitent volume
 persistence:
   enabled: true
@@ -84,13 +89,21 @@ persistence:
   accessMode: ReadWriteMany
   size: 2Gi
   mountPath: /dockerdata-nfs
-  mountSubPath: message-router/data-zookeeper/
+  mountSubPath: message-router/data-zookeeper
+
 
+rollingUpdate:
+  maxUnavailable: 1
 service:
-  type: NodePort
+  type: ClusterIP
   name: message-router-zookeeper
   portName: message-router-zookeeper
-  internalPort: 2181
+  clientPortName: client
+  clientPort: 2181
+  serverPortName: server
+  serverPort: 2888
+  leaderElectionPortName: leader-election
+  leaderElectionPort: 3888
 
 ingress:
   enabled: false
index 99eaeb2..d40d2a1 100755 (executable)
@@ -1,5 +1,4 @@
-###############################################################################
-#  ============LICENSE_START=======================================================
+# LICENSE_START=======================================================
 #  org.onap.dmaap
 #  ================================================================================
 #  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
@@ -122,7 +121,7 @@ cambria.consumer.cache.touchFreqMs=120000
 ## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
 ## which is not always adequate.) You can set this value explicitly here.
 ##
-cambria.api.node.identifier=message-router
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
 
 #cambria.rateLimit.maxEmptyPollsPerMinute=30
 #cambria.rateLimitActual.delay.ms=10
@@ -138,7 +137,9 @@ cambria.api.node.identifier=message-router
 #metrics.send.cambria.sendEverySeconds=60
 
 cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
-
+consumer.timeout=17
+default.partitions=3
+default.replicas=3
 ##############################################################################
 #100mb
 maxcontentlength=10000
@@ -165,4 +166,5 @@ msgRtr.mirrormaker.consumerid=1
 kafka.max.poll.interval.ms=300000
 kafka.heartbeat.interval.ms=60000
 kafka.session.timeout.ms=240000
-kafka.max.poll.records=1000
\ No newline at end of file
+kafka.max.poll.records=1000
+
@@ -12,8 +12,8 @@
 # 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: extensions/v1beta1
-kind: Deployment
+apiVersion: apps/v1beta1
+kind: StatefulSet
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
index bd1c660..5d01e55 100644 (file)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/dmaap/dmaap-mr:1.1.8
+image: onap/dmaap/dmaap-mr:1.1.9
 pullPolicy: Always
 
 kafka:
@@ -53,14 +53,14 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 120
+  initialDelaySeconds: 70
   periodSeconds: 10
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
 
 readiness:
-  initialDelaySeconds: 120
+  initialDelaySeconds: 70
   periodSeconds: 10
 
 service: