这个项目能做什么

Zyvor Fabric 是一个自托管的私有云控制平面,构建在基于 KVM 的普通 Linux 服务器之上。它将 API、身份验证、网络、存储和监控打包进一个单一的 Rust 守护进程 zyvor-fabricd 中。它并不直接实现 VM 执行,而是被定位为两个配套项目的编排和 UX 层:FluxVM(VM 引擎,通过 127.0.0.1:7788 的 REST 接口访问)和 GuestKit(用于首次启动前的离线磁盘检查和自定义)。 接口与自动化 该守护进程支持四个一级前端:zyvorctl 命令行工具、与 API 一同提供的 Web 控制台(默认端口 9095)、一个将 VirtualMachine 自定义资源与运行中的 fabricd 实例进行协调的 Kubernetes operator,以及一个 Terraform provider。此外还包含 Ansible 内容和一个名为 "Fabric Doctor" 的预检工具。声明式 VM 定义可以通过 zyvorctl apply -f 应用,且 VM 创建支持可选的租户范围限定。README 指出,该守护进程暴露了 480 多个 REST 端点和三个 WebSocket 通道,报告显示其包含约 48 个 Rust crate,Rust 和 TypeScript 的代码总量约为 8.7 万行。 安全与多租户 身份验证使用 JWT,通过租户声明来限定列表、获取和变更操作。该项目列出了 RBAC 角色、审计导出和静态加密,并记录了 OIDC/SSO 和 SCIM 身份集成,以及一个带有客户端教程材料的 OpenStack 兼容层。 网络 README 区分了两个不应混淆的策略平面:Fabric SDN(由标签驱动的 nftables 主机隔离,通过 /api/network-policies 管理)和 VM-edge Network Fabric 数据平面(将 TC/eBPF 程序附加到每个 VM 的主机侧接口)。边缘数据平面支持每台 VM 的 IPv4/IPv6 CIDR 允许列表(LPM 映射)、L4 协议/端口强制执行、Mbps/PPS 速率限制,以及每台 VM 的统计数据和 LRU 流记录,所有这些都可以通过 /api/vms/{name}/dataplane/{status,policy,stats,flows} 及相应的 zyvorctl dataplane 子命令进行读写。策略更新被描述为原位的 BPF 映射重写,文档记录在重新配置期间存在短暂的“过度拒绝”窗口,而非任何“全部允许”的间隙。文档记录了三种模式:仅 legacy nftables、VM 边缘的 eBPF,以及 Cilium 共存模式。一个独立的 Service Fabric 层提供 Maglev VIP 负载均衡及相关设施。持久化策略存储在 /var/lib/fluxvm/network-policy,固定程序和映射位于 /sys/fs/bpf/fluxvm。通用 PCI/VFIO 透传通过 REST API 暴露,用于 GPU 等设备。 部署 共有四种记录的部署路径:通过 systemd 或带有辅助脚本(包括单命令 "ship" 流程)的直接二进制文件部署在裸机上;使用 Docker/Podman Compose 配合 /dev/kvm 和主机网络进行本地评估;使用特权 hostNetwork DaemonSets 结合 Helm chart 和远程 k3s 实验室脚本部署在 Kubernetes 上;以及针对现有守护进程的 GitOps 工作流的 operator-only 模式。Kubernetes 的要求包括节点上的 /dev/kvm、特权 Pod 安全级别以及构建主机上的 root 容器引擎。管理员凭据在部署时生成,可从磁盘或 zyvor-fabric-secrets Kubernetes Secret 中获取,并可通过环境变量进行设置或重置。 评估注意事项 README 中包含对比材料,认为该项目在 VM 边缘策略方面领先于 libvirt/nftables、共享桥接防火墙、QEMU 用户模式 NAT 以及典型的 microVM-plus-CNI 设置;这些是维护者的主张,且引用的若干性能数据(如策略更新延迟)被描述为实验室测量值。仓库内的主要文档涵盖了快速入门、Kubernetes、Docker、架构、网络、Web UX、主机生命周期、治理和安全策略。许可协议为 Apache-2.0。