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
- Host: GitHub
- URL: https://github.com/mbakalarski/netclab
- Owner: mbakalarski
- License: mit
- Created: 2024-12-06T18:26:59.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-02-13T10:59:30.000Z (8 months ago)
- Last Synced: 2025-02-13T11:37:02.311Z (8 months ago)
- Topics: bridge, cisco, cni, crpd, csr1000v, csrx, ixia-c, juniper, k8s, kind, kubernetes, kubevirt, nokia, otg, srlinux
- Language: Shell
- Homepage:
- Size: 93.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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
```