[SDNC] oom for clustered disaggregated SDN-R 31/106331/22
authorAlexander Dehn <alexander.dehn@highstreet-technologies.com>
Tue, 21 Apr 2020 09:53:50 +0000 (09:53 +0000)
committerAlexander Dehn <alexander.dehn@highstreet-technologies.com>
Mon, 31 Aug 2020 13:24:40 +0000 (13:24 +0000)
use disaggregated elasticserach DB from common

Issue-ID: SDNC-1165
Signed-off-by: Alexander Dehn <alexander.dehn@highstreet-technologies.com>
Change-Id: I0c6ac6549f6c144f0ed5a64ae76a1fa352f740d2

51 files changed:
kubernetes/common/elasticsearch/components/data/templates/statefulset.yaml
kubernetes/common/elasticsearch/components/master/templates/statefulset.yaml
kubernetes/sdnc/.helmignore
kubernetes/sdnc/components/dmaap-listener/Chart.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/Chart.yaml with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/requirements.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/requirements.yaml with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/aai.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/aai.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/dblib.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/dblib.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/dhcpalert.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/dhcpalert.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-CMNotify.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/dmaap-consumer-CMNotify.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-a1Adapter-policy.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/dmaap-consumer-a1Adapter-policy.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-oofpcipoc.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/dmaap-consumer-oofpcipoc.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/resources/config/lcm.properties [moved from kubernetes/sdnc/charts/dmaap-listener/resources/config/lcm.properties with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/templates/configmap.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/templates/configmap.yaml with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/templates/deployment.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/templates/deployment.yaml with 92% similarity]
kubernetes/sdnc/components/dmaap-listener/templates/secret.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/templates/secret.yaml with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/templates/service.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/templates/service.yaml with 100% similarity]
kubernetes/sdnc/components/dmaap-listener/values.yaml [moved from kubernetes/sdnc/charts/dmaap-listener/values.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/.helmignore [moved from kubernetes/sdnc/charts/sdnc-ansible-server/.helmignore with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/Chart.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/Chart.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/requirements.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/requirements.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/resources/config/RestServer_config [moved from kubernetes/sdnc/charts/sdnc-ansible-server/resources/config/RestServer_config with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/templates/configmap.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/templates/configmap.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/templates/deployment.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/templates/deployment.yaml with 91% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/templates/secret.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/templates/secret.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/templates/service.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/templates/service.yaml with 90% similarity]
kubernetes/sdnc/components/sdnc-ansible-server/values.yaml [moved from kubernetes/sdnc/charts/sdnc-ansible-server/values.yaml with 100% similarity]
kubernetes/sdnc/components/sdnc-prom/templates/deployment.yaml
kubernetes/sdnc/components/sdnc-web/.helmignore [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/Chart.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/requirements.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/templates/service.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/values.yaml [new file with mode: 0644]
kubernetes/sdnc/components/ueb-listener/Chart.yaml [moved from kubernetes/sdnc/charts/ueb-listener/Chart.yaml with 100% similarity]
kubernetes/sdnc/components/ueb-listener/requirements.yaml [moved from kubernetes/sdnc/charts/ueb-listener/requirements.yaml with 100% similarity]
kubernetes/sdnc/components/ueb-listener/resources/config/dblib.properties [moved from kubernetes/sdnc/charts/ueb-listener/resources/config/dblib.properties with 100% similarity]
kubernetes/sdnc/components/ueb-listener/resources/config/ueb-listener.properties [moved from kubernetes/sdnc/charts/ueb-listener/resources/config/ueb-listener.properties with 100% similarity]
kubernetes/sdnc/components/ueb-listener/templates/configmap.yaml [moved from kubernetes/sdnc/charts/ueb-listener/templates/configmap.yaml with 100% similarity]
kubernetes/sdnc/components/ueb-listener/templates/deployment.yaml [moved from kubernetes/sdnc/charts/ueb-listener/templates/deployment.yaml with 91% similarity]
kubernetes/sdnc/components/ueb-listener/templates/secret.yaml [moved from kubernetes/sdnc/charts/ueb-listener/templates/secret.yaml with 100% similarity]
kubernetes/sdnc/components/ueb-listener/templates/service.yaml [moved from kubernetes/sdnc/charts/ueb-listener/templates/service.yaml with 100% similarity]
kubernetes/sdnc/components/ueb-listener/values.yaml [moved from kubernetes/sdnc/charts/ueb-listener/values.yaml with 100% similarity]
kubernetes/sdnc/requirements.yaml
kubernetes/sdnc/resources/config/conf/mountpoint-registrar.properties [new file with mode: 0644]
kubernetes/sdnc/resources/config/conf/mountpoint-state-provider.properties [new file with mode: 0644]
kubernetes/sdnc/templates/job.yaml
kubernetes/sdnc/templates/sdnrdb-init-job.yaml [new file with mode: 0755]
kubernetes/sdnc/templates/secrets.yaml
kubernetes/sdnc/templates/service.yaml
kubernetes/sdnc/templates/statefulset.yaml
kubernetes/sdnc/values.yaml

index 994b458..e1a56e3 100644 (file)
@@ -85,7 +85,7 @@ spec:
         {{- end }}
       {{- end }}
       containers:
-        - name: {{ include "common.name" . }}-elasticsearch
+        - name: {{ include "common.name" . }}-data
           image: {{ printf "%s/%s:%s" (include "common.repository" .)  .Values.image.imageName  .Values.image.tag }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           {{- if .Values.securityContext.enabled }}
index dfa3ccb..1b5e305 100644 (file)
@@ -83,7 +83,7 @@ spec:
         {{- end }}
       {{- end }}
       containers:
-        - name: {{ include "common.name" . }}-elasticsearch
+        - name: {{ include "common.name" . }}-master
           image: {{ printf "%s/%s:%s" (include "common.repository" .)  .Values.image.imageName  .Values.image.tag }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           {{- if .Values.securityContext.enabled }}
index f0c1319..23b8a59 100644 (file)
@@ -19,3 +19,5 @@
 .project
 .idea/
 *.tmproj
+# avoid 1MB limit
+components/
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   replicas: {{ .Values.replicaCount }}
+  selector: {{- include "common.selectors" . | nindent 4 }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       - command:
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   replicas: {{ .Values.replicaCount }}
+  selector: {{- include "common.selectors" . | nindent 4 }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       - command:
@@ -31,5 +31,5 @@ spec:
       targetPort: {{ .Values.service.internalPort }}
       name: {{ .Values.service.name }}
   selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}
index c702012..6c594eb 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   replicas: 1
+  selector: {{- include "common.selectors" . | nindent 4 }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       - command:
diff --git a/kubernetes/sdnc/components/sdnc-web/.helmignore b/kubernetes/sdnc/components/sdnc-web/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -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/kubernetes/sdnc/components/sdnc-web/Chart.yaml b/kubernetes/sdnc/components/sdnc-web/Chart.yaml
new file mode 100644 (file)
index 0000000..869f7fc
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright © 2020 highstreet technologies GmbH
+#
+# 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: SDN-C Web Server
+name: sdnc-web
+version: 6.0.0
diff --git a/kubernetes/sdnc/components/sdnc-web/requirements.yaml b/kubernetes/sdnc/components/sdnc-web/requirements.yaml
new file mode 100644 (file)
index 0000000..dcb280d
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright © 2020 highstreet technologies GmbH
+# Copyright © 2017 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.
+
+dependencies:
+  - name: common
+    version: ~6.x-0
+    repository: '@local'
+  - name: certInitializer
+    version: ~6.x-0
+    repository: '@local'
\ No newline at end of file
diff --git a/kubernetes/sdnc/components/sdnc-web/templates/deployment.yaml b/kubernetes/sdnc/components/sdnc-web/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..1121817
--- /dev/null
@@ -0,0 +1,96 @@
+# Copyright © 2020 highstreet technologies GmbH
+#
+# 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/v1
+kind: Deployment
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+spec:
+  serviceName: "sdnc-web"
+  replicas: {{ .Values.replicaCount }}
+  selector: {{- include "common.selectors" . | nindent 4 }}
+  template:
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    spec:
+      initContainers: {{ include "common.certInitializer.initContainer" . | indent 6 }}
+      - name: {{ include "common.name" . }}-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - {{ .Values.config.sdncChartName }}
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ include "common.repository" . }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports: {{- include "common.containerPorts" . | indent 10 }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{ if .Values.liveness.enabled }}
+          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: WEBPROTOCOL
+            value: {{ .Values.config.webProtocol }}
+          - name: WEBPORT
+            value: {{ .Values.config.webPort | quote }}
+          - name: SDNRPROTOCOL
+            value: {{ .Values.config.sdnrProtocol }}
+          - name: SDNRHOST
+            value: {{ .Values.config.sdnrHost }}.{{ include "common.namespace" . }}
+          - name: SDNRPORT
+            value: {{ .Values.config.sdnrPort | quote }}
+          - name: SSL_CERT_DIR
+            value: {{ .Values.config.sslCertDir }}
+          - name: SSL_CERTIFICATE
+            value: {{ .Values.config.sslCertiticate }}
+          - name: SSL_CERTIFICATE_KEY
+            value: {{ .Values.config.sslCertKey }}
+          volumeMounts:  {{ include "common.certInitializer.volumeMount" . | nindent 10 }}
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+
+          resources: {{ include "common.resources" . | nindent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      volumes: {{ include "common.certInitializer.volumes" . | nindent 6 }}
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/sdnc/components/sdnc-web/templates/service.yaml b/kubernetes/sdnc/components/sdnc-web/templates/service.yaml
new file mode 100644 (file)
index 0000000..216073e
--- /dev/null
@@ -0,0 +1,17 @@
+{{/* # Copyright © 2020 highstreet technologies GmbH
+# Copyright © 2017 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.
+*/}}
+{{- include "common.service" . -}}
+
diff --git a/kubernetes/sdnc/components/sdnc-web/values.yaml b/kubernetes/sdnc/components/sdnc-web/values.yaml
new file mode 100644 (file)
index 0000000..ebeb9ff
--- /dev/null
@@ -0,0 +1,125 @@
+# Copyright © 2020 highstreet technologies GmbH
+#
+# 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:
+  aafEnabled: true
+  nodePortPrefix: 322
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:2.0.2
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+  k8scluster: svc.cluster.local
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: "onap/sdnc-web-image:1.8.3"
+pullPolicy: Always
+
+config:
+  sdncChartName: sdnc
+  webProtocol: HTTPS
+  webPort: 8443
+  #sdnrProtocol: HTTPS
+  sdnrProtocol: HTTPS
+  #sdnrHost: "sdnc.onap"
+  sdnrHost: "sdnc"
+  sdnrPort: "8443"
+  sslCertDir: "/opt/app/osaaf/local/certs"
+  sslCertiticate: "cert.pem"
+  sslCertKey: "key.pem"
+
+
+#################################################################
+# aaf configuration defaults.
+#################################################################
+certInitializer:
+  nameOverride: sdnc-web-cert-initializer
+  fqdn: "sdnc"
+  app_ns: "org.osaaf.aaf"
+  fqi: "sdnc@sdnc.onap.org"
+  fqi_namespace: "org.onap.sdnc"
+  public_fqdn: "sdnc.onap.org"
+  aafDeployFqi: "deployer@people.osaaf.org"
+  aafDeployPass: demo123456!
+  cadi_latitude: "38.0"
+  cadi_longitude: "-72.0"
+  credsPath: /opt/app/osaaf/local
+  aaf_add_config: >
+    cd /opt/app/osaaf/local;
+    mkdir -p certs;
+    export $(/opt/app/aaf_config/bin/agent.sh local showpass | grep '^c' | xargs -0);
+    keytool -exportcert -rfc -file certs/cacert.pem -keystore {{ .Values.fqi_namespace }}.trust.jks -alias ca_local_0 -storepass $cadi_truststore_password;
+    openssl pkcs12 -in {{ .Values.fqi_namespace }}.p12 -out certs/cert.pem -passin pass:$cadi_keystore_password_p12 -passout pass:$cadi_keystore_password_p12;
+    cp {{ .Values.fqi_namespace }}.key certs/key.pem;
+    chmod -R 755 certs;
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 180
+  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
+
+service:
+  name: sdnc-web
+  suffix: service
+  type: NodePort
+  sessionAffinity: ClientIP
+  # for liveness and readiness probe only
+  # internalPort:
+  internalPort: 8443
+  ports:
+  - name: "sdnc-web"
+    port: "8443"
+    nodePort: "05"
+
+#ingress:
+#  enabled: false
+
+#Resource limit flavor -By default using small
+flavor: small
+#segregation for different environment (small and large)
+resources:
+  small:
+    limits:
+      cpu: 1
+      memory: 1Gi
+    requests:
+      cpu: 0.5
+      memory: 500Mi
+  large:
+    limits:
+      cpu: 2
+      memory: 2Gi
+    requests:
+      cpu: 1
+      memory: 1Gi
+  unlimited: {}
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   replicas: {{ .Values.replicaCount }}
+  selector: {{- include "common.selectors" . | nindent 4 }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       - command:
index c1d679b..fd57517 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright © 2017 Amdocs, Bell Canada
+# Copyright © 2017 Amdocs, Bell Canada,
+# Copyright © 2020 highstreet technologies GmbH
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,9 +26,11 @@ dependencies:
   - name: network-name-gen
     version: ~6.x-0
     repository: '@local'
+    condition: network-name-gen.enabled
   - name: dgbuilder
     version: ~6.x-0
     repository: '@local'
+    condition: dgbuilder.enabled
   - name: sdnc-prom
     version: ~6.x-0
     repository: '@local'
@@ -39,3 +42,24 @@ dependencies:
   - name: elasticsearch
     version: ~6.x-0
     repository: '@local'
+    condition: config.sdnr.enabled
+  # conditions for sdnc-subcharts
+  - name: dmaap-listener
+    version: ~6.x-0
+    repository: 'file://components/dmaap-listener/'
+    condition: sdnc.dmaap-listener.enabled,dmaap-listener.enabled
+  - name: ueb-listener
+    version: ~6.x-0
+    repository: 'file://components/ueb-listener/'
+    condition: sdnc.ueb-listener.enabled,ueb-listener.enabled
+  - name: sdnc-ansible-server
+    version: ~6.x-0
+    repository: 'file://components/sdnc-ansible-server/'
+    condition: sdnc.sdnc-ansible-server.enabled,sdnc-ansible-server.enabled
+  - name: sdnc-web
+    version: ~6.x-0
+    repository: 'file://components/sdnc-web/'
+    condition: sdnc.sdnc-web.enabled,sdnc-web.enabled
+
+
+
diff --git a/kubernetes/sdnc/resources/config/conf/mountpoint-registrar.properties b/kubernetes/sdnc/resources/config/conf/mountpoint-registrar.properties
new file mode 100644 (file)
index 0000000..a21ac04
--- /dev/null
@@ -0,0 +1,31 @@
+[general]
+dmaapEnabled={{.Values.config.sdnr.mountpointRegistrarEnabled | default "false"}}
+{{ if .Values.global.aafEnabled }}
+baseUrl=https://localhost:{{.Values.service.internalPort4}}
+{{- else }}
+baseUrl=http://localhost:{{.Values.service.internalPort}}
+{{- end }}
+sdnrUser=${ODL_ADMIN_USERNAME}
+sdnrPasswd=${ODL_ADMIN_PASSWORD}
+
+[fault]
+faultConsumerClass=org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.impl.DMaaPFaultVESMsgConsumer
+TransportType=HTTPNOAUTH
+host=message-router.{{.Release.Namespace}}:{{.Values.config.dmaapPort | default "3904"}}
+topic=unauthenticated.SEC_FAULT_OUTPUT
+contenttype=application/json
+group=myG
+id=C1
+timeout=50000
+limit=10000
+
+[pnfRegistration]
+pnfRegConsumerClass=org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.impl.DMaaPPNFRegVESMsgConsumer
+TransportType=HTTPNOAUTH
+host=message-router.{{.Release.Namespace}}:{{.Values.config.dmaapPort | default "3904"}}
+topic=unauthenticated.VES_PNFREG_OUTPUT
+contenttype=application/json
+group=myG
+id=C1
+timeout=50000
+limit=10000
diff --git a/kubernetes/sdnc/resources/config/conf/mountpoint-state-provider.properties b/kubernetes/sdnc/resources/config/conf/mountpoint-state-provider.properties
new file mode 100644 (file)
index 0000000..34f3cf9
--- /dev/null
@@ -0,0 +1,11 @@
+[general]
+dmaapEnabled={{.Values.config.sdnr.mountpointStateProviderEnabled | default "false"}}
+TransportType=HTTPNOAUTH
+host=message-router.{{.Release.Namespace}}:{{.Values.config.dmaapPort | default "3904"}}
+topic=unauthenticated.SDNR_MOUNTPOINT_STATE_INFO
+contenttype=application/json
+timeout=20000
+limit=10000
+maxBatchSize=100
+maxAgeMs=250
+MessageSentThreadOccurance=50
index bce94f3..30da604 100755 (executable)
@@ -1,3 +1,4 @@
+{{- if .Values.dgbuilder.enabled -}}
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada, AT&T
 #
@@ -165,3 +166,4 @@ spec:
       restartPolicy: Never
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
+{{- end -}}
diff --git a/kubernetes/sdnc/templates/sdnrdb-init-job.yaml b/kubernetes/sdnc/templates/sdnrdb-init-job.yaml
new file mode 100755 (executable)
index 0000000..190d26b
--- /dev/null
@@ -0,0 +1,102 @@
+# Copyright © 2020 highstreet technologies GmbH
+#
+# 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.config.sdnr.enabled -}}
+apiVersion: batch/v1
+kind: Job
+metadata: {{- include "common.resourceMetadata" (dict "suffix" "sdnrdb-init-job" "dot" . ) | nindent 2 }}
+spec:
+  backoffLimit: 20
+  template:
+    metadata: {{ include "common.templateMetadata" . | indent 6}}
+    spec:
+      initContainers:
+      {{ include "common.certInitializer.initContainer" . | indent 6 }}
+      {{ if .Values.global.aafEnabled }}
+      - name: {{ include "common.name" . }}-chown
+        image: "busybox"
+        command: ["sh", "-c", "chown -R {{ .Values.config.odlUid }}:{{ .Values.config.odlGid}} {{ .Values.certInitializer.credsPath }}"]
+        volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 10 }}
+      {{ end }}
+      - name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - {{.Values.elasticsearch.nameOverride}}-elasticsearch
+        - --container-name
+        - {{.Values.elasticsearch.nameOverride}}-nginx
+        - --container-name
+        - {{.Values.elasticsearch.nameOverride}}-master
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+      containers:
+      - name: {{ include "common.name" . }}-sdnrdb-init-job
+        image: "{{ include "common.repository" . }}/{{ .Values.image }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command: ["/bin/bash"]
+        args: ["-c", "{{ .Values.config.binDir }}/startODL.oom.sh"]
+        env:
+          - name: SDNC_AAF_ENABLED
+            value: "{{ .Values.global.aafEnabled}}"
+          - name: SDNC_HOME
+            value: "{{.Values.config.sdncHome}}"
+          - name: ETC_DIR
+            value: "{{.Values.config.etcDir}}"
+          - name: BIN_DIR
+            value: "{{.Values.config.binDir}}"
+          ## start sdnrdb parameter
+          - name: SDNRINIT
+            value: "true"
+          - name: SDNRDBURL
+            {{ if .Values.global.aafEnabled -}}
+            value: "https://{{ .Values.elasticsearch.service.name | default "sdnrdb"}}.{{.Release.Namespace}}:{{.Values.elasticsearch.service.port | default "9200"}}"
+            {{- else -}}
+            value: "http://{{ .Values.elasticsearch.service.name | default "sdnrdb"}}.{{.Release.Namespace}}:{{.Values.elasticsearch.service.port | default "9200"}}"
+            {{- end }}
+          - name: SDNRDBPARAMETER
+            value: "-k"
+        volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 10 }}
+        resources: {{ include "common.resources" . | nindent 12 }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
+      {{- end -}}
+      {{- if .Values.affinity }}
+      affinity: {{ toYaml .Values.affinity | nindent 10 }}
+      {{- end }}
+      volumes:
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+      - name: docker-entrypoint-initdb-d
+        emptyDir: {}
+      - name: bin
+        configMap:
+          name: {{ include "common.fullname" . }}-bin
+          defaultMode: 0755
+      - name: properties
+        configMap:
+          name: {{ include "common.fullname" . }}-properties
+          defaultMode: 0644
+{{ include "common.certInitializer.volumes" . | nindent 6 }}
+      restartPolicy: Never
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
+
+{{ end -}}
\ No newline at end of file
index 34932b7..916d47d 100644 (file)
@@ -13,5 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-
 {{ include "common.secretFast" . }}
index 741a15a..b434c40 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada
+# Copyright © 2020 highstreet technologies GmbH
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -48,9 +49,12 @@ spec:
       targetPort: {{ .Values.service.internalPort4 }}
       {{ end }}
       nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort4 }}
+      {{ if .Values.config.sdnr.enabled }}
+      Session Affinity:  ClientIP
+      {{ end }}
   selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}
 ---
 apiVersion: v1
 kind: Service
@@ -77,8 +81,8 @@ spec:
       port: {{ .Values.service.externalPort2 }}
       targetPort: {{ .Values.service.internalPort2 }}
   selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}
 ---
 apiVersion: v1
 kind: Service
@@ -96,8 +100,8 @@ spec:
      port: {{ .Values.service.clusterPort }}
   clusterIP: None
   selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}
   sessionAffinity: None
   type: ClusterIP
 
index 265d3af..3aab082 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-# Copyright © 2020 Samsung Electronics
+# Copyright © 2020 Samsung Electronics, highstreet technologies GmbH
 # Copyright © 2017 Amdocs, Bell Canada
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 
 apiVersion: apps/v1
 kind: StatefulSet
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   serviceName: {{ include "common.servicename" . }}-cluster
   replicas: {{ .Values.replicaCount }}
+  selector: {{- include "common.selectors" . | nindent 4 }}
   podManagementPolicy: Parallel
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       - command:
@@ -79,12 +70,18 @@ spec:
         image: "{{ .Values.global.envsubstImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-update-config
-
+      {{ if .Values.dgbuilder.enabled -}}
       - command:
         - /root/ready.py
         args:
+        {{ if or .Values.dgbuilder.enabled .Values.config.sdnr.enabled -}}
         - --container-name
         - {{ include "common.mariadbService" . }}
+        {{ end -}}
+        {{ if .Values.config.sdnr.enabled -}}
+        - --container-name
+        - {{ include "common.name" . }}-sdnrdb-init-job
+        {{ end -}}
         env:
         - name: NAMESPACE
           valueFrom:
@@ -94,7 +91,7 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
-
+        {{ end -}}
 {{ include "common.certInitializer.initContainer" . | indent 6 }}
 
       - name: {{ include "common.name" . }}-chown
@@ -115,8 +112,13 @@ spec:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{- if not .Values.config.sdnr.enabled }}
           command: ["/bin/bash"]
           args: ["-c", "/opt/onap/sdnc/bin/startODL.sh"]
+          {{ else }}
+          command: ["/bin/bash"]
+          args: ["-c", "{{ .Values.config.binDir }}/startODL.oom.sh"]
+          {{ end }}
           ports:
           - containerPort: {{ .Values.service.internalPort }}
           - containerPort: {{ .Values.service.internalPort2 }}
@@ -160,6 +162,22 @@ spec:
             value: "{{ .Values.config.javaHome}}"
           - name: KARAF_CONSOLE_LOG_LEVEL
             value: "{{ include "common.log.level" . }}"
+          - name: SDNRWT
+            value: "{{ .Values.config.sdnr.enabled | default "false"}}"
+          {{- if eq .Values.config.sdnr.mode "web" }}
+          - name: SDNRDM
+            value: "true"
+          {{- end }}
+          - name: SDNRONLY
+            value: "{{ .Values.config.sdnr.sdnronly | default "false" }}"
+          - name: SDNRDBURL
+            {{- $prefix := ternary "https" "http" .Values.global.aafEnabled}}
+            value: "{{$prefix}}://{{ .Values.elasticsearch.service.name | default "sdnrdb"}}.{{.Release.Namespace}}:{{.Values.elasticsearch.service.port | default "9200"}}"
+          {{- if .Values.config.sdnr.sdnrdbTrustAllCerts }}
+          - name: SDNRDBTRUSTALLCERTS
+            value: "true"
+          {{ end }}
+
           volumeMounts:
 {{ include "common.certInitializer.volumeMount" . | indent 10 }}
           - mountPath: /etc/localtime
@@ -211,6 +229,12 @@ spec:
           - mountPath: {{ .Values.config.odl.binDir }}/setenv
             name: properties
             subPath: setenv
+          - mountPath: {{ .Values.config.odl.etcDir }}/mountpoint-registrar.properties
+            name: properties
+            subPath: mountpoint-registrar.properties
+          - mountPath: {{ .Values.config.odl.etcDir }}/mountpoint-state-provider.properties
+            name: properties
+            subPath: mountpoint-state-provider.properties
           resources:
 {{ include "common.resources" . | indent 12 }}
         {{- if .Values.nodeSelector }}
index c01245a..8d6ef68 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright © 2020 Samsung Electronics
+# Copyright © 2020 Samsung Electronics, highstreet technologies GmbH
 # Copyright © 2017 Amdocs, Bell Canada
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -105,7 +105,6 @@ secrets:
     login: '{{ .Values.config.scaleoutUser }}'
     password: '{{ .Values.config.scaleoutPassword }}'
     passwordPolicy: required
-
 #################################################################
 # Application configuration defaults.
 #################################################################
@@ -167,7 +166,7 @@ config:
     etcDir: /opt/opendaylight/etc
     binDir: /opt/opendaylight/bin
     salConfigDir: /opt/opendaylight/system/org/opendaylight/controller/sal-clustering-config
-    salConfigVersion: 1.8.2
+    salConfigVersion: 1.9.1
     akka:
       seedNodeTimeout: 15s
       circuitBreaker:
@@ -186,6 +185,19 @@ config:
       maxGCPauseMillis: 100
       parallelGCThreads : 3
       numberGGLogFiles: 10
+        # enables sdnr functionality
+  sdnr:
+    enabled: true
+    # mode: web - SDNC contains device manager only plus dedicated webserver service for ODLUX (default),
+    # mode: dm - SDNC contains sdnr device manager + ODLUX components
+    mode: dm
+    # sdnronly: true starts sdnc container with odl and sdnrwt features only
+    sdnronly: false
+    sdnrdbTrustAllCerts: true
+    mountpointRegistrarEnabled: false
+    mountpointStateProviderEnabled: false
+
+
 
 # dependency / sub-chart configuration
 certInitializer:
@@ -205,6 +217,9 @@ certInitializer:
     cd /opt/app/osaaf/local;
     /opt/app/aaf_config/bin/agent.sh local showpass {{.Values.fqi}} {{ .Values.fqdn }} | grep cadi_keystore_password= | cut -d= -f 2 > {{ .Values.credsPath }}/.pass 2>&1
 
+# dependency / sub-chart configuration
+network-name-gen:
+  enabled: true
 mariadb-galera: &mariadbGalera
   nameOverride: sdnc-db
   config: &mariadbGaleraConfig
@@ -224,6 +239,7 @@ cds:
   enabled: false
 
 dmaap-listener:
+  enabled: true
   nameOverride: sdnc-dmaap-listener
   mariadb-galera:
     <<: *mariadbGalera
@@ -238,6 +254,7 @@ dmaap-listener:
     odlCredsExternalSecret: *odlCredsSecretName
 
 ueb-listener:
+  enabled: true
   mariadb-galera:
     <<: *mariadbGalera
     config:
@@ -251,6 +268,7 @@ ueb-listener:
     odlCredsExternalSecret: *odlCredsSecretName
 
 sdnc-ansible-server:
+  enabled: true
   config:
     restCredsExternalSecret: *ansibleSecretName
   mariadb-galera:
@@ -263,6 +281,7 @@ sdnc-ansible-server:
     internalPort: 8000
 
 dgbuilder:
+  enabled: true
   nameOverride: sdnc-dgbuilder
   config:
     db:
@@ -284,9 +303,14 @@ dgbuilder:
       - baseaddr: "sdnc-dgbuilder"
         name: "sdnc-dgbuilder"
         port: 3000
+      - baseaddr: "sdnc-web-service"
+        name: "sdnc-web-service"
+        port: 8443
     config:
       ssl: "redirect"
 
+
+
 # local elasticsearch cluster
 localElasticCluster: true
 elasticsearch:
@@ -298,7 +322,6 @@ elasticsearch:
     fqi: "sdnc@sdnc.onap.org"
   service:
     name: sdnrdb
-
   master:
     replicaCount: 3
     # dedicatednode: "yes"
@@ -307,16 +330,9 @@ elasticsearch:
     # handles master and data node functionality
     dedicatednode: "no"
     nameOverride: sdnrdb
-
-  curator:
-    enabled: true
-    nameOverride: sdnrdb
-  data:
-    enabled: true
-    replicaCount: 1
-    nameOverride: sdnrdb
-
-
+# enable
+sdnc-web:
+  enabled: false
 # default number of instances
 replicaCount: 1