From fd15548aa48f0ea5a8c80addd16746fa99ca5a89 Mon Sep 17 00:00:00 2001 From: wrider Date: Mon, 5 Aug 2019 23:57:57 -0400 Subject: [PATCH] Add back removed sub-charts Change-Id: I2e788c2ccbbfed376f3ec47b0d4bc933ee84ee22 Signed-off-by: wrider --- bin/verify-ric-charts | 4 +- .../charts/message-router-kafka/.helmignore | 21 +++ .../charts/message-router-kafka/Chart.yaml | 23 +++ .../templates/poddisruptionbudget.yaml | 28 ++++ .../charts/message-router-kafka/templates/pv.yaml | 39 +++++ .../message-router-kafka/templates/service-hs.yaml | 34 ++++ .../message-router-kafka/templates/service.yaml | 39 +++++ .../templates/statefulset.yaml | 179 +++++++++++++++++++++ .../charts/message-router-kafka/values.yaml | 140 ++++++++++++++++ .../charts/message-router-zookeeper/.helmignore | 21 +++ .../charts/message-router-zookeeper/Chart.yaml | 22 +++ .../templates/_zkquorum.tpl | 34 ++++ .../templates/poddisruptionbudget.yaml | 28 ++++ .../message-router-zookeeper/templates/pv.yaml | 39 +++++ .../templates/service.yaml | 38 +++++ .../templates/statefulset.yaml | 150 +++++++++++++++++ .../charts/message-router-zookeeper/values.yaml | 138 ++++++++++++++++ 17 files changed, 975 insertions(+), 2 deletions(-) create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/.helmignore create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/Chart.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/pv.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service-hs.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/statefulset.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/values.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/.helmignore create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/Chart.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/pv.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/service.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/statefulset.yaml create mode 100644 ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/values.yaml diff --git a/bin/verify-ric-charts b/bin/verify-ric-charts index 1f2ae499..2978e8ae 100755 --- a/bin/verify-ric-charts +++ b/bin/verify-ric-charts @@ -38,8 +38,8 @@ echo "***************************************" for dir in "${CHART_ARRAY[@]}" do - rm -rf $dir/charts - rm -rf $dir/tmpcharts + #rm -rf $dir/charts + #rm -rf $dir/tmpcharts mkdir -p $dir/charts cp $TEMP_DIR/ric-common*.tgz $dir/charts/ diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/.helmignore b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/.helmignore new file mode 100644 index 00000000..f0c13194 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/Chart.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/Chart.yaml new file mode 100644 index 00000000..50be1b4d --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/Chart.yaml @@ -0,0 +1,23 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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: v1 +description: ONAP Message Router Kafka Service +name: message-router-kafka +version: 1.1.0 + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml new file mode 100644 index 00000000..5c2db8c1 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/poddisruptionbudget.yaml @@ -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.name" . }} + maxUnavailable: 1 diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/pv.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/pv.yaml new file mode 100644 index 00000000..44c9576a --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/pv.yaml @@ -0,0 +1,39 @@ +# 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. +# 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. + +{{- $root := . -}} +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }} +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }} + namespace: {{ $root.Release.Namespace }} + labels: + app: {{ $root.Values.service.name }} + chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }} + release: {{ $root.Release.Name }} + heritage: {{ $root.Release.Service }} +spec: + capacity: + storage: {{ $root.Values.persistence.size }} + accessModes: + - {{ $root.Values.persistence.accessMode }} + hostPath: + path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }} + persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }} +{{ end }} +{{ end }} + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service-hs.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service-hs.yaml new file mode 100644 index 00000000..0dabe55e --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service-hs.yaml @@ -0,0 +1,34 @@ +# 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. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + ports: + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.portName }} + clusterIP: None + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service.yaml new file mode 100644 index 00000000..8200eda6 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright © 2019 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. + +{{- $root := . -}} +{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ $root.Values.service.name }}-{{ $i }} + namespace: {{ $root.Release.Namespace }} + labels: + app: {{ $root.Values.service.name }} + chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }} + release: {{ $root.Release.Name }} + heritage: {{ $root.Release.Service }} + +spec: + type: {{ $root.Values.service.type }} + externalTrafficPolicy: Local + selector: + statefulset.kubernetes.io/pod-name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }} + ports: + - port: {{ $root.Values.service.externalPort }} + targetPort: {{ $root.Values.service.externalPort }} + nodePort: {{ $root.Values.service.baseNodePort | add $i }} + name: {{ $root.Values.service.name }}-{{ $i }} +{{ end }} diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/statefulset.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/statefulset.yaml new file mode 100644 index 00000000..0e38ed5a --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/templates/statefulset.yaml @@ -0,0 +1,179 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + 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: + {{if eq .Values.podAntiAffinityType "hard" -}} + requiredDuringSchedulingIgnoredDuringExecution: + {{- else -}} + preferredDuringSchedulingIgnoredDuringExecution: + {{- end}} + - weight: 1 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: "app" + operator: In + values: + - {{ include "common.name" . }} + topologyKey: "kubernetes.io/hostname" + {{- if .Values.nodeAffinity }} + nodeAffinity: + {{ toYaml .Values.nodeAffinity | indent 10 }} + {{- end }} + initContainers: + - name: {{ include "common.name" . }}-initcontainer + image: "{{ .Values.global.ubuntuInitRepository }}/{{ .Values.ubuntuInitImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + - command: + - sh + - -exec + - | + chown -R 1000:1000 /opt/kafka/data; + image: "{{ .Values.busyBoxRepository }}/{{ .Values.busyBoxImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /opt/kafka/data + name: kafka-data + name: {{ include "common.name" . }}-permission-fixer + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.onapRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: + - sh + - -exc + - | + export KAFKA_BROKER_ID=${HOSTNAME##*-} && \ + export ENDPOINT_PORT=$(( $KAFKA_BROKER_ID + {{ .Values.service.baseNodePort }} )) && \ + export KAFKA_ADVERTISED_LISTENERS=EXTERNAL_SASL_PLAINTEXT://$(HOST_IP):$(( $KAFKA_BROKER_ID + {{ .Values.service.baseNodePort }} )),INTERNAL_SASL_PLAINTEXT://:{{ .Values.service.internalPort }} && \ + exec start-kafka.sh + resources: +{{ include "common.resources" . | indent 12 }} + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.externalPort }} + {{ if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: HOST_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.hostIP + - name: KAFKA_ZOOKEEPER_CONNECT + value: "{{.Values.zookeeper.name}}:{{.Values.zookeeper.port}}" + - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP + value: "INTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT,EXTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT" + - name: KAFKA_LISTENERS + value: "EXTERNAL_SASL_PLAINTEXT://0.0.0.0:{{ .Values.service.externalPort }},INTERNAL_SASL_PLAINTEXT://0.0.0.0:{{ .Values.service.internalPort }}" + - name: KAFKA_INTER_BROKER_LISTENER_NAME + value: "INTERNAL_SASL_PLAINTEXT" + - name: KAFKA_SASL_ENABLED_MECHANISMS + value: "PLAIN" + - name: KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL + value: "PLAIN" + - name: KAFKA_AUTHORIZER_CLASS_NAME + value: "{{ .Values.kafkaCustomAuthorizer }}" + - name: KAFKA_DELETE_TOPIC_ENABLE + value: "{{ .Values.deleteTopicEnable }}" + - name: aaf_locate_url + value: "https://aaf-locate:8095" + - name: KAFKA_LOG_DIRS + value: "/opt/kafka/data" + - 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 + readOnly: true + - mountPath: /var/run/docker.sock + name: docker-socket + - mountPath: /opt/kafka/data + name: kafka-data + {{- if .Values.tolerations }} + tolerations: + {{ toYaml .Values.tolerations | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: docker-socket + hostPath: + path: /var/run/docker.sock +{{ if not .Values.persistence.enabled }} + - name: kafka-data + 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" diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/values.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/values.yaml new file mode 100644 index 00000000..f765ebba --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-kafka/values.yaml @@ -0,0 +1,140 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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. # +################################################################################ + + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + persistence: {} + ubuntuInitRepository: registry.hub.docker.com + +################################################################# +# Application configuration defaults. +################################################################# +# application image +onapRepository: nexus3.onap.org:10001 +image: onap/dmaap/kafka111:1.0.0 +pullPolicy: Always +ubuntuInitImage: oomk8s/ubuntu-init:2.0.0 +busyBoxImage: busybox:1.30 +busyBoxRepository: docker.io + + +zookeeper: + name: message-router-zookeeper + port: 2181 + +# flag to enable debugging - application support required +debugEnabled: false + +# default number of instances +replicaCount: 3 + +#Kafka custom authorizer class name +kafkaCustomAuthorizer: org.onap.dmaap.kafkaAuthorize.KafkaCustomAuthorizer +deleteTopicEnable: true + +# To access Kafka outside cluster, this value must be set to hard and the number of nodes in K8S cluster must be equal or greater then replica count +podAntiAffinityType: soft + +# defult partitions +defaultpartitions: 3 + +nodeSelector: {} + +nodeAffinity: {} + +affinity: {} + +tolerations: {} + + + +# probe configuration parameters +liveness: + initialDelaySeconds: 60 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 60 + periodSeconds: 10 + +## Persist data to a persitent volume +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: message-router/data-kafka + +service: + type: NodePort + name: message-router-kafka + portName: message-router-kafka + internalPort: 9092 + externalPort: 9093 + baseNodePort: 30490 + + + +ingress: + enabled: false + +# Resource Limit flavor -By Default using small +flavor: small +# Segregation for Different environment (Small and Large) +resources: + small: + limits: + cpu: 2000m + memory: 4Gi + requests: + cpu: 100m + memory: 1Gi + large: + limits: + cpu: 4000m + memory: 8Gi + requests: + cpu: 200m + memory: 2Gi + unlimited: {} + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/.helmignore b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/.helmignore new file mode 100644 index 00000000..f0c13194 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/Chart.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/Chart.yaml new file mode 100644 index 00000000..5e9c6fa4 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/Chart.yaml @@ -0,0 +1,22 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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: v1 +description: ONAP Dmaap Message Router Zookeeper Service +name: message-router-zookeeper +version: 1.1.0 \ No newline at end of file diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl new file mode 100644 index 00000000..9af910eb --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl @@ -0,0 +1,34 @@ +{{/* +# Copyright © 2019 Amdocs, Bell Canada +# +# 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. +*/}} + +{{- /* + Calculate the maximum number of zk server down in order to guarantee ZK quorum. + For guaranteeing ZK quorum we need half of the server + 1 up. + + div in go template cast return an int64 + so we need to know if it is an even number or an odd. + For this we are doing (n/2)*2=n? + if true it is even else it is even +*/ -}} +{{- define "zk.maxUnavailable" -}} +{{- $halfReplica := div .Values.replicaCount 2 -}} + {{/* divide by 2 and multiply by 2 in order to know if it is an even number*/}} + {{if eq (mul $halfReplica 2) (int .Values.replicaCount) }} + {{- toYaml (sub $halfReplica 1) -}} + {{else}} + {{- toYaml $halfReplica -}} + {{end}} +{{- end -}} diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml new file mode 100644 index 00000000..5a370cdc --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml @@ -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.name" . }} + maxUnavailable: {{ include "zk.maxUnavailable" . }} diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/pv.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/pv.yaml new file mode 100644 index 00000000..44c9576a --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/pv.yaml @@ -0,0 +1,39 @@ +# 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. +# 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. + +{{- $root := . -}} +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }} +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }} + namespace: {{ $root.Release.Namespace }} + labels: + app: {{ $root.Values.service.name }} + chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }} + release: {{ $root.Release.Name }} + heritage: {{ $root.Release.Service }} +spec: + capacity: + storage: {{ $root.Values.persistence.size }} + accessModes: + - {{ $root.Values.persistence.accessMode }} + hostPath: + path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }} + persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }} +{{ end }} +{{ end }} + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/service.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/service.yaml new file mode 100644 index 00000000..da494b0b --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/service.yaml @@ -0,0 +1,38 @@ +# Copyright © 2018 Amdocs, AT&T, 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. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - 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 }} \ No newline at end of file diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/statefulset.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/statefulset.yaml new file mode 100644 index 00000000..61f0a35e --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/templates/statefulset.yaml @@ -0,0 +1,150 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + 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" + {{- if .Values.nodeAffinity }} + nodeAffinity: + {{ toYaml .Values.nodeAffinity | indent 10 }} + {{- end }} + initContainers: + - name: {{ include "common.name" . }}-permission-fixer + command: + - sh + - -exec + - > + chown -R 1000:1000 /tmp/zookeeper/apikeys; + image: "{{ .Values.busyBoxRepository }}/{{ .Values.busyBoxImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /tmp/zookeeper/apikeys + name: zookeeper-data + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.onapRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + resources: +{{ include "common.resources" . | indent 12 }} + ports: + - 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: + exec: + command: + - sh + - -c + - "zookeeper-ready.sh 2181" + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + 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: /var/lib/zookeeper/data + name: zookeeper-data + {{- if .Values.tolerations }} + tolerations: + {{ toYaml .Values.tolerations | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime +{{ if not .Values.persistence.enabled }} + - name: zookeeper-data + 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" + + diff --git a/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/values.yaml b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/values.yaml new file mode 100644 index 00000000..c93dd697 --- /dev/null +++ b/ric-aux/80-Auxiliary-Functions/helm/message-router/charts/message-router-zookeeper/values.yaml @@ -0,0 +1,138 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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. # +################################################################################ + + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + ubuntuInitRepository: registry.hub.docker.com + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# +# application image +onapRepository: nexus3.onap.org:10001 +image: onap/dmaap/zookeeper:5.0.0 +pullPolicy: Always +ubuntuInitImage: oomk8s/ubuntu-init:2.0.0 +busyBoxImage: busybox:1.30 +busyBoxRepository: docker.io + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + # gerrit branch where the latest code is checked in + 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: 3 + +nodeSelector: {} + +nodeAffinity: {} + +affinity: {} + +tolerations: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +#Zookeeper properties +zk: + initLimit: 5 + syncLimit: 2 + +## Persist data to a persitent volume +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: message-router/data-zookeeper + + +rollingUpdate: + maxUnavailable: 1 +service: + type: ClusterIP + name: message-router-zookeeper + portName: message-router-zookeeper + clientPortName: client + clientPort: 2181 + serverPortName: server + serverPort: 2888 + leaderElectionPortName: leader-election + leaderElectionPort: 3888 + +ingress: + enabled: false + +# Resource Limit flavor -By Default using small +flavor: small +# Segregation for Different environment (Small and Large) +resources: + small: + limits: + cpu: 2000m + memory: 4Gi + requests: + cpu: 100m + memory: 1Gi + large: + limits: + cpu: 4000m + memory: 8Gi + requests: + cpu: 200m + memory: 2Gi + unlimited: {} -- 2.16.6