From 0b6cf885239f5612c19db205d9a827572ad73c8a Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Wed, 18 Oct 2017 19:22:04 -0400 Subject: [PATCH] add intel multus cni support Change-Id: I5670a824c62f6b41dddb7792c851d8b838d28b50 Signed-off-by: Guo Ruijing --- ci/deploy.sh | 4 +- ci/k8.sh | 11 +++-- ci/kubernetes/kube_cni_multus.yml | 91 +++++++++++++++++++++++++++++++++++++++ ci/kubernetes/nginx-app.yaml | 31 +++++++++++++ ci/kubernetes/post-install.sh | 12 ++++++ 5 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 ci/kubernetes/kube_cni_multus.yml create mode 100644 ci/kubernetes/nginx-app.yaml create mode 100755 ci/kubernetes/post-install.sh diff --git a/ci/deploy.sh b/ci/deploy.sh index 9277e857..a6a1b182 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -25,7 +25,7 @@ usage() { echo "Usage: $0 [-t|--type ] [-o|--openstack ] [-l|--lab ] - [-f|--feature ] + [-f|--feature ] [-d|--distro ] [-a|--arch ] [-m|--model ] @@ -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 diff --git a/ci/k8.sh b/ci/k8.sh index 551c4a27..51b2f571 100755 --- 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 index 00000000..219af57c --- /dev/null +++ b/ci/kubernetes/kube_cni_multus.yml @@ -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 index 00000000..f80881a2 --- /dev/null +++ b/ci/kubernetes/nginx-app.yaml @@ -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 index 00000000..104f9794 --- /dev/null +++ b/ci/kubernetes/post-install.sh @@ -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 -- 2.16.6