[PORTAL] Make Portal use generic Cassandra image 55/114655/16
authorGrzegorz-Lis <grzegorz.lis@nokia.com>
Fri, 6 Nov 2020 12:37:36 +0000 (12:37 +0000)
committerKrzysztof Kosewski <krzysztof.kosewski@nokia.com>
Fri, 8 Jan 2021 10:35:30 +0000 (10:35 +0000)
Portal uses currently a customized, old Cassandra Image (cassandra_music:3.0.0)
 which doesn't support dual stack (IPv4 and IPv6).
Intention of this change is to replace this image with generic, bitnami image.

Issue-ID: PORTAL-1037
Signed-off-by: Grzegorz Lis <grzegorz.lis@nokia.com>
Change-Id: I6d76a09328adc20b408f1e22fd608cd44b074712

kubernetes/portal/components/portal-cassandra/resources/config/cassandra/docker-entrypoint-initdb.d/portal.cql
kubernetes/portal/components/portal-cassandra/templates/deployment.yaml
kubernetes/portal/components/portal-cassandra/values.yaml

index 4fd368a..21715a9 100644 (file)
@@ -1,4 +1,5 @@
-// Copyright © 2018 Amdocs, Bell Canada, AT&T
+// Copyright (c) 2018 Amdocs, Bell Canada, AT&T
+// Modifications Copyright (c) 2020 Nokia
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -66,3 +67,6 @@ CREATE TABLE portal.spring_session_attributes (
     AND min_index_interval = 128
     AND read_repair_chance = 0.0
     AND speculative_retry = '99PERCENTILE';
+
+CREATE TABLE portal.health_check (primary_id text PRIMARY KEY, creation_time text);
+insert into portal.health_check (primary_id,creation_time) values ('ECOMPPortal-25927','2018-05-25T20:14:39.408Z');
index 80197a6..84a78ab 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
+# Copyright (c) 2017 Amdocs, Bell Canada
+# Modifications Copyright (c) 2018 AT&T
+# Modifications Copyright (c) 2020 Nokia
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -38,8 +39,13 @@ spec:
     spec:
       containers:
       - name: {{ include "common.name" . }}
-        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /bin/bash
+        - -c
+        - |
+          /opt/bitnami/scripts/cassandra/entrypoint.sh /opt/bitnami/scripts/cassandra/run.sh
         ports:
         - containerPort: {{ .Values.service.internalPort }}
         - containerPort: {{ .Values.service.internalPort2 }}
@@ -51,37 +57,64 @@ spec:
           exec:
             command:
             - /bin/bash
-            - -c
-            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
+            - -ec
+            - |
+              nodetool status
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
+          successThreshold: {{ .Values.liveness.successThreshold }}
+          failureThreshold: {{ .Values.liveness.failureThreshold }}
         {{ end }}
         readinessProbe:
           exec:
             command:
             - /bin/bash
-            - -c
-            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
+            - -ec
+            - |
+              nodetool status | grep -E "^UN\\s+${POD_IP}"
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
+          successThreshold: {{ .Values.readiness.successThreshold }}
+          failureThreshold: {{ .Values.readiness.failureThreshold }}
+        lifecycle:
+          preStop:
+            exec:
+              command:
+              - bash
+              - -ec
+              - nodetool decommission
         env:
-          - name: CASSUSER
+          - name: CASSANDRA_USER
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "login") | indent 12}}
-          - name: CASSPASS
+          - name: CASSANDRA_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "password") | indent 12}}
-          - name: JVM_OPTS
-            value: "{{ .Values.config.cassandraJvmOpts }}"
           - name: POD_IP
             valueFrom:
               fieldRef:
                 fieldPath: status.podIP
+          - name: CASSANDRA_PASSWORD_SEEDER
+            value: "yes"
+          - name: BITNAMI_DEBUG
+            value: "true"
+          - name: CASSANDRA_CLUSTER_NAME
+            value: cassandra
+          - name: CASSANDRA_NUM_TOKENS
+            value: "256"
+          - name: CASSANDRA_DATACENTER
+            value: dc1
+          - name: CASSANDRA_ENDPOINT_SNITCH
+            value: SimpleSnitch
+          - name: CASSANDRA_RACK
+            value: rack1
+          - name: CASSANDRA_ENABLE_RPC
+            value: "true"
         volumeMounts:
         - mountPath: /etc/localtime
           name: localtime
           readOnly: true
         - name: cassandra-docker-entrypoint-initdb
-          mountPath: /docker-entrypoint-initdb.d/aaa_portal_single.cql
-          subPath: portal_single.cql
+          mountPath: /docker-entrypoint-initdb.d/aaa_portal.cql
+          subPath: portal.cql
         - name: {{ include "common.fullname" . }}-data
           mountPath: /var/lib/cassandra/data
         resources:
index a0488e5..ec76d08 100644 (file)
@@ -1,5 +1,6 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T
+# Copyright (c) 2017 Amdocs, Bell Canada
+# Modifications Copyright (c) 2018 AT&T
+# Modifications Copyright (c) 2020 Nokia
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,7 +23,7 @@ global: # global defaults
 
 
 # application image
-image: onap/music/cassandra_music:3.0.0
+image: bitnami/cassandra:3.11.9-debian-10-r30
 pullPolicy: Always
 
 #################################################################
@@ -56,10 +57,14 @@ liveness:
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
+  successThreshold: 1
+  failureThreshold: 3
 
 readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
+  successThreshold: 1
+  failureThreshold: 3
 
 ## Persist data to a persitent volume
 persistence: