Control plane for Application Defined Networks (ADN).
Details are available in our HotNets paper and talk
- Kubernetes and Docker
- Run
. ./utils/k8s_setup.sh
to install Kubernetes via kubeadm. (Note - this script is only tested on Ubuntu 20.04.) - You can use KIND to get a local cluster for testing
- Run
- Go (Ideally 1.19+)
adnctl
is a command line program to manage the ADN control plane.
To install the CLI, run
. ./install.sh
Once installed, verify the CLI is running correctly with:
adnctl version
- Install Instances of Custom Resources:
kubectl apply -f config/samples/
- Build and push your image to the location specified by
IMG
:
make docker-build docker-push IMG=xzhu0027/app-defined-networks:latest
- Deploy the controller to the cluster with the image specified by
IMG
:
make deploy IMG=xzhu0027/app-defined-networks:latest
To delete the CRDs from the cluster:
make uninstall
UnDeploy the controller from the cluster:
make undeploy
This project aims to follow the Kubernetes Operator pattern.
It uses Controllers, which provides a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster.
- Install the CRDs into the cluster:
make install
- Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
NOTE: You can also run this in one step by running: make install run
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make manifests
NOTE: Run make --help
for more information on all potential make
targets
If you have any questions or comments, please get in touch with Xiangfeng Zhu (xfzhu@cs.washington.edu).