{"id":24308944,"url":"https://github.com/mbakalarski/netclab","last_synced_at":"2026-04-22T04:32:37.179Z","repository":{"id":267220718,"uuid":"899661356","full_name":"mbakalarski/netclab","owner":"mbakalarski","description":"NETwork Containerized LAB - testbed for network tests with mix of VM and container images","archived":false,"fork":false,"pushed_at":"2025-02-13T10:59:30.000Z","size":96,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T11:37:02.311Z","etag":null,"topics":["bridge","cisco","cni","crpd","csr1000v","csrx","ixia-c","juniper","k8s","kind","kubernetes","kubevirt","nokia","otg","srlinux"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbakalarski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-06T18:26:59.000Z","updated_at":"2025-02-13T10:59:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb1024cf-e622-4056-b13f-ae5a4bdddcf3","html_url":"https://github.com/mbakalarski/netclab","commit_stats":null,"previous_names":["mbakalarski/vlab","mbakalarski/netclab"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbakalarski%2Fnetclab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbakalarski%2Fnetclab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbakalarski%2Fnetclab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbakalarski%2Fnetclab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbakalarski","download_url":"https://codeload.github.com/mbakalarski/netclab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242277694,"owners_count":20101545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridge","cisco","cni","crpd","csr1000v","csrx","ixia-c","juniper","k8s","kind","kubernetes","kubevirt","nokia","otg","srlinux"],"created_at":"2025-01-17T05:11:58.389Z","updated_at":"2026-04-22T04:32:37.174Z","avatar_url":"https://github.com/mbakalarski.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# netclab\nNETwork Containerized LAB is an idea for running testbeds with mix of VM and container images, e.g. Cisco csr1000v and Juniper cRPD or Nokia SR Linux.\u003cbr\u003e\nNetwork topologies are defined via K8s manifest files.\u003cbr\u003e\nKubeVirt is used for VM support and Multus to have more network interfaces.\u003cbr\u003e\n\n## Prerequisites\nLinux host or VM with docker installed.\u003cbr\u003e\n\n## Tool installation\nInstall kubectl and kind tool, e.g.\n```\ncurl -LO \"https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl\"\nchmod +x ./kubectl\nsudo mv ./kubectl /usr/local/bin/kubectl\n```\n\nkind:\n```\nunset version\nversion=$(basename $(curl -s -w %{redirect_url} https://github.com/kubernetes-sigs/kind/releases/latest))\ncurl -Lo ./kind https://kind.sigs.k8s.io/dl/${version}/kind-linux-amd64\nchmod +x ./kind\nsudo mv ./kind /usr/local/bin/kind\n```\n\nExpose VM images via http access, e.g.:\n```\ndocker run --name www -dt --mount type=bind,source=$HOME/images,target=/usr/share/nginx/html -p 8080:80 nginx:latest\n```\n\n\u003cbr\u003e\u003cbr\u003e\nRun netclab installation script:\n```\nbash \u003c(curl -Ls \"https://raw.githubusercontent.com/mbakalarski/netclab/main/netclab-kind.sh\")\n```\nor\n```\nbash \u003c(curl -Ls \"https://raw.githubusercontent.com/mbakalarski/netclab/main/netclab-kind.sh\") kubevirt\n```\nwith ```kubevirt``` arg for netclab with VM images.\u003cbr\u003e\n\n\u003cbr\u003e\u003cbr\u003e\nTo create topology:\n```\ncd \u003cLab folder\u003e\nkubectl apply -f ./manifests/\n```\n\n\u003cbr\u003e\u003cbr\u003e\nThen connect to console.\u003cbr\u003e\nFor VMs install virtctl:\n```\nunset version\nversion=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath=\"{.status.observedKubeVirtVersion}\")\ncurl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${version}/virtctl-${version}-linux-amd64\nchmod +x virtctl\nsudo mv ./virtctl /usr/local/bin/virtctl\n```\nand connect:\n```\nvirtctl console \u003crouter name\u003e\n```\n\nFor containerized router:\n```\nkubectl exec -ti \u003crouter name\u003e -- bash\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbakalarski%2Fnetclab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbakalarski%2Fnetclab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbakalarski%2Fnetclab/lists"}