Solution Architect with 7+ years of experience • Creator of vRouter-Operator, STUNMESH-go and EZIO Project • Expertise in major public cloud networking services and on-prem datacenter networking design • Specialized in Cloud Network, OpenStack, Kubernetes, SD-WAN, and open-source • Extensive speaking experience at international conferences 2
stay on for a long time • The config lives inside the VM, in CLI files or vendor formats • You change things with SSH or the CLI/Console • Apps moved to Kubernetes. The network did not. • Two different tools. Two different teams. Two ways of working. 6
VM instance itself only • Ansible ◦ Sends config over SSH ◦ Not aware of manual changes • Vendor CLI / UI ◦ Manual clicks ◦ No audit trail ◦ Different for each device. Does not scale well 7
network port so tools can reach it • That port must connect back to a special operator network • You need VLANs, firewall rules, and jump hosts just to run Ansible • Even with VRF isolation, forgetting to bind SSH to the management VRF may expose it to all interfaces 9
to fix one small thing at 2am • That change is never saved back to the repo • Months later, Ansible runs and breaks production • There is no single source of truth (SSOT). ◦ The VM? ◦ The playbook? ◦ Human memory? 11
logs, if they still exist • Of course, you have AAA, but which one is the latest? ◦ Config in the VM? ◦ Config in the script? ◦ Config in the Git repo? • Ansible history, if and only if everyone used it every time • VyOS can roll back config, but which version is the correct one? • This is very different from how app teams work 12
• The files live in version control • If you apply the same files, you get the same result every time • You can review changes with diffs, comments, and approvals 14
A controller keeps the cluster in that state all the time • Every change is a pull request. ◦ You can review and revert it. • Cluster-resource drift can be detected and resynced automatically • No one runs commands in production ◦ They merge PRs 15
router config in CRDs • A controller keeps the vRouter/VyOS VM in sync with the CRD all the time • Now you can use Git, kubectl, ArgoCD, Flux, and OPA • We only changed how the config is written and delivered 18
If we don’t have management network and SSH • Or we don’t want to connect management network with the service/customer networks for security reason • Or bootstrap vRouter VM without any initial configuration for external access ◦ No Cloud-init ◦ No pre-built VM image with initial configuration for external access 19
the Git and Review. Template Render Engine Reuse the template for different VMs. Reconcile Controller Need a Controller to check the CRDs and push the config periodically. w/o Management Network or SSH Don’t want to enable management network or SSH for security reason. 21
configurations ◦ e.g. We have BGP-EVPN Spine and Leaf, they have similar configurations but some different neighbors • Different but reusable functions with templates for quick construct ◦ e.g. Same login auth section ◦ Same BGP EVPN section • It will generate the actual config and VRouterConfig • Great for dynamic network service workload, dynamic tenant network provisioning ◦ e.g. Your Customers need a VPN service? Just generate a CRD from template and deploy it 25
When something changes, it reconciles: no polling, no state comparison in the controller side CRD change kubectl / GitOps Reconcile render config vRouter/VyOS config in sync triggers apply 31
feature ◦ The host talks to the VM over a virtio channel - request-response only; the guest cannot initiate • No IP address needed • No SSH session • No open management port inside the VM • VyOS already includes qemu-guest-agent. No custom image needed 34
VyOS VMs in KubeVirt via QGA • Even the VM doesn’t have initial config to allow external access. • Even you mess up your router, you still can push a new config to rollback the system ◦ e.g. If you remove your all network configs accidentally, vRouter-Operator can roll it back! • This works the same on KubeVirt and on Proxmox VE 35
network • With gRPC bi-direction, vRouter-Operator can push configs with stream connection • Still don’t need access from external controller via SSH or API • Cloud Controller style to control everything in your edge router or SD-WAN 42