Single K8S Node Of Deploying SDNC Cluster POC

It's a reference of how to deploy sdnc cluster under
single node k8s environment.

Currently the config of nfs for mysql db only
supports one k8s node. For mutiple nodes, because
of dockernfs mount, nfs provisioner has conflict with
it, which fails mount operation of SDNC pod.

Also, if SDNC needs to fully utilize mysql cluster under
k8s, in core project, DbLibService.java should be enhanced
to support that writing to master only and reading from them.

Issue-ID: SDNC-163
Change-Id: I85ad327f2fe04fe8e9a135289d7c25a917234438
Signed-off-by: Hao Kuang <Hao.Kuang@amdocs.com>
diff --git a/kubernetes/sdnc/templates/sdnc-statefulset.yaml b/kubernetes/sdnc/templates/sdnc-statefulset.yaml
new file mode 100644
index 0000000..3ba37af
--- /dev/null
+++ b/kubernetes/sdnc/templates/sdnc-statefulset.yaml
@@ -0,0 +1,109 @@
+#{{ if not .Values.disableSdncSdnc }}
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: sdnc
+  namespace: "{{ .Values.nsPrefix }}-sdnc"
+spec:
+  serviceName: "sdnhost-cluster"
+  replicas: {{ .Values.numberOfODLReplicas }}
+  podManagementPolicy: Parallel
+  selector:
+    matchLabels:
+      app: sdnc
+  template:
+    metadata:
+      labels:
+        app: sdnc
+      name: sdnc
+    spec:
+      initContainers:
+      - command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - sdnc-db-container
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: {{ .Values.image.readiness }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: sdnc-readiness
+      containers:
+      - command:
+        - bash
+        - "-c"
+        - |
+          sed -i 's/dbhost/sdnc-dbhost-0.dbhost.onap-sdnc.svc.cluster.local/g' /opt/onap/sdnc/data/properties/svclogic.properties
+          sed -i 's/^\(org.onap.ccsdk.sli.jdbc.hosts=\).*/\1sdnc-dbhost-0.dbhost.onap-sdnc.svc.cluster.local/' /opt/onap/sdnc/data/properties/dblib.properties
+          /opt/onap/sdnc/bin/startODL.sh
+        env:
+        - name: MYSQL_ROOT_PASSWORD
+          value: openECOMP1.0
+        - name: SDNC_CONFIG_DIR
+          value: /opt/onap/sdnc/data/properties
+        - name: ENABLE_ODL_CLUSTER
+          value: "{{ .Values.enableODLCluster }}"
+        - name: SDNC_REPLICAS
+          value: "{{ .Values.numberOfODLReplicas }}"
+        image: {{ .Values.image.sdnc }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: sdnc-controller-container
+        volumeMounts:
+        - mountPath: /etc/localtime
+          name: localtime
+          readOnly: true
+        - mountPath: /opt/onap/sdnc/data/properties/aaiclient.properties
+          name: sdnc-aaiclient-properties
+        - mountPath: /opt/onap/sdnc/data/properties/admportal.json
+          name: sdnc-admportal-json
+        - mountPath: /var/log/onap
+          name: sdnc-logs
+        - mountPath: /opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg
+          name: sdnc-log-config
+        ports:
+        - containerPort: 8181
+        - containerPort: 8101
+        - containerPort: 2550
+        - containerPort: 8080
+        readinessProbe:
+          tcpSocket:
+            port: 8181
+          initialDelaySeconds: 5
+          periodSeconds: 10
+      - image: {{ .Values.image.filebeat }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: filebeat-onap
+        volumeMounts:
+        - mountPath: /usr/share/filebeat/filebeat.yml
+          name: filebeat-conf
+        - mountPath: /var/log/onap
+          name: sdnc-logs
+        - mountPath: /usr/share/filebeat/data
+          name: sdnc-data-filebeat
+      volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: filebeat-conf
+          hostPath:
+            path: /dockerdata-nfs/{{ .Values.nsPrefix }}/log/filebeat/log4j/filebeat.yml
+        - name: sdnc-log-config
+          hostPath:
+            path: /dockerdata-nfs/{{ .Values.nsPrefix }}/log/sdnc/org.ops4j.pax.logging.cfg
+        - name: sdnc-logs
+          emptyDir: {}
+        - name: sdnc-data-filebeat
+          emptyDir: {}
+        - name: sdnc-aaiclient-properties
+          hostPath:
+            path: /dockerdata-nfs/{{ .Values.nsPrefix }}/sdnc/conf/aaiclient.properties
+        - name: sdnc-admportal-json
+          hostPath:
+            path: /dockerdata-nfs/{{ .Values.nsPrefix }}/sdnc/conf/admportal.json
+      imagePullSecrets:
+      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
+#{{ end }}