add intel multus cni support 59/45759/1
authorGuo Ruijing <ruijing.guo@intel.com>
Wed, 18 Oct 2017 23:22:04 +0000 (19:22 -0400)
committerGuo Ruijing <ruijing.guo@intel.com>
Wed, 18 Oct 2017 23:25:56 +0000 (19:25 -0400)
Change-Id: I5670a824c62f6b41dddb7792c851d8b838d28b50
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
ci/deploy.sh
ci/k8.sh
ci/kubernetes/kube_cni_multus.yml [new file with mode: 0644]
ci/kubernetes/nginx-app.yaml [new file with mode: 0644]
ci/kubernetes/post-install.sh [new file with mode: 0755]

index 9277e85..a6a1b18 100755 (executable)
@@ -25,7 +25,7 @@ usage() { echo "Usage: $0
     [-t|--type <noha|ha|tip>]
     [-o|--openstack <ocata>]
     [-l|--lab <default|custom>]
-    [-f|--feature <ipv6,dpdk,lxd,dvr,openbaton>]
+    [-f|--feature <ipv6,dpdk,lxd,dvr,openbaton,multus>]
     [-d|--distro <xenial>]
     [-a|--arch <amd64|ppc64el|aarch64>]
     [-m|--model <openstack|kubernetes>]
@@ -348,7 +348,7 @@ elif ([ $opnfvmodel == "kubernetes" ]); then
     check_status executing 50
     echo_info "Configuring Kubernetes deployment"
 
-    ./k8.sh
+    ./k8.sh $opnfvfeature
 fi
 
 # expose the juju gui-url to login into juju gui
index 551c4a2..51b2f57 100755 (executable)
--- a/ci/k8.sh
+++ b/ci/k8.sh
@@ -1,11 +1,10 @@
 #!/bin/bash
 set -ex
+
+opnfvfeature=$1
+
 juju run-action kubernetes-worker/0 microbot replicas=3
-sleep 30
 juju config kubernetes-master enable-dashboard-addons=true || true
 juju expose kubernetes-worker || true
-
-juju ssh kubernetes-master/0 "/snap/bin/kubectl cluster-info"
-juju ssh kubernetes-master/0 "/snap/bin/kubectl get nodes"
-juju ssh kubernetes-master/0 "/snap/bin/kubectl get pods --all-namespaces"
-juju ssh kubernetes-master/0 "/snap/bin/kubectl get services,endpoints,ingress --all-namespaces"
+juju scp -- -r kubernetes kubernetes-master/0:
+juju ssh kubernetes-master/0 "/bin/bash kubernetes/post-install.sh $opnfvfeature"
diff --git a/ci/kubernetes/kube_cni_multus.yml b/ci/kubernetes/kube_cni_multus.yml
new file mode 100644 (file)
index 0000000..219af57
--- /dev/null
@@ -0,0 +1,91 @@
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: cnimultus
+  namespace: kube-system
+---
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: kube-cnimultus-cfg
+  namespace: kube-system
+  labels:
+    tier: node
+    app: cnimultus
+data:
+  cni-conf.json: |
+    {
+      "name": "multus",
+      "type": "multus",
+      "delegates": [
+        {
+          "name": "CDK-flannel-network",
+          "type": "flannel",
+          "masterplugin": true
+          "delegate": {
+              "isDefaultGateway": true
+            }
+          }
+        },
+        {
+          "name": "mynet",
+          "type": "bridge",
+          "bridge": "cni0",
+          "isGateway": true,
+          "ipMasq": true,
+          "ipam": {
+            "type": "host-local",
+            "subnet": "10.22.0.0/16",
+            "routes": [
+              { "dst": "0.0.0.0/0" }
+            ]
+          }
+        }
+      ]
+    }
+---
+apiVersion: extensions/v1beta1
+kind: DaemonSet
+metadata:
+  name: kube-cnimultus-ds
+  namespace: kube-system
+  labels:
+    tier: node
+    app: cnimultus
+spec:
+  template:
+    metadata:
+      labels:
+        tier: node
+        app: cnimultus
+    spec:
+      hostNetwork: true
+      nodeSelector:
+        beta.kubernetes.io/arch: amd64
+      tolerations:
+      - key: node-role.kubernetes.io/master
+        operator: Exists
+        effect: NoSchedule
+      serviceAccountName: cnimultus
+      containers:
+      - name: install-cni
+        image: openretriever/cnimultus
+        command: [ "/bin/bash", "/cni/install_cni.sh" ]
+        volumeMounts:
+        - name: cni-bin
+          mountPath: /opt/cni/bin
+        - name: cni-cfg
+          mountPath: /etc/cni/net.d
+        - name: cnimultus-cfg
+          mountPath: /etc/kube-cnimultus
+      volumes:
+        - name: cni-bin
+          hostPath:
+            path: /opt/cni/bin
+        - name: cni-cfg
+          hostPath:
+            path: /etc/cni/net.d
+        - name: cnimultus-cfg
+          configMap:
+            name: kube-cnimultus-cfg
diff --git a/ci/kubernetes/nginx-app.yaml b/ci/kubernetes/nginx-app.yaml
new file mode 100644 (file)
index 0000000..f80881a
--- /dev/null
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: nginx
+  labels:
+    app: nginx
+spec:
+  type: NodePort
+  ports:
+  - port: 80
+    protocol: TCP
+    name: http
+  selector:
+    app: nginx
+---
+apiVersion: v1
+kind: ReplicationController
+metadata:
+  name: nginx
+spec:
+  replicas: 2
+  template:
+    metadata:
+      labels:
+        app: nginx
+    spec:
+      containers:
+      - name: nginx
+        image: nginx
+        ports:
+        - containerPort: 80
diff --git a/ci/kubernetes/post-install.sh b/ci/kubernetes/post-install.sh
new file mode 100755 (executable)
index 0000000..104f979
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -ex
+
+if [[ $1 == *"multus"* ]]; then
+    /snap/bin/kubectl apply -f kubernetes/kube_cni_multus.yml
+fi
+
+/snap/bin/kubectl apply -f kubernetes/nginx-app.yaml
+/snap/bin/kubectl cluster-info
+/snap/bin/kubectl get nodes
+/snap/bin/kubectl get pods --all-namespaces
+/snap/bin/kubectl get services,endpoints,ingress --all-namespaces