[COMMON] Adding Common Template for cassa-operator 40/134440/17
authordasarathi528024 <ds00528024@techmahindra.com>
Wed, 3 May 2023 09:51:20 +0000 (09:51 +0000)
committerAndreas Geissler <andreas-geissler@telekom.de>
Fri, 26 May 2023 06:48:39 +0000 (08:48 +0200)
- K8ssandraCluster resources template file added
- Modification of the cassandra chart to add the option to install
  cassandra using the k8ssandra-operator
- AAI and SDC values changed to support the new cassandra settings
- Fix for SDC cql version in jobs
- for London make k8ssandra-operator optional (default: false)

Issue-ID: OOM-3168
Signed-off-by: Dasarathi, Swain (ds00528024) <ds00528024@techmahindra.com>
Change-Id: Idfe232460c9c1f584536e60ea042345d7dca3164

22 files changed:
kubernetes/aai/values.yaml
kubernetes/common/cassandra/templates/backup/configmap.yaml
kubernetes/common/cassandra/templates/backup/cronjob.yaml
kubernetes/common/cassandra/templates/backup/pv.yaml
kubernetes/common/cassandra/templates/backup/pvc.yaml
kubernetes/common/cassandra/templates/cassOp.yaml [new file with mode: 0644]
kubernetes/common/cassandra/templates/configmap.yaml
kubernetes/common/cassandra/templates/ingress.yaml [new file with mode: 0644]
kubernetes/common/cassandra/templates/pv.yaml
kubernetes/common/cassandra/templates/secrets.yaml [new file with mode: 0644]
kubernetes/common/cassandra/templates/service.yaml
kubernetes/common/cassandra/templates/servicemonitor.yaml
kubernetes/common/cassandra/templates/statefulset.yaml
kubernetes/common/cassandra/values.yaml
kubernetes/common/common/templates/_cassOp.tpl [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/templates/job.yaml
kubernetes/sdc/components/sdc-cs/values.yaml
kubernetes/sdc/components/sdc-onboarding-be/templates/job.yaml
kubernetes/sdc/components/sdc-wfd-be/templates/job.yaml
kubernetes/sdc/resources/config/cqlshrc [new file with mode: 0644]
kubernetes/sdc/templates/configmap.yaml
kubernetes/sdc/values.yaml

index 58f1723..b162de7 100644 (file)
@@ -41,6 +41,12 @@ global: # global defaults
 
     #Service Name of the cassandra cluster to connect to.
     #Override it to aai-cassandra if localCluster is enabled.
+    #in case of using k8ssandra-operator in the common cassandra installation
+    #the service name is:
+    #serviceName: cassandra-dc1-service
+    #in case of local k8ssandra-operator instance it is
+    #serviceName: aai-cassandra-dc1-service
+    #in case the older cassandra installation is used:
     serviceName: cassandra
 
     #This should be same as shared cassandra instance or if localCluster is enabled
@@ -350,6 +356,10 @@ cassandra:
   persistence:
     mountSubPath: aai/cassandra
     enabled: true
+  k8ssandraOperator:
+    enabled: false
+    config:
+      clusterName: aai-cassandra
 
 readiness:
   initialDelaySeconds: 10
index 9bbc69b..b566b61 100644 (file)
@@ -13,6 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
+{{- if not .Values.k8ssandraOperator.enabled }}
 {{- if .Values.backup.enabled }}
 apiVersion: v1
 kind: ConfigMap
@@ -28,3 +29,4 @@ data:
 {{ tpl (.Files.Glob "resources/restore.sh").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/exec.py").AsConfig . | indent 2 }}
 {{- end -}}
+{{- end -}}
index 27f3cc6..e2f675a 100644 (file)
@@ -14,6 +14,8 @@
 # limitations under the License.
 */}}
 {{- if .Values.backup.enabled }}
+{{- if .Values.k8ssandraOperator.enabled }}
+{{ else }}
 apiVersion: batch/v1beta1
 kind: CronJob
 metadata:
@@ -243,3 +245,4 @@ spec:
             persistentVolumeClaim:
               claimName: {{ include "common.fullname" . }}-backup-data
 {{- end -}}
+{{- end -}}
\ No newline at end of file
index 10c3100..23e4551 100644 (file)
@@ -14,6 +14,8 @@
 # limitations under the License.
 */}}
 {{- if .Values.backup.enabled }}
+{{- if .Values.k8ssandraOperator.enabled }}
+{{ else }}
 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
 {{- if eq "True" (include "common.needPV" .) -}}
 ---
@@ -39,3 +41,4 @@ spec:
 {{- end -}}
 {{- end -}}
 {{- end -}}
+{{- end -}}
index 6fd5361..e60a1db 100644 (file)
@@ -14,6 +14,8 @@
 # limitations under the License.
 */}}
 {{- if .Values.backup.enabled }}
+{{- if .Values.k8ssandraOperator.enabled }}
+{{ else }}
 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
 ---
 kind: PersistentVolumeClaim
@@ -39,3 +41,4 @@ spec:
   storageClassName: {{ include "common.storageClass" . }}
 {{- end -}}
 {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/cassandra/templates/cassOp.yaml b/kubernetes/common/cassandra/templates/cassOp.yaml
new file mode 100644 (file)
index 0000000..cb6ce4a
--- /dev/null
@@ -0,0 +1,19 @@
+{{/*
+# Copyright © 2018 Amdocs, AT&T, 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.
+*/}}
+
+{{- if .Values.k8ssandraOperator.enabled }}
+{{ include "common.k8ssandraCluster" . }}
+{{- end }}
\ No newline at end of file
index ab08c82..8f2b39e 100644 (file)
@@ -1,3 +1,4 @@
+{{- if not .Values.k8ssandraOperator.enabled }}
 {{- if .Values.configOverrides }}
 apiVersion: v1
 kind: ConfigMap
@@ -25,3 +26,4 @@ metadata:
     heritage: {{ .Release.Service }}
 data:
 {{ tpl (.Files.Glob "resources/config/docker-entrypoint.sh").AsConfig . | indent 2 }}
+{{- end }}
\ No newline at end of file
diff --git a/kubernetes/common/cassandra/templates/ingress.yaml b/kubernetes/common/cassandra/templates/ingress.yaml
new file mode 100644 (file)
index 0000000..97d6155
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright (C) 2023 Deutsche Telekom
+#
+# 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.
+*/}}
+
+{{ include "common.ingress" . }}
index a0d998c..8e2ad66 100644 (file)
@@ -13,5 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-
+{{- if not .Values.k8ssandraOperator.enabled }}
 {{ include "common.replicaPV" . }}
+{{- end }}
\ No newline at end of file
diff --git a/kubernetes/common/cassandra/templates/secrets.yaml b/kubernetes/common/cassandra/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..b776caf
--- /dev/null
@@ -0,0 +1,21 @@
+{{/*
+# Copyright © 2018 Amdocs, Bell Canada
+# Copyright © 2019 Samsung Electronics
+# Copyright © 2019-2020 Orange
+#
+# 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 .Values.k8ssandraOperator.enabled }}
+{{ include "common.secretFast" . }}
+{{- end }}
\ No newline at end of file
index 8934d41..092c677 100644 (file)
@@ -14,4 +14,6 @@
 # limitations under the License.
 */}}
 
+{{- if not .Values.k8ssandraOperator.enabled }}
 {{ include "common.headlessService" . }}
+{{- end }}
\ No newline at end of file
index 5297e69..759586f 100644 (file)
@@ -14,6 +14,8 @@
 # limitations under the License.
 */}}
 
+{{- if not .Values.k8ssandraOperator.enabled }}
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
+{{- end }}
 {{- end }}
\ No newline at end of file
index 43367ee..2e73309 100644 (file)
@@ -14,6 +14,7 @@
 # limitations under the License.
 */}}
 
+{{- if not .Values.k8ssandraOperator.enabled }}
 apiVersion: apps/v1
 kind: StatefulSet
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
@@ -214,3 +215,4 @@ spec:
           requests:
             storage: {{ .Values.persistence.size | quote }}
   {{- end }}
+{{- end }}
\ No newline at end of file
index 43ff171..13137a1 100644 (file)
@@ -22,6 +22,53 @@ global: # global defaults
     backup:
       mountPath: /dockerdata-nfs/backup
 
+k8ssandraOperator:
+  enabled: false
+  cassandraVersion: 4.0.1
+  persistence:
+    storageClassName: default
+    size: 10Gi
+  config:
+    clusterName: cassandra
+    secretName: &secretName cassandra-default-user
+    superuserName: &superusername cassandra
+    superuserPassword: &superuserpassword cassandra
+    casOptions:
+      authorizer: AllowAllAuthorizer
+    jvmOptions:
+      heapSize: 512M
+    hostNetwork: false
+  datacenters:
+    - name: dc1
+      size: 3
+  stargate:
+    tag: v1.0.76
+    size: 1
+    jvmOptions:
+      heapSize: 384Mi
+
+#################################################################
+# Secrets metaconfig
+# used to store the default superuser for k8ssandra-operator
+#################################################################
+secrets:
+  - uid: *secretName
+    type: genericKV
+    externalSecret: '{{ tpl (default "" .Values.k8ssandraOperator.config.userCredentialsExternalSecret) . }}'
+    envs:
+      - name: username
+        value: *superusername
+      - name: password
+        value: *superuserpassword
+
+ingress:
+  enabled: false
+  service:
+    - baseaddr: "reaper-dc1"
+      path: "/webui"
+      name: "cassandra-dc1-reaper-service"
+      port: 8080
+
 # application image
 image: cassandra:3.11.4
 pullPolicy: Always
@@ -108,9 +155,6 @@ podManagementPolicy: OrderedReady
 updateStrategy:
   type: RollingUpdate
 
-ingress:
-  enabled: false
-
 persistence:
   enabled: true
 
diff --git a/kubernetes/common/common/templates/_cassOp.tpl b/kubernetes/common/common/templates/_cassOp.tpl
new file mode 100644 (file)
index 0000000..f1fc75c
--- /dev/null
@@ -0,0 +1,51 @@
+{{/* Cassandra Data Center. */}}
+{{- define "common.k8ssandraCluster" -}}
+{{- $global := .Values.global }}
+---
+apiVersion: k8ssandra.io/v1alpha1
+kind: K8ssandraCluster
+metadata:
+  name: {{ .Values.k8ssandraOperator.config.clusterName }}
+spec:
+  reaper:
+    containerImage:
+      registry: {{ include "repositoryGenerator.dockerHubRepository" . }}
+    heapSize: 512Mi
+    autoScheduling:
+      enabled: true
+  stargate:
+    containerImage:
+      registry: {{ include "repositoryGenerator.dockerHubRepository" . }}
+      tag: {{ .Values.k8ssandraOperator.stargate.tag }}
+    size: {{ .Values.k8ssandraOperator.stargate.size }}
+    heapSize: {{ .Values.k8ssandraOperator.stargate.jvmOptions.heapSize }}
+  cassandra:
+    serverVersion: {{ .Values.k8ssandraOperator.cassandraVersion }}
+    storageConfig:
+      cassandraDataVolumeClaimSpec:
+        storageClassName: {{ .Values.k8ssandraOperator.persistence.storageClassName }}
+        accessModes:
+          - ReadWriteOnce
+        resources:
+          requests:
+            storage: {{ .Values.k8ssandraOperator.persistence.size }}
+    superuserSecretRef:
+      name: {{ include "common.fullname" . }}-{{ .Values.k8ssandraOperator.config.secretName }}
+    config:
+      {{ if .Values.k8ssandraOperator.config.casOptions -}}
+      cassandraYaml:
+        {{ toYaml .Values.k8ssandraOperator.config.casOptions | nindent 8 }}
+      {{- end }}
+      {{ if .Values.k8ssandraOperator.config.jvmOptions -}}
+      jvmOptions:
+        {{ toYaml .Values.k8ssandraOperator.config.jvmOptions | nindent 8 }}
+      {{- end }}
+    networking:
+      hostNetwork: {{ .Values.k8ssandraOperator.config.hostNetwork }}
+    datacenters:
+      {{- range $datacenter := .Values.k8ssandraOperator.datacenters }}
+      - metadata:
+          name: {{ $datacenter.name }}
+        size: {{ $datacenter.size }}
+      {{- end }}
+{{ end }}
index 31ab047..e8f8700 100644 (file)
@@ -64,6 +64,8 @@ spec:
           mountPath: /home/sdc/chef-solo/environments/
         - name: {{ include "common.fullname" . }}-chef-cache
           mountPath: /home/sdc/chef-solo/cache
+        - name: {{ include "common.fullname" . }}-cqlshrc
+          mountPath: /home/sdc/.cassandra
         env:
         - name: ENVNAME
           value: {{ .Values.env.name }}
@@ -98,6 +100,9 @@ spec:
           defaultMode: 0755
       - name: {{ include "common.fullname" . }}-chef-cache
         emptyDir: {}
+      - name: {{ include "common.fullname" . }}-cqlshrc
+        configMap:
+          name: {{ include "common.release" . }}-sdc-cqlshrc
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
       restartPolicy: Never
index f58fca7..2f943d7 100644 (file)
@@ -26,12 +26,22 @@ global:
     #should be sdc-cs if this flag is enabled
     localCluster: false
     #The cassandra service name to connect to (default: shared cassandra service)
+    #in case of using k8ssandra-operator in the common cassandra installation
+    #the service name is:
+    #serviceName: cassandra-dc1-service
+    #in case of local k8ssandra-operator instance it is
+    #serviceName: sdc-cs-dc1-service
+    #in case the older cassandra installation is used:
     serviceName: cassandra
+
     #Shared cassandra cluster replicaCount, should be changed if localCluster is enabled
     #to match with its own cluster replica
     replicaCount: 3
     clusterName: cassandra
+    #datacenter name (use "dc1" in case of k8ssandra-operator, otherwise "Pod")
     dataCenter: Pod
+    #cqlVersion for cassandra 3.11.* must be "3.4.4" and cassandra 4.* must be "3.4.5"
+    cqlVersion: "3.4.4"
 
 #################################################################
 # Application configuration defaults.
@@ -48,6 +58,10 @@ cassandra:
   persistence:
     mountSubPath: sdc/sdc-cs/CS
     enabled: true
+  k8ssandraOperator:
+    enabled: false
+    config:
+      clusterName: sdc-cs
 
 # application image
 repository: nexus3.onap.org:10001
index 41996ff..43a4902 100644 (file)
@@ -65,6 +65,8 @@ spec:
         volumeMounts:
         - name: {{ include "common.fullname" . }}-environments
           mountPath: /home/sdc/chef-solo/environments/
+        - name: {{ include "common.fullname" . }}-cqlshrc
+          mountPath: /home/sdc/.cassandra
         env:
         - name: ENVNAME
           value: {{ .Values.env.name }}
@@ -96,6 +98,9 @@ spec:
         configMap:
           name: {{ include "common.release" . }}-sdc-environments-configmap
           defaultMode: 0755
+      - name: {{ include "common.fullname" . }}-cqlshrc
+        configMap:
+          name: {{ include "common.release" . }}-sdc-cqlshrc
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
       restartPolicy: Never
index 9ba05b8..b9abef8 100644 (file)
@@ -65,6 +65,9 @@ spec:
         - /bin/sh
         - -c
         {{- end }}
+        volumeMounts:
+          - name: {{ include "common.fullname" . }}-cqlshrc
+            mountPath: /home/sdc/.cassandra
         env:
           - name: CS_HOST
             value: "{{ .Values.global.sdc_cassandra.serviceName }}"
@@ -78,6 +81,10 @@ spec:
             valueFrom: {secretKeyRef: {name: {{ include "common.release" . }}-sdc-cs-secrets, key: sdc_password}}
         resources: {{ include "common.resources" . | nindent 10 }}
       {{ include "common.waitForJobContainer" . | indent 6 | trim }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-cqlshrc
+          configMap:
+            name: {{ include "common.release" . }}-sdc-cqlshrc
       imagePullSecrets:
         - name: "{{ include "common.namespace" . }}-docker-registry-key"
 {{ end }}
diff --git a/kubernetes/sdc/resources/config/cqlshrc b/kubernetes/sdc/resources/config/cqlshrc
new file mode 100644 (file)
index 0000000..cb6df94
--- /dev/null
@@ -0,0 +1,2 @@
+[cql]
+version={{.Values.global.sdc_cassandra.cqlVersion}}
\ No newline at end of file
index 712f2ec..dee73ba 100644 (file)
@@ -28,4 +28,17 @@ metadata:
 data:
 {{ tpl (.Files.Glob "resources/config/environments/*").AsConfig . | indent 2 }}
 ---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-cqlshrc
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/cqlshrc").AsConfig . | indent 2 }}
+---
 {{ include "common.log.configMap" . }}
index cba3362..955ac4b 100644 (file)
@@ -26,20 +26,28 @@ global:
     keystore_password: PyhrUCFZdXIhWyohWTUhRV5mKFpLYzMx
     wf_external_user_password: S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
   sdc_cassandra:
-   #This flag allows SDC to instantiate its own cluster, serviceName
-   #should be "sdc-cs" if this flag is enabled
-   localCluster: false
-   #The cassandra service name to connect to (default: shared cassandra service)
-   serviceName: cassandra
-   #Shared cassandra cluster replicaCount, should be changed if localCluster is enabled
-   #to match with its own cluster replica
-   #see "cassandra: replicaCount" in file sdc-cs/values.yaml)
-   replicaCount: 3
-   dbCache: true
-   readConsistencyLevel: ONE
-   writeConsistencyLevel: ALL
-   clusterName: cassandra
-   dataCenter: Pod
+    #This flag allows SDC to instantiate its own cluster, serviceName
+    #should be "sdc-cs" if this flag is enabled
+    localCluster: false
+    #The cassandra service name to connect to (default: shared cassandra service)
+    #in case of using k8ssandra-operator in the common cassandra installation
+    #the service name is:
+    #serviceName: cassandra-dc1-service
+    #in case the older cassandra installation is used:
+    serviceName: cassandra
+    #Shared cassandra cluster replicaCount, should be changed if localCluster is enabled
+    #to match with its own cluster replica
+    #see "cassandra: replicaCount" in file sdc-cs/values.yaml)
+    replicaCount: 3
+    dbCache: true
+    readConsistencyLevel: ONE
+    writeConsistencyLevel: ALL
+    clusterName: cassandra
+    #datacenter name (use "dc1" in case of k8ssandra-operator, otherwise "Pod")
+    dataCenter: Pod
+    #cqlVersion for cassandra 3.11.* must be "3.4.4" and cassandra 4.* must be "3.4.5"
+    cqlVersion: "3.4.4"
+
   centralizedLoggingEnabled: true
   # global Kafka config passed to sdc-be chart
   kafka: