Make sure you have the following dependencies to run NSM:

In addition, to build NSM you will need:


You can build all of the containers needed for NSM, including a bunch of handle Network Service Endpoints (NSEs) and NSCs (Network Service Clients) that are useful for testing, but not part of the core with:

make k8s-build

And if you are using the Kind machinery to run your K8s cluster (described a bit further down), you really want to use the following:

make k8s-save

because make k8s-save will build your containers and save them in scripts/vagrant/images where they can be loaded by the Kins K8s cluster.

You can also selectively rebuild any component, say the nsmd, with make k8s-nsmd-save

After installing you can verify it with helm version.


Network Service Mesh provides a handy Kind setup for running a small K8s cluster. Once you’ve done make k8s-save, you can deploy to it with:

make k8s-save                                                # build and save the NSM docker containers
make kind-start                                              # start up an nsm cluster named kind
export KUBECONFIG="$(kind get kubeconfig-path --name="nsm")" # Point kubectl at your kind instance
make k8s-load-images                                         # load NSM docker containers into kind
make helm-init                                               # initialize helm
make helm-install-nsm                                        # install the nsm infrastructure


  • icmp-responder - A simple example that connects an App Pod Client to a Network Service.
    bash make helm-install-icmp-responder
  • vpp-icmp-responder - A simple example that connects a vpp based Pod to a Network Service using memif.
    bash make helm-install-vpp-icmp-responder
  • vpn - An example that simulates an App Pod Client connecting to a Network Service implemented as a chain simulating a VPN Use Case
    bash make helm-install-vpn


You can check to see things are working properly by typing:

make k8s-check

which will try pinging from NSCs to NSEs.


You can remove the effects of helm-install-% with:

make helm-delete-%