VOL-633: Update the single-node Voltha environment to support Kubernetes

Change-Id: Id105eb33463995401c61b365d222915d6c669aec
diff --git a/k8s/single-node/consul.yml b/k8s/single-node/consul.yml
new file mode 100644
index 0000000..ec980e8
--- /dev/null
+++ b/k8s/single-node/consul.yml
@@ -0,0 +1,106 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: consul
+  namespace: voltha
+  labels:
+    name: consul
+spec:
+  type: ClusterIP
+  clusterIP: None
+  ports:
+    - name: http
+      port: 8500
+      targetPort: 8500
+    - name: https
+      port: 8443
+      targetPort: 8443
+    - name: rpc
+      port: 8400
+      targetPort: 8400
+    - name: serflan-tcp
+      protocol: "TCP"
+      port: 8301
+      targetPort: 8301
+    - name: serflan-udp
+      protocol: "UDP"
+      port: 8301
+      targetPort: 8301
+    - name: serfwan-tcp
+      protocol: "TCP"
+      port: 8302
+      targetPort: 8302
+    - name: serfwan-udp
+      protocol: "UDP"
+      port: 8302
+      targetPort: 8302
+    - name: server
+      port: 8300
+      targetPort: 8300
+    - name: consuldns
+      port: 8600
+      targetPort: 8600
+  selector:
+    app: consul
+---
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: consul
+  namespace: voltha
+spec:
+  serviceName: consul
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: consul
+      annotations:
+        cni: "weave"
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+        - name: consul
+          image: "consul:0.9.2"
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+          args:
+            - "agent"
+            - "-server"
+            - "-bootstrap"
+            - "-config-dir=/consul/config"
+            - "-data-dir=/consul/data"
+            - "-bind=0.0.0.0"
+            - "-client=0.0.0.0"
+            - "-ui"
+            - "-raft-protocol=3"
+          lifecycle:
+            preStop:
+              exec:
+                command:
+                - /bin/sh
+                - -c
+                - consul leave
+          ports:
+            - containerPort: 8500
+              name: ui-port
+            - containerPort: 8400
+              name: alt-port
+            - containerPort: 53
+              name: udp-port
+            - containerPort: 8443
+              name: https-port
+            - containerPort: 8080
+              name: http-port
+            - containerPort: 8301
+              name: serflan
+            - containerPort: 8302
+              name: serfwan
+            - containerPort: 8600
+              name: consuldns
+            - containerPort: 8300
+              name: server
+
diff --git a/k8s/single-node/etcd_cluster.yml b/k8s/single-node/etcd_cluster.yml
new file mode 100644
index 0000000..b7e40c2
--- /dev/null
+++ b/k8s/single-node/etcd_cluster.yml
@@ -0,0 +1,9 @@
+apiVersion: "etcd.database.coreos.com/v1beta2"
+kind: "EtcdCluster"
+metadata:
+  name: etcd
+  namespace: voltha
+spec:
+  size: 1
+  version: "3.2.9"
+
diff --git a/k8s/single-node/fluentd.yml b/k8s/single-node/fluentd.yml
new file mode 100644
index 0000000..8a9c4df
--- /dev/null
+++ b/k8s/single-node/fluentd.yml
@@ -0,0 +1,43 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: fluentd
+  namespace: voltha
+spec:
+  clusterIP: None
+  selector:
+    app: fluentd
+  ports:
+  - protocol: TCP
+    port: 24224
+    targetPort: 24224
+---
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: fluentd
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: fluentd
+      annotations:
+        cni: "weave"
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+      - name: fluentd
+        image: fluent/fluentd:v0.12.42
+        volumeMounts:
+        - name: fluentd-log
+          mountPath: /fluentd/log
+        ports:
+        - containerPort: 24224
+      volumes:
+      - name: fluentd-log
+        hostPath:
+          path: /tmp/fluentd
+          type: Directory
+
diff --git a/k8s/single-node/kafka.yml b/k8s/single-node/kafka.yml
new file mode 100644
index 0000000..2d11968
--- /dev/null
+++ b/k8s/single-node/kafka.yml
@@ -0,0 +1,45 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: kafka
+  namespace: voltha
+spec:
+  clusterIP: None
+  selector:
+    app: kafka
+  ports:
+  - protocol: TCP
+    port: 9092
+    targetPort: 9092
+---
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: kafka
+  namespace: voltha
+spec:
+  serviceName: kafka
+  replicas: 1
+  selector:
+    matchLabels:
+      app: kafka
+  template:
+    metadata:
+      labels:
+        app: kafka
+      annotations:
+        cni: "weave"
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+      - name: kafka
+        image: wurstmeister/kafka:1.0.0
+        ports:
+        - containerPort: 9092
+        env:
+        - name: KAFKA_ADVERTISED_PORT
+          value: "9092"
+        - name: KAFKA_ZOOKEEPER_CONNECT
+          value: zoo:2181
+        - name: KAFKA_HEAP_OPTS
+          value: "-Xmx256M -Xms128M"
diff --git a/k8s/single-node/netconf.yml b/k8s/single-node/netconf.yml
new file mode 100644
index 0000000..acf6f00
--- /dev/null
+++ b/k8s/single-node/netconf.yml
@@ -0,0 +1,41 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: netconf
+  namespace: voltha
+spec:
+  selector:
+    app: netconf
+  clusterIP: None
+  ports:
+  - port: 830
+    targetPort: 830
+---
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: netconf
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: netconf
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+      - name: netconf
+        image: voltha-netconf
+        imagePullPolicy: Never
+        ports:
+        - containerPort: 830
+        env:
+        - name: NETCONF_PORT
+          value: "830"
+        args:
+        - "/netconf/netconf/main.py"
+        - "-v"
+        - "--consul=consul:8500"
+        - "--fluentd=fluentd:24224"
+        - "--grpc-endpoint=voltha:50555"
diff --git a/k8s/single-node/ofagent.yml b/k8s/single-node/ofagent.yml
new file mode 100644
index 0000000..6311ac6
--- /dev/null
+++ b/k8s/single-node/ofagent.yml
@@ -0,0 +1,34 @@
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: ofagent
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: ofagent
+      annotations:
+        cni: "weave"
+    spec:
+      terminationGracePeriodSeconds: 10
+      containers:
+      - name: ofagent
+        image: voltha-ofagent
+        imagePullPolicy: Never
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        args:
+        - "/ofagent/ofagent/main.py"
+        - "-v"
+        - "--consul=consul.$(NAMESPACE).svc.cluster.local:8500"
+        - "--fluentd=fluentd.$(NAMESPACE).svc.cluster.local:24224"
+        - "--controller=onos:6653"
+        - "--grpc-endpoint=vcore.$(NAMESPACE).svc.cluster.local:50556"
+        - "--enable-tls"
+        - "--key-file=/ofagent/pki/voltha.key"
+        - "--cert-file=/ofagent/pki/voltha.crt"
diff --git a/k8s/single-node/vcli.yml b/k8s/single-node/vcli.yml
new file mode 100644
index 0000000..848bd3a
--- /dev/null
+++ b/k8s/single-node/vcli.yml
@@ -0,0 +1,53 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: vcli
+  namespace: voltha
+  labels:
+    name: vcli
+spec:
+  ports:
+    - name: ssh
+      port: 5022
+      targetPort: 22
+  selector:
+    app: vcli
+---
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: vcli
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: vcli
+      annotations:
+        cni: "weave"
+    spec:
+      containers:
+        - name: vcli
+          image: voltha-cli
+          env:
+            - name: POD_IP
+              valueFrom:
+                fieldRef:
+                  fieldPath: status.podIP
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+          args:
+            - "/cli/cli/setup.sh"
+            - "-C consul:8500"
+            - "-g voltha:50555"
+            - "-s voltha:18880"
+            - "-G"
+          ports:
+            - containerPort: 22
+              name: ssh-port
+          imagePullPolicy: Never
+
+
diff --git a/k8s/single-node/vcore_for_consul.yml b/k8s/single-node/vcore_for_consul.yml
new file mode 100644
index 0000000..da35ffd
--- /dev/null
+++ b/k8s/single-node/vcore_for_consul.yml
@@ -0,0 +1,64 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: vcore
+  namespace: voltha
+  labels:
+    name: vcore
+spec:
+  clusterIP: None
+  ports:
+    - name: rest
+      port: 8880
+      targetPort: 8880
+    - name: mystery
+      port: 18880
+      targetPort: 18880
+    - name: grpc
+      port: 50556
+      targetPort: 50556
+  selector:
+    app: vcore
+---
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: vcore
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: vcore
+      annotations:
+        cni: "weave"
+    spec:
+      containers:
+      - name: voltha
+        image: voltha-voltha
+        imagePullPolicy: Never
+        ports:
+        - containerPort: 8880
+          name: rest-port
+        - containerPort: 18880
+          name: mystery-port
+        - containerPort: 50556
+          name: grpc-port
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        args:
+        - "voltha/voltha/main.py"
+        - "-v"
+        - "--consul=consul.$(NAMESPACE).svc.cluster.local:8500"
+        - "--kafka=kafka.$(NAMESPACE).svc.cluster.local"
+        - "--fluentd=fluentd.$(NAMESPACE).svc.cluster.local:24224"
+        - "--rest-port=8880"
+        - "--grpc-port=50556"
+        - "--interface=eth1"
+        - "--backend=consul"
+        - "--pon-subnet=10.38.0.0/12"
+#        - "--ponsim-comm=grpc"
diff --git a/k8s/single-node/vcore_for_etcd.yml b/k8s/single-node/vcore_for_etcd.yml
new file mode 100644
index 0000000..6af13d5
--- /dev/null
+++ b/k8s/single-node/vcore_for_etcd.yml
@@ -0,0 +1,66 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: vcore
+  namespace: voltha
+  labels:
+    name: vcore
+spec:
+  clusterIP: None
+  ports:
+    - name: rest
+      port: 8880
+      targetPort: 8880
+    - name: mystery
+      port: 18880
+      targetPort: 18880
+    - name: grpc
+      port: 50556
+      targetPort: 50556
+  selector:
+    app: vcore
+---
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: vcore
+  namespace: voltha
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: vcore
+      annotations:
+        cni: "weave"
+    spec:
+      containers:
+        - name: voltha
+          image: voltha-voltha
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+          args:
+            - "voltha/voltha/main.py"
+            - "-v"
+            - "--etcd=etcd.$(NAMESPACE).svc.cluster.local:2379"
+            - "--kafka=kafka.$(NAMESPACE).svc.cluster.local"
+            - "--fluentd=fluentd.$(NAMESPACE).svc.cluster.local:24224"
+            - "--rest-port=8880"
+            - "--grpc-port=50556"
+            - "--interface=eth1"
+            - "--backend=etcd"
+            - "--pon-subnet=10.38.0.0/12"
+#            - "--ponsim-comm=grpc"
+          ports:
+            - containerPort: 8880
+              name: rest-port
+            - containerPort: 18880
+              name: mystery-port
+            - containerPort: 50556
+              name: grpc-port
+          imagePullPolicy: Never
+
+
diff --git a/k8s/single-node/zookeeper.yml b/k8s/single-node/zookeeper.yml
new file mode 100644
index 0000000..9ced14a
--- /dev/null
+++ b/k8s/single-node/zookeeper.yml
@@ -0,0 +1,56 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: zoo
+  namespace: voltha
+spec:
+  clusterIP: None
+  selector:
+    app: zookeeper
+  ports:
+  - name: client
+    port: 2181
+    targetPort: 2181
+  - name: follower
+    port: 2888
+    targetPort: 2888
+  - name: leader
+    port: 3888
+    targetPort: 3888
+---
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: zookeeper
+  namespace: voltha
+spec:
+  serviceName: zoo
+  replicas: 1
+  selector:
+    matchLabels:
+      app: zookeeper
+  template:
+    metadata:
+      labels:
+        app: zookeeper
+      annotations:
+        cni: "weave"
+    spec:
+      containers:
+      - name: zoo
+        image: zookeeper:3.4.11
+        ports:
+        - containerPort: 2181
+        - containerPort: 2888
+        - containerPort: 3888
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: ZOO_MY_ID
+          value: "1"
+#        - name: ZOO_SERVERS
+#          value: >
+#            server.1=zookeeper1-0.zoo1.$(NAMESPACE).svc.cluster.local:2888:3888
+