This example shows policy based routing usage.
NSE is configured by ConfigMap that contains the policy routes.
Based on Kernel2Kernel example.
Make sure that you have completed steps from basic or memory setup.
Deploy NSC and NSE:
kubectl apply -k https://github.com/networkservicemesh/deployments-k8s/examples/features/policy-based-routing?ref=94d55103486349a1df325371ac33207a98bd8569Wait for applications ready:
kubectl wait --for=condition=ready --timeout=1m pod -l app=nettools -n ns-policy-based-routingkubectl wait --for=condition=ready --timeout=1m pod -l app=nse-kernel -n ns-policy-based-routingPing from NSC to NSE:
kubectl exec pods/nettools -n ns-policy-based-routing -- ping -c 4 172.16.1.100Ping from NSE to NSC:
kubectl exec deployments/nse-kernel -n ns-policy-based-routing -- ping -c 4 172.16.1.101Check policy based routing:
result=$(kubectl exec pods/nettools -n ns-policy-based-routing -- ip r get 172.16.3.1 from 172.16.2.201 ipproto tcp dport 6666)
echo ${result}
echo ${result} | grep -E -q "172.16.3.1 from 172.16.2.201 via 172.16.2.200 dev nsm-1 table 1"result=$(kubectl exec pods/nettools -n ns-policy-based-routing -- ip r get 172.16.3.1 from 172.16.2.201 ipproto tcp sport 5555)
echo ${result}
echo ${result} | grep -E -q "172.16.3.1 from 172.16.2.201 dev nsm-1 table 2"result=$(kubectl exec pods/nettools -n ns-policy-based-routing -- ip r get 172.16.4.1 ipproto udp dport 6666)
echo ${result}
echo ${result} | grep -E -q "172.16.4.1 dev nsm-1 table 3 src 172.16.1.101"result=$(kubectl exec pods/nettools -n ns-policy-based-routing -- ip r get 172.16.4.1 ipproto udp dport 6668)
echo ${result}
echo ${result} | grep -E -q "172.16.4.1 dev nsm-1 table 4 src 172.16.1.101"result=$(kubectl exec pods/nettools -n ns-policy-based-routing -- ip -6 route get 2004::5 from 2004::3 ipproto udp dport 5555)
echo ${result}
echo ${result} | grep -E -q "via 2004::6 dev nsm-1 table 5 src 2004::3"Delete ns:
kubectl delete ns ns-policy-based-routing