feat(.devcontainer, lab/gvpc): containerlab DooD devcontainer and gvpc lab fixes#85
Open
0xmc wants to merge 10 commits into
Open
feat(.devcontainer, lab/gvpc): containerlab DooD devcontainer and gvpc lab fixes#850xmc wants to merge 10 commits into
0xmc wants to merge 10 commits into
Conversation
Add a new containerlab-dood devcontainer for running ContainerLab network labs against the host Docker daemon. Relocate the existing Galactic devcontainer to .devcontainer/galactic/ to make room for multiple devcontainer configurations. Part of #83
Add a pull-base target that uses crane to fetch debian:bookworm-slim, working around the TLS 1.3 panic in OrbStack's msft-golang Docker builds. Remove the --dualstack flag from host-setup.sh — the lab unconditionally enables both IPv4 and IPv6 forwarding. Part of #83
Add Makefile with targets for building the Galactic Kind node image, creating/inspecting/tearing down the cluster, and running node setup. Use crane for base image pulls to work around the TLS 1.3 panic in OrbStack's msft-golang Docker builds. Wrap kubectl in the node image to poll the apiserver before applying manifests, fixing a race where kind's StorageClass step hits the brief window after kubeadm init where OrbStack's bridge interface is still coming up. Enable Cilium's full kube-proxy replacement to avoid conflicts between iptables-based service routing and the SRv6/VRF datapath. Part of #83
Brings in the GVPC multi-cluster lab environment (#82), including the ContainerLab topology, FRR/GoBGP configs, and Kind container changes. Resolved conflict in Dockerfile by retaining OrbStack DooD kubectl-wrapper. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix the gvpc lab to run on arm64 in the containerlab-dood devcontainer: - Remove stale COPY resources/ from Dockerfile (resources moved to lab/gvpc/resources/ in the main merge and are applied at runtime) - Set wait: 0s on all kind clusters to bypass a kind v0.31.0 panic when the node conditions array is empty at fast startup; install.sh already polls kubectl get nodes for readiness - Use ARG KINDEST_VER in Dockerfile and pass it from the Makefile so the version has a single source of truth - Fold containers/Makefile into lab/gvpc/Makefile; remove dead targets (create, host-setup, status, clean) left over from the old lab/containers/ single-cluster setup - Upgrade Go to 1.24.5 in the containerlab-dood devcontainer via the devcontainer feature (matches ContainerLab's build and satisfies Galactic's go 1.24.0 requirement); remove apt golang-go - Update lab/README.md to reflect current structure (network/ + gvpc/, no containers/) - Fix lab/gvpc/README.md: add missing control/ and pe/ group_files entries; correct overlay target description Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… forwarding - corrects the gitconfig bind target from /root/.gitconfig to /home/vscode/.gitconfig (matching the non-root user) - adds otherPortsAttributes to suppress noisy auto-forward prompts.
…fixes - Add multi-arch detection to containerlab-dood post-create (kubectl, crane) - Add Node.js devcontainer feature to containerlab-dood for Claude Code install - Switch galactic base image from ubuntu-22.04 to ubuntu-24.04 - Fix gitconfig bind mount in galactic: mount as .gitconfig.host (readonly) and copy on post-create to avoid EBUSY when VS Code writes its credential helper - Silence port auto-forwarding for metrics/health/webhook ports - Remove stale GO111MODULE=on and safe.directory git config calls Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix iad and sjc overlay GoBGP config: l3vpn-ipv4-unicast → l3vpn-ipv6-unicast - Switch infra-control-plane FRR to ipv6 vpn address-family; add Null0 static route and network advertisement for the SRv6 /48 prefix - Fix kubectl-wrapper to place --server flag before $@ (flags must precede args) - Add make test targets: test-bgp-transit, test-bgp-underlay, test-srv6, test-l3vpn Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
privateip
approved these changes
May 22, 2026
Contributor
|
@0xmc can you please rebase your PR? |
Contributor
|
@0xmc i have refactored the repo to move away from |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
containerlab-dooddevcontainer for running containerlab labs viaDocker-outside-of-Docker (bind-mounting the host Docker socket and netns/modules),
with Go, Node.js, kubectl, kind, and crane pre-installed
kubectl, crane, and protoc downloads
.gitconfig.host(readonly) and copy on post-create to avoid EBUSY when VS Code writes its
credential helper
l3vpn-ipv4-unicast→l3vpn-ipv6-unicastin both iad and sjc overlays
ipv6 vpnaddress-family; add Null0static route and network advertisement for the SRv6 /48 prefix
make testtargets for verifying BGP sessions, SRv6 routes, and GoBGPL3VPN state after lab bring-up
Test plan
both amd64 and arm64
.gitconfigis present andwritable after post-create
make up && make overlayinlab/gvpc/, then runmake testand confirmall BGP sessions are established and SRv6 prefixes are visible on tr1
Closes #83