[COMAC-103] Allow SPGW-U to run a specific node by using nodeselector

Reason: SPGW-U and CDN use different SR-IOV: NetDevice and VFIO.
Unfortunately, both can't occupy same network interface port in the same
node. Thus, classify two types of nodes: (i) nodes for NetDevice and (ii)
nodes for VFIO. Then, deploy SPGW-U and CDN into the different type of
nodes.

To deploy them into the different type of machine, define nodeselector.

Please see COMAC-103 issues in Jira.

NOTE: WIP - To allow both NetDevice and VFIO to occupy the same port in the
same machine.

Change-Id: Idf8561127dedcb23c265c373db3c612fef342f37
diff --git a/mcord-release/cdn-services/cdn-local/Chart.yaml b/mcord-release/cdn-services/cdn-local/Chart.yaml
index d162d11..6d74c93 100644
--- a/mcord-release/cdn-services/cdn-local/Chart.yaml
+++ b/mcord-release/cdn-services/cdn-local/Chart.yaml
@@ -17,4 +17,4 @@
 appVersion: "1.0"
 description: A Helm chart for M-CORD CDN Services in Local Edge
 name: cdn-local
-version: 0.0.1
+version: 0.0.2
diff --git a/mcord-release/cdn-services/cdn-local/templates/nginx.yaml b/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
index 7c9548f..c2ef758 100644
--- a/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
+++ b/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
@@ -48,7 +48,7 @@
     spec:
       #hostNetwork: true
       nodeSelector:
-        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
+{{ toYaml .Values.nginx.nodeselector | indent 8 }}
       terminationGracePeriodSeconds: 0
       imagePullSecrets:
       - name: nexus-docker-secret
diff --git a/mcord-release/cdn-services/cdn-local/values.yaml b/mcord-release/cdn-services/cdn-local/values.yaml
index 965456c..e7cfba3 100644
--- a/mcord-release/cdn-services/cdn-local/values.yaml
+++ b/mcord-release/cdn-services/cdn-local/values.yaml
@@ -13,7 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-cdn_node_selector: node3
 nginx_hostname: "nginx"
 local_vlc_hostname: "local_vlc"
 
@@ -30,3 +29,5 @@
     rtmp_orig: 1935
     rtmp_np: 31935
   replicas: 1
+  nodeselector:
+    sriov: netdevice
diff --git a/mcord-release/cdn-services/cdn-remote/Chart.yaml b/mcord-release/cdn-services/cdn-remote/Chart.yaml
index 719ccf3..e1eeac7 100644
--- a/mcord-release/cdn-services/cdn-remote/Chart.yaml
+++ b/mcord-release/cdn-services/cdn-remote/Chart.yaml
@@ -17,4 +17,4 @@
 appVersion: "1.0"
 description: A Helm chart for M-CORD CDN Services in Remote Edge
 name: cdn-remote
-version: 0.0.1
+version: 0.0.2
diff --git a/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml b/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml
index 0dc8efc..c3d4a61 100644
--- a/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml
+++ b/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml
@@ -53,8 +53,6 @@
         name: antmedia
     spec:
       terminationGracePeriodSeconds: 1
-      nodeSelector:
-        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
       containers:
       - name: antmedia
         image: {{ .Values.antmedia.images.antmedia_image }}
diff --git a/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml b/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml
index b974c44..8fd2574 100644
--- a/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml
+++ b/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml
@@ -50,8 +50,6 @@
         name: remote-streaming
     spec:
       terminationGracePeriodSeconds: 1
-      nodeSelector:
-        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
       containers:
       - name: streaming
         image: {{ .Values.remote_streaming.images.remote_streaming_image }}
diff --git a/mcord-release/cdn-services/cdn-remote/values.yaml b/mcord-release/cdn-services/cdn-remote/values.yaml
index e1e8ad8..876e503 100644
--- a/mcord-release/cdn-services/cdn-remote/values.yaml
+++ b/mcord-release/cdn-services/cdn-remote/values.yaml
@@ -14,7 +14,6 @@
 # limitations under the License.
 
 namespace: remotecdn
-cdn_node_selector: node2
 remote_streaming_hostname: "remote-streaming"
 stream_name: 1.stream
 
diff --git a/mcord-release/mcord-services/Chart.yaml b/mcord-release/mcord-services/Chart.yaml
index d6207da..12a8042 100644
--- a/mcord-release/mcord-services/Chart.yaml
+++ b/mcord-release/mcord-services/Chart.yaml
@@ -18,4 +18,4 @@
 appVersion: "1.0"
 description: M-CORD services with OMEC inside
 name: mcord-services
-version: 0.1.1
+version: 0.1.2
diff --git a/mcord-release/mcord-services/templates/statefulset-spgwu.yaml b/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
index 49a2ee6..837872c 100644
--- a/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
+++ b/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
@@ -36,6 +36,10 @@
                 { "name": "sgi-net", "interface": "sgi-net" }
         ]'
     spec:
+{{- if .Values.network.sriov.enabled }}
+      nodeSelector:
+{{ toYaml .Values.spgwu.nodeselector | indent 8 }}
+{{- end }}
 {{- if not .Values.network.sriov.enabled }}
       initContainers:
         - name: spgwu-iptables-init
diff --git a/mcord-release/mcord-services/values.yaml b/mcord-release/mcord-services/values.yaml
index 8008899..f2516d4 100644
--- a/mcord-release/mcord-services/values.yaml
+++ b/mcord-release/mcord-services/values.yaml
@@ -56,6 +56,8 @@
 
 spgwu:
   name: spgwu
+  nodeselector:
+    sriov: vfio
   images:
     tags:
       init: ngick8stesting/c3po-init:latest