A testing and demonstration environment for Galactic VPC, a multi-cloud networking solution. This lab demonstrates multi-region Kubernetes cluster connectivity using SRv6 (Segment Routing over IPv6) packet routing.
There are different approaches to use this lab:
- Using Multipass if you'd like to run the lab in a dedicated VM.
- Using Dev Container is well suited if you use VS Code as your IDE.
- Using "Your own choice of Hypervisor" if you already have a way to run a Ubuntu/Debian VM.
In this case simply follow from step 2 in the Multipass instructions. - If you are running Ubuntu/Debian Linux on your workstation - we discourage running directly inside of it without a VM or Containers for isolation.
Netlab/Containerlab heavily modify the network configuration of the system, which may break your network connectivity. There be dragons.
No matter which approach you choose, Galactic relies on the SRv6 and VRF modules in the Linux kernel. This means the system where you install Galactic must have those modules available.
This approach creates an isolated Ubuntu VM using Multipass.
-
Launch and enter the Multipass VM
Create a new Ubuntu VM with the required resources and mount the project directory:
multipass launch -c 4 -d 50G -m 8G -n galactic-lab --mount .:/galactic-lab multipass shell galactic-lab sudo -s
-
Install Netlab and dependencies
cd /galactic-lab export PIP_OPTIONS="--break-system-packages" sudo apt update && sudo apt install -y python3-pip python3 -m pip install $PIP_OPTIONS git+https://github.com/ipspace/netlab netlab install -y ubuntu ansible containerlab
-
You're ready! Proceed to the Building the Custom Kind Node section below.
This approach uses VS Code's Dev Container feature to provide a fully configured development environment with all dependencies pre-installed.
- Visual Studio Code
- Dev Containers extension
- Orbstack
- Ensure you are using Orbstack:
docker context use orbstack - Read the Containerlab docs for MacOS for details why Docker Desktop will not work here
- Ensure you are using Orbstack:
-
Open the galactic-lab folder in VS Code
-
Reopen in Container
- Press
Cmd/Ctrl+Shift+P - Type and select:
Dev Containers: Reopen in Container - Wait for the container to build (first time only, ~5-10 minutes)
- Press
Cmd/Ctrl+Shift+P - Type and select:
Terminal: Create New Terminal
- Press
-
You're ready! Proceed to the Building the Custom Kind Node section below.
Both approaches above prepare your host environment. Now you need to build the custom Kubernetes-in-Docker (Kind) node image with Galactic components pre-installed.
cd kindest-node-galactic
docker build . -t kindest/node:galacticRun the lab inside WSL2 on Windows using Docker Engine installed in WSL.
- Windows 10/11 with WSL2 enabled and Ubuntu installed
- Docker Engine running inside WSL (systemd or
sudo service docker start) - Python 3.10+, Go 1.20+, build-essential
- Ensure
~/.local/binis in PATH for pip user installs
-
Prepare WSL environment
sudo apt update && sudo apt install -y python3-pip git curl build-essential # Ensure ~/.local/bin is on PATH for this shell and future logins echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile source ~/.profile
-
Clone the repo
git clone https://github.com/datum-cloud/galactic-lab.git cd galactic-lab -
Install Netlab and dependencies (inside WSL)
export PIP_OPTIONS="--break-system-packages" python3 -m pip install --user $PIP_OPTIONS git+https://github.com/ipspace/netlab netlab install -y ubuntu ansible containerlab
-
Build or run the lab
- Build custom Kind node (if following Kind path):
cd kindest-node-galactic docker build . -t kindest/node:galactic
- Or run the WSL SRv6 lab (if using
platform/wslcontents):cd platform/wsl netlab up
- Build custom Kind node (if following Kind path):
-
Verify tooling
which netlab docker ps
More details and step-by-step WSL setup are in:
platform/wsl/srv6-vpc-lab-attachment/README.md(WSL lab usage)platform/wsl/srv6-vpc-lab-attachment/TUTORIAL.md(full walkthrough)platform/wsl/srv6-vpc-lab-attachment/setup_wsl_lab.py(automated setup)platform/wsl/srv6-vpc-lab-attachment/run_lab_demo.py(run the demos)
Proceed to the Building the Custom Kind Node section below or to WSL-specific workflows under platform/wsl.
With your environment set up and the custom Kind node built, you're ready to deploy a basic lab topology or a geographic lab topology.