diff --git a/.github/workflows/kind-e2e.yml b/.github/workflows/kind-e2e.yml index f0171b1b2..308dd3f8c 100644 --- a/.github/workflows/kind-e2e.yml +++ b/.github/workflows/kind-e2e.yml @@ -33,6 +33,10 @@ jobs: working-directory: ./e2e run: ./test-simple-macvlan1.sh + - name: Test default route1 + working-directory: ./e2e + run: ./test-default-route1.sh + - name: cleanup cluster and registry run: | kind delete cluster diff --git a/e2e/default-route1.yml b/e2e/default-route1.yml new file mode 100644 index 000000000..905c0d83e --- /dev/null +++ b/e2e/default-route1.yml @@ -0,0 +1,57 @@ +--- +apiVersion: "k8s.cni.cncf.io/v1" +kind: NetworkAttachmentDefinition +metadata: + name: default-route-config +spec: + config: '{ + "cniVersion": "0.3.1", + "plugins": [ + { + "type": "macvlan", + "master": "eth1", + "mode": "bridge", + "ipam": { + "type": "static" + } + } ] + }' +--- +apiVersion: v1 +kind: Pod +metadata: + name: default-route-worker1 + annotations: + k8s.v1.cni.cncf.io/networks: '[ + { "name": "default-route-config", + "ips": [ "10.1.1.21/24" ] , + "default-route": [ "10.1.1.254" ] } + ]' + labels: + app: default-route1 +spec: + containers: + - name: default-route-worker1 + image: centos:8 + command: ["/bin/sleep", "10000"] + securityContext: + privileged: true +--- +apiVersion: v1 +kind: Pod +metadata: + name: default-route-worker2 + annotations: + k8s.v1.cni.cncf.io/networks: '[ + { "name": "default-route-config", + "ips": [ "10.1.1.22/24" ] } + ]' + labels: + app: default-route1 +spec: + containers: + - name: default-route-worker2 + image: centos:8 + command: ["/bin/sleep", "10000"] + securityContext: + privileged: true diff --git a/e2e/macvlan1.yml b/e2e/simple-macvlan1.yml similarity index 100% rename from e2e/macvlan1.yml rename to e2e/simple-macvlan1.yml diff --git a/e2e/test-default-route1.sh b/e2e/test-default-route1.sh new file mode 100755 index 000000000..2975e32d3 --- /dev/null +++ b/e2e/test-default-route1.sh @@ -0,0 +1,44 @@ +#!/bin/sh +set -o errexit + +export PATH=${PATH}:./bin + +kubectl create -f default-route1.yml +kubectl wait --for=condition=ready -l app=default-route1 --timeout=300s pod + +echo "check default-route-worker1 interface: net1" +kubectl exec default-route-worker1 -- ip a show dev net1 + +echo "check default-route-worker1 interface address: net1" +ipaddr=$(kubectl exec default-route-worker1 -- ip -j a show | jq -r \ + '.[]|select(.ifname =="net1")|.addr_info[]|select(.family=="inet").local') +if [ $ipaddr != "10.1.1.21" ]; then + echo "default-route-worker1 IP address is different: ${ipaddr}" +fi + +echo "check default-route-worker1 default route" +ipaddr=$(kubectl exec default-route-worker1 -- ip -j route | jq -r \ + '.[]|select(.dst=="default")|.gateway') +if [ $ipaddr != "10.1.1.254" ]; then + echo "default-route-worker1 default route is different: ${ipaddr}" +fi + +echo "check default-route-worker2 interface: net1" +kubectl exec default-route-worker2 -- ip a show dev net1 + +echo "check default-route-worker2 interface address: net1" +ipaddr=$(kubectl exec default-route-worker2 -- ip -j a show | jq -r \ + '.[]|select(.ifname =="net1")|.addr_info[]|select(.family=="inet").local') +if [ $ipaddr != "10.1.1.22" ]; then + echo "default-route-worker2 IP address is different: ${ipaddr}" +fi + +echo "check default-route-worker2 default route" +ipaddr=$(kubectl exec default-route-worker2 -- ip -j route | jq -r \ + '.[]|select(.dst=="default")|.gateway') +if [ $ipaddr != "10.244.1.1" ]; then + echo "default-route-worker2 default route is different: ${ipaddr}" +fi + +echo "cleanup resources" +kubectl delete -f default-route1.yml diff --git a/e2e/test-simple-macvlan1.sh b/e2e/test-simple-macvlan1.sh index 5bd281e7e..2e673b673 100755 --- a/e2e/test-simple-macvlan1.sh +++ b/e2e/test-simple-macvlan1.sh @@ -3,7 +3,7 @@ set -o errexit export PATH=${PATH}:./bin -kubectl create -f macvlan1.yml +kubectl create -f simple-macvlan1.yml kubectl wait --for=condition=ready -l app=macvlan --timeout=300s pod echo "check macvlan1-worker1 interface: net1" @@ -25,3 +25,6 @@ ipaddr=$(kubectl exec macvlan1-worker2 -- ip -j a show | jq -r \ if [ $ipaddr != "10.1.1.12" ]; then echo "macvlan1-worker2 IP address is different: ${ipaddr}" fi + +echo "cleanup resources" +kubectl delete -f simple-macvlan1.yml