An open API service indexing awesome lists of open source software.

https://github.com/mbakalarski/netclab

NETwork Containerized LAB - testbed for network tests with mix of VM and container images
https://github.com/mbakalarski/netclab

bridge cisco cni crpd csr1000v csrx ixia-c juniper k8s kind kubernetes kubevirt nokia otg srlinux

Last synced: 7 months ago
JSON representation

NETwork Containerized LAB - testbed for network tests with mix of VM and container images

Awesome Lists containing this project

README

          

# netclab
NETwork Containerized LAB is a tool for running testbeds with mix of VM and container images, e.g. Cisco csr1000v and Juniper cRPD or Nokia SR Linux.

Network topologies are defined via K8s manifest files.

KubeVirt is used for VM support and Multus to have more network interfaces.

## Prerequisites
Linux host or VM with docker installed.

## Tool installation
Install kubectl and kind tool, e.g.
```
curl -LO "https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
```

kind:
```
unset version
version=$(basename $(curl -s -w %{redirect_url} https://github.com/kubernetes-sigs/kind/releases/latest))
curl -Lo ./kind https://kind.sigs.k8s.io/dl/${version}/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
```

Expose VM images via http access, e.g.:
```
docker run --name www -dt --mount type=bind,source=$HOME/images,target=/usr/share/nginx/html -p 8080:80 nginx:latest
```




Run netclab installation script:
```
bash <(curl -Ls "https://raw.githubusercontent.com/mbakalarski/netclab/main/netclab-kind.sh")
```
or
```
bash <(curl -Ls "https://raw.githubusercontent.com/mbakalarski/netclab/main/netclab-kind.sh") kubevirt
```
with ```kubevirt``` arg for netclab with VM images.




To create topology:
```
cd
kubectl apply -f ./manifests/
```




Then connect to console.

For VMs install virtctl:
```
unset version
version=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.observedKubeVirtVersion}")
curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${version}/virtctl-${version}-linux-amd64
chmod +x virtctl
sudo mv ./virtctl /usr/local/bin/virtctl
```
and connect:
```
virtctl console
```

For containerized router:
```
kubectl exec -ti -- bash
```