From b605b832ed494cb53f681f8fc8768b644350c67b Mon Sep 17 00:00:00 2001 From: Martynas Pumputis Date: Sun, 22 Oct 2017 19:46:01 +0200 Subject: [PATCH] npc: Extend k8s NetworkPolicy smoke tests - Test that pods not matching ingress rules are not able to access the nettest pods. - Test upgrading of NPC (from legacy to non-legacy). - Test new semantics of k8s netpol. --- prog/weave-kube/weave-daemonset-k8s-1.7.yaml | 1 + test/840_weave_kube_3_test.sh | 40 +++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/prog/weave-kube/weave-daemonset-k8s-1.7.yaml b/prog/weave-kube/weave-daemonset-k8s-1.7.yaml index 724cefa6..4cb9f351 100644 --- a/prog/weave-kube/weave-daemonset-k8s-1.7.yaml +++ b/prog/weave-kube/weave-daemonset-k8s-1.7.yaml @@ -116,6 +116,7 @@ items: fieldPath: spec.nodeName image: 'weaveworks/weave-npc:latest' imagePullPolicy: Always +#npc-args resources: requests: cpu: 10m diff --git a/test/840_weave_kube_3_test.sh b/test/840_weave_kube_3_test.sh index c5a02595..1736dc17 100755 --- a/test/840_weave_kube_3_test.sh +++ b/test/840_weave_kube_3_test.sh @@ -19,6 +19,7 @@ SUCCESS="$(( $NUM_HOSTS * ($NUM_HOSTS-1) )) established" KUBECTL="sudo kubectl --kubeconfig /etc/kubernetes/admin.conf" KUBE_PORT=6443 IMAGE=weaveworks/network-tester:latest +DOMAIN=nettest.default.svc.cluster.local. tear_down_kubeadm @@ -47,6 +48,7 @@ fi # Ensure Kubernetes uses locally built container images and inject code coverage environment variable (or do nothing depending on $COVERAGE): sed -e "s%imagePullPolicy: Always%imagePullPolicy: Never%" \ -e "s%env:%$COVERAGE_ARGS%" \ + -e "s%#npc-args% args:\n - '--use-legacy-netpol'%" \ "$(dirname "$0")/../prog/weave-kube/weave-daemonset-k8s-1.7.yaml" | run_on "$HOST1" "$KUBECTL apply -n kube-system -f -" sleep 5 @@ -115,7 +117,7 @@ check_ready() { assert_raises 'wait_for_x check_ready "hosts to be ready"' # See if we can get some pods running that connect to the network -run_on $HOST1 "$KUBECTL run --image-pull-policy=Never nettest --image=$IMAGE --replicas=3 -- -peers=3 -dns-name=nettest.default.svc.cluster.local." +run_on $HOST1 "$KUBECTL run --image-pull-policy=Never nettest --image=$IMAGE --replicas=3 -- -peers=3 -dns-name=$DOMAIN" # Create a headless service so they can be found in Kubernetes DNS run_on $HOST1 "$KUBECTL create -f -" </dev/null" + +# Restart weave-net with npc in non-legacy mode +$SSH $HOST1 "$KUBECTL delete ds weave-net -n=kube-system" +sed -e "s%imagePullPolicy: Always%imagePullPolicy: Never%" \ + -e "s%env:%$COVERAGE_ARGS%" \ + "$(dirname "$0")/../prog/weave-kube/weave-daemonset-k8s-1.7.yaml" | run_on "$HOST1" "$KUBECTL apply -n kube-system -f -" + +assert_raises 'wait_for_x check_all_pods_communicate pods' + +# nettest-deny should still not be able to reach nettest pods +assert_raises "! $SSH $HOST1 $KUBECTL exec $denyPodName -- curl -s -S -f -m 2 http://$DOMAIN:8080/status >/dev/null" + +# allow access for all +run_on $HOST1 "$KUBECTL apply -f -" </dev/null" + tear_down_kubeadm # Destroy our test ipset, and implicitly check it is still there