# generate protocol buffer
make pb
# make server binary
make server
# make client binary
make client
# make test (You should run this before push codes)
make test
The network-controller server provide two ways to listen, TCP and Unix domain socket If you want to run as a UNIX domain socket server, you should specify a path to store the sock file and server will remove that file when server is been terminated
./server/network-controller-server -unix=/tmp/a.sock
For the TCP server, just use the IP:PORT
format, for example, 0.0.0.0:50051
./server/network-controller-server -tcp=0.0.0.0:50051
The clinet is used for the kubernetes pod to create the veth and you can see the example yaml in example/kubernetes/*.yaml
to see how to use this client.
For creating a veth for Pod, the client needs the following information
- Pod Name
- Pod Namespace
- Pod UUID
- Target Bridge Name
- The Interface Name in the container
- The server address
The first three variable can passed by the environemtn POD_NAME
, POD_NAMESPACE
and POD_UUID
.
-b
or --bridge
-n
or --nic
The clinet support two way to connect to the server, TCP socket and UNIX domain socket.
In the TCP mode, use the IP:PORT
format to connect to TCP server
./client/network-controller-client -server=0.0.0.0:50051
Fot the UNIX domain socket mode, you should use the unix://PATH
format to connect to server.
Assume the path is /tmp/a.sock
and you can use the following command to connect
./client/network-controller-client -server=unix:///tmp/a.sock
Following is an example of the client and you can see more use the `--help`.
```shell
./clinet/network-controller-client "-s", "unix:///tmp/grpc.sock", "-b", "br100", "-n", "eth100"