Local development and integration-testing environments for Galactic VPC.
lab/
├── network/ # ContainerLab SRv6 underlay network
└── containers/
└── kindest-node-galactic/ # Custom Kind node image with Galactic pre-installed
A ContainerLab topology that validates the BGP/SRv6 underlay that Galactic depends on. Eight nodes across PE, transit, and route-reflector roles run FRR + GoBGP with SRv6 uSID L3VPN. Use this to develop and test routing behaviour independently of Kubernetes.
See network/README.md for topology details, addressing, and
verification commands.
- ContainerLab ≥ 0.54
- Docker
- Linux kernel ≥ 5.18 (SRv6
encap.redsupport)
cd network
make build # build the gobgp-pe container image
make up # apply host sysctls and deploy the lab
make inspect # show node addresses
make down # tear downA kindest/node image extended with the tooling and Kubernetes manifests needed to
run a full Galactic stack inside a Kind cluster.
kindest-node-galactic/
├── Dockerfile
├── resources/ # Kubernetes manifests applied at cluster boot
│ ├── agent.k8s.yaml
│ ├── mqtt.k8s.yaml
│ ├── operator.k8s.yaml
│ └── router.k8s.yaml
└── scripts/
└── install.sh # Installs Cilium, cert-manager, Multus, and Galactic
install.sh is invoked once per node after the cluster comes up. On the control-plane
node it applies each Kubernetes manifest in order (Cilium → cert-manager → Multus →
MQTT → Galactic operator → router → agent). On worker nodes it loads kernel modules,
sets SRv6 sysctls, and drops in the CNI binaries.
- Docker
kind- Linux kernel with
vrfmodule and SRv6 support (or a VM with those features)
cd containers/kindest-node-galactic
docker build -t kindest/node:galactic .Reference the custom image in your Kind cluster config:
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:galactic
- role: worker
image: kindest/node:galactic
- role: worker
image: kindest/node:galactickind create cluster --config kind-config.yamlAfter the cluster is up, run install.sh on each node:
for node in $(kind get nodes); do
docker exec "$node" /galactic/scripts/install.sh
done| Component | Version |
|---|---|
| Cilium CLI | v0.18.8 |
| cert-manager | v1.19.1 |
| Multus CNI | v4.2.3 |
| CNI plugins | v1.8.0 |
| Galactic | v0.0.5 |