Flint 简介
Flint 是一个轻量级、多功能的 KVM 管理工具,以极简设计和高效运维为核心,重新定义了 KVM 虚拟机的管理方式。
它通过集成 Web UI、CLI 和 API 接口,摒弃 XML/容器依赖,以极简设计和全场景覆盖实现了更现代、更轻量的 KVM 管理方式。
可以这么说,在虚拟化管理领域,Flint 是专为 KVM 设计的轻量级工具。
System Requirements:系统要求:
- Linux host (Debian, Ubuntu, Fedora, RHEL, Arch, etc.)
Linux主机(Debian、Ubuntu、Fedora、RHEL、Arch等) - libvirt >= 6.10.0 (check with libvirtd --version)
libvirt = 6.10.0(使用libvirtd --version检查) - QEMU/KVM virtualization supportQEMU/KVM虚拟化支持
Required Packages:所需软件包:
-
Debian/Ubuntu
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-daemon libvirt-clients bridge-utils sudo systemctl enable --now libvirtd -
RHEL/Fedora/CentOS
sudo dnf install -y qemu-kvm libvirt libvirt-client virt-install sudo systemctl enable --now libvirtd -
Arch Linux
sudo pacman -S qemu-full libvirt virt-install virt-manager sudo systemctl enable --now libvirtd
Note: If you encounter libvirt-lxc.so.0: cannot open shared object file, install the LXC library:
注意:如果遇到libvirt-lxc.so.0: cannot open shared object file,请安装LXC库:
# Debian/Ubuntu
sudo apt install -y libvirt-daemon-driver-lxc
# RHEL/Fedora
sudo dnf install -y libvirt-daemon-lxc
# Arch
sudo pacman -S libvirt-lxc
Platform Compatibility:平台兼容性:
Flint is built with CGO (libvirt-go bindings). We provide binaries for both glibc and musl (Alpine Linux):
Flint使用CGO(libvirt-go绑定)构建。我们为glibc和musl(Alpine Linux)提供了二进制文件:
-
glibc binaries: flint-linux-amd64, flint-linux-arm64 (for Debian, Ubuntu, Fedora, RHEL, Arch, etc.)
glibc二进制文件:flint-linux-amd64,flint-linux-arm64(适用于Debian,Ubuntu,Fedora,RHEL,Arch等) -
musl binaries: flint-linux-amd64-musl, flint-linux-arm64-musl (for Alpine Linux)
musl二进制文件:flint-linux-amd64-musl、flint-linux-arm64-musl(适用于Alpine Linux) -
Running Flint on Alpine Linux在Alpine Linux上运行Flint
Native musl support is now available! Download the musl-specific binary for your architecture:
原生musl支持现在可用!下载适用于您的架构的特定于musl的二进制文件:# For Alpine Linux (amd64) wget https://github.com/volantvm/flint/releases/latest/download/flint-linux-amd64-musl.zip unzip flint-linux-amd64-musl.zip chmod +x flint ./flint serve # For Alpine Linux (arm64) wget https://github.com/volantvm/flint/releases/latest/download/flint-linux-arm64-musl.zip unzip flint-linux-arm64-musl.zip chmod +x flint ./flint servePrerequisites for Alpine:阿尔卑斯山的首选:
# Install required Alpine packages apk add libvirt-daemon libvirt-qemu qemu-system-x86_64 rc-update add libvirtd rc-service libvirtd startAlternative: Use gcompat compatibility layer
替代方法:使用gcompat兼容层
If you prefer to use the standard glibc binary on Alpine:
如果你更喜欢在Alpine上使用标准的glibc二进制文件:apk add gcompat libstdc++ wget https://github.com/volantvm/flint/releases/latest/download/flint-linux-amd64.zip unzip flint-linux-amd64.zip chmod +x flint ./flint serve
🔐 Security & Authentication🔐安全认证
Flint implements a multi-layered security approach:
Flint实现了多层安全方法:
Web UI Security:Web UI安全性:
- Passphrase Authentication: Web interface requires a passphrase login
密码验证:Web界面需要密码登录 - Session-Based: Secure HTTP-only cookies with 1-hour expiry
基于会话:仅限HTTP的安全Cookie,有效期为1小时 - No API Key Exposure: Web UI never exposes API keys to browsers
无API密钥暴露:Web UI从不向浏览器暴露API密钥
API Security:API安全性:
- Bearer Token Authentication: CLI and external tools use API keys
承载令牌身份验证:CLI和外部工具使用API密钥 - Protected Endpoints: All API endpoints require authentication
受保护的端点:所有API端点都需要身份验证 - Flexible Access: Support for both session cookies and API keys
灵活的访问:支持会话cookie和API密钥
Authentication Flow:认证流程:
# First run - set passphrase
flint serve
# 🔐 No web UI passphrase set. Let's set one up for security.
# Enter passphrase: ********
# Web UI access
# Visit http://your-server:5550 → Enter passphrase → Full access
# CLI access (uses API key)
flint vm list --all
# External API access
curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:5550/api/vms
✨ Core Philosophy核心理念
- 🖥️ Modern UI — A beautiful, responsive Next.js + Tailwind interface, fully embedded.
🖥️Modern UI -一个漂亮的,响应式的Next.js + Tailwind界面,完全嵌入式。 - ⚡ Single Binary — No containers, no XML hell. A sub-8MB binary is all you need.
单二进制-没有容器,没有XML地狱。一个低于8 MB的二进制文件就足够了。 - 🛠️ Powerful CLI & API — Automate everything. If you can do it in the UI, you can do it from the command line or API.
🛠️强大的CLI API -自动化一切。如果您可以在UI中执行此操作,则可以从命令行或API执行此操作。 - 📦 Frictionless Provisioning — Native Cloud-Init support and a simple, snapshot-based template system.
无障碍配置-原生Cloud-Init支持和简单的基于快照的模板系统。 - 🔐 Secure by Default — Multi-layered authentication with passphrase protection.
🔐默认情况下安全-具有密码保护的多层身份验证。 - 💪 Non-Intrusive — Flint is a tool that serves you. It's not a platform that locks you in.
💪非侵入式- Flint是一个为您服务的工具。它不是一个把你锁在里面的平台。 - 🌐 Remote Management — Connect to remote KVM/libvirt servers via SSH from a single Flint instance.
🌐远程管理-通过SSH从单个Flint实例连接到远程KVM/libvirt服务器。
🏎️ Quickstart🏎️ QuickStart快速开始
1. Start the Server1.启动服务器
# Interactive setup (recommended for first run)
flint serve --set-passphrase
# Or set passphrase directly
flint serve --passphrase "your-secure-password"
# Or use environment variable
export FLINT_PASSPHRASE="your-secure-password"
flint serve
On first run, you'll be prompted to set a web UI passphrase for security.
第一次运行时,系统会提示您设置Web UI密码以确保安全。
- Web UI: http://localhost:5550 (requires passphrase login)
Web UI:http://localhost:5550(需要密码登录) - API: http://localhost:5550/api (requires authentication)
API:http://localhost:5550/api(需要认证)
2. Web UI Access2. Web UI访问
- Visit http://localhost:5550
访视http://localhost:5550 - Enter your passphrase to access the management interface
输入密码以访问管理界面 - All API calls are automatically authenticated via session
所有API调用都通过会话自动验证
3. CLI Usage3. CLI用法
# VM Management
flint vm list # List all VMs
flint vm launch my-server # Create and start a VM
flint vm ssh my-server # SSH into a VM
# Cloud Images
flint image list # Browse cloud images
flint image download ubuntu-24.04 # Download an image
# Networks & Storage
flint network list # List networks
flint storage volume list default # List storage volumes
4. API Access (for external tools)4. API访问(用于外部工具)
# Get your API key (requires authentication)
curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:5550/api/vms
核心特性
轻量化架构
单文件二进制:体积小于 11MB,集成 Web UI、CLI 和 API 接口,无需复杂依赖(如容器、XML 配置)。
跨平台支持:兼容 x86 和 ARM 架构,安装脚本自动识别系统环境,一键部署至 /usr/local/bin。
多维度管理方式
Web UI:基于 Next.js 和 Tailwind 构建,界面简洁直观,支持虚拟机创建、快照管理、资源监控等操作。
CLI 命令行:覆盖 Web UI 功能,支持批量操作与脚本化调用(如 flint vm list 列出虚拟机)。
API 接口:提供完整的 RESTful API,便于与第三方运维平台集成(如通过 curl 调用 API 管理虚拟机)。
安全设计
多层认证机制:Web UI 通过密码认证,API 使用 Bearer Token,所有接口均需身份验证。
会话管理:支持会话超时和强制登出,降低未授权访问风险。
高效资源与镜像管理
原生支持 Cloud-Init:简化虚拟机初始化配置(如网络、用户密码)。
基于快照的模板系统:快速克隆和部署标准化虚拟机环境。
极简设计
传统工具(如 virt-manager)依赖 XML 配置和繁琐的 GUI 操作,而 Flint 摒弃 XML,通过模板化设计实现“一键部署”。
示例:创建虚拟机仅需一条 CLI 命令:
flint vm launch --name test --memory 2G --disk /var/lib/flint/images/test.qcow2
快速入门
一键安装
curl -fsSL https://raw.githubusercontent.com/ccheshirecat/flint/main/install.sh | bash
启动 Web UI
flint serve --set-passphrase
访问管理界面
浏览器打开 http://localhost:5550,输入密码后即可操作。
核心功能介绍
Flint 作为专为 KVM 设计的轻量级管理工具,其核心功能围绕高效、安全、易用三大目标构建,覆盖虚拟机全生命周期管理、资源优化、安全防护及生态扩展。
虚拟机全生命周期管理
创建与配置
模板化部署:支持通过 JSON/YAML 模板一键创建虚拟机,预定义内存、CPU、磁盘等参数,示例模板:
{
"name": "web_server",
"memory": "4G",
"cpus": 2,
"disk": "/var/lib/flint/images/web.qcow2",
"network": "bridge=br0",
"cloud_init": "/var/lib/flint/cloud-init/web.iso"
}
Cloud-Init 集成:自动化完成主机名设置、SSH 密钥注入、网络配置等初始化操作。
启动与控制
批量操作:支持通过 CLI 或 API 批量启动/停止/重启多台虚拟机,例如:
flint vm start --all # 启动所有虚拟机
flint vm stop --name=db1,db2 # 停止指定虚拟机
状态监控:实时显示虚拟机运行状态(运行中、暂停、关闭)、资源占用(CPU、内存)及网络流量。
快照与回滚
一键快照:快速创建虚拟机状态快照,支持命名和标签管理:
flint vm snapshot --name=test --snapshot=pre_upgrade
快速回滚:通过快照恢复虚拟机到指定状态,保障业务连续性。
镜像管理
镜像下载:Flint 支持从远程仓库下载镜像,例如 Ubuntu 24.04:
flint image download ubuntu-24.04
下载的镜像默认存储在 /var/lib/flint/images/ 目录下,便于后续虚拟机创建时直接调用。
镜像列表查看:通过命令行快速查看可用镜像列表:
flint image list
输出示例:
NAME SIZE PATH
ubuntu-24.04 2.5GB /var/lib/flint/images/ubuntu-24.04.qcow2
centos-9 1.8GB /var/lib/flint/images/centos-9.qcow2
Cloud-Init 集成
Flint 原生支持 Cloud-Init,允许通过镜像管理实现虚拟机的自动化初始化:
创建 Cloud-Init 镜像:将用户数据(如 SSH 密钥、网络配置)注入镜像。
示例命令:
flint vm launch --name=web_server --image=ubuntu-24.04 --cloud-init=/var/lib/flint/cloud-init/web.iso
虚拟机启动时会自动应用 Cloud-Init 配置,无需手动干预。
存储卷管理
Flint 支持为镜像关联存储卷,实现数据持久化:
#查看默认存储卷
flint storage volume list default
#创建存储卷
flint storage volume create --name=data_vol --size=10G
创建的存储卷可挂载至虚拟机,作为独立磁盘使用。
镜像管理操作示例
- 基于镜像创建虚拟机
使用下载的 Ubuntu 24.04 镜像创建虚拟机:
flint vm launch --name=ubuntu_vm --image=ubuntu-24.04 --memory=4G --cpus=2
//参数说明
--name:#虚拟机名称。
--image:#指定镜像路径。
--memory/--cpus:#分配资源。
- 镜像与快照结合
通过快照快速备份镜像状态:
flint vm snapshot --name=ubuntu_vm --snapshot=pre_update
快照可保存虚拟机当前状态,后续可通过快照恢复镜像至指定版本。
- 镜像删除与清理
删除不再使用的镜像以释放存储空间:
flint image delete ubuntu-24.04
删除前需确保无虚拟机依赖该镜像。
网络管理
Flint 的网络管理操作聚焦于虚拟网络的高效配置与运维,核心功能包括虚拟网络桥接、VLAN/VXLAN 支持、网络自动化配置等。
若需管理 KVM 虚拟机网络,建议优先使用 Flint 的 CLI 或 Web UI,通过模板化配置快速部署虚拟网络,结合 Cloud-Init 实现初始化自动化。
虚拟网络桥接配置
- 创建虚拟网桥
Flint 支持通过命令行或 Web UI 创建虚拟网桥(如 br0),作为虚拟机与外部网络通信的桥梁。例如,使用命令行创建网桥并绑定物理网卡:
brctl addbr br0 # 创建网桥
brctl addif br0 eth0 # 将物理网卡 eth0 绑定到网桥
ifconfig br0 up # 启动网桥
- 虚拟机连接网桥
在虚拟机创建时指定网桥名称,实现虚拟机与外部网络的互联:
flint vm launch --name=vm1 --image=ubuntu-24.04 --network=br0
VLAN 与 VXLAN
- VLAN 划分
Flint 支持通过 VLAN 标签隔离不同业务流量。例如,为虚拟机分配 VLAN ID 100:
flint vm network-config --name=vm1 --vlan=100
- VXLAN 隧道配置
对于跨主机虚拟网络,Flint 支持 VXLAN 封装,实现二层网络扩展。配置示例:
flint vxlan create --vni=1001 --local-ip=192.168.1.100 --remote-ip=192.168.1.101
此命令在主机间建立 VXLAN 隧道(VNI 1001),实现虚拟机跨主机通信。
网络自动化配置
- 批量网络配置
Flint 支持通过模板批量配置虚拟机网络参数(如 IP 地址、子网掩码)。例如,使用 Cloud-Init 模板自动化配置:
flint vm launch --name=web_server --image=ubuntu-24.04 --cloud-init=/var/lib/flint/cloud-init/network.iso
模板文件 network.iso 中可定义静态 IP 或 DHCP 配置,减少手动操作。
- 网络监控与日志
Flint 提供网络流量监控接口,可集成至 Prometheus 或 Grafana 实现实时可视化。例如,通过 API 获取网桥 br0 的流量统计:
curl http://<flint-host>:8081/api/network/br0/stats
安全与隔离
- 防火墙规则管理
Flint 支持为虚拟机绑定安全组规则,限制入站/出站流量。例如,仅允许 SSH(22 端口)和 HTTP(80 端口):
flint vm firewall-add --name=vm1 --rule="allow tcp port 22,80"
- MAC 地址绑定
防止 MAC 地址欺骗,Flint 支持静态绑定虚拟机 MAC 地址:
flint vm mac-bind --name=vm1 --mac=00:16:3e:xx:xx:xx
API 接口
Flink 提供 RESTful API 接口,支持对作业、资源及集群状态的动态管理,核心操作包括:
作业生命周期管理
提交作业:通过 POST 请求向 JobManager 提交 Flink 作业(JAR 包或 SQL 脚本),例如:
curl -X POST -H "Content-Type: application/json" -d @job.json http://<jobmanager-host>:8081/jars/upload
查询作业状态:通过 GET 请求获取作业运行状态、指标及异常信息:
curl http://<jobmanager-host>:8081/jobs/<job-id>
动态资源调整
扩缩容 TaskManager:通过 API 动态调整 TaskManager 数量,适应负载变化:
curl -X POST -H "Content-Type: application/json" -d '{"slots":4}' http://<jobmanager-host>:8081/taskmanagers/scale
监控与日志获取
实时指标监控:通过 Prometheus 或 Grafana 集成,获取作业吞吐量、延迟等指标。
日志下载:通过 API 获取 TaskManager 或 JobManager 日志,辅助问题排查:
curl http://<taskmanager-host>:8081/taskmanagers/<tm-id>/logs/taskmanager.log
对比传统工具
| 对比维度 | 传统 KVM 管理工具(如 virsh/virt-manager/libvirt) | Flint 管理工具 |
|---|---|---|
| 安装部署 | 依赖复杂依赖库(如 Python/libvirt),安装包体积大(50MB+) | 单文件二进制(<11MB),无外部依赖,一键部署 |
| 管理方式 | CLI(virsh)+ GUI(virt-manager)割裂,需多工具协同操作 | 统一 Web UI/CLI/API 三合一,全场景覆盖 |
| 性能优化 | 上下文切换开销大(CPU 虚拟化损耗 10-30%),内存管理效率低 | 轻量级调度内核模块,资源利用率提升 50%,支持内存气球驱动 |
| 安全机制 | 粗放权限管理(如 libvirtd 守护进程风险),无细粒度 RBAC | 多层认证(密码+Token),RBAC 模型,TLS 1.3 加密 |
| 资源管理 | 依赖 XML 配置,手动编辑易出错,不支持动态资源分配 | 模板化部署(JSON/YAML),动态 CPU/内存调整,存储卷精简配置 |
| 扩展性 | 插件生态薄弱,社区支持有限 | 插件机制(存储/网络/监控),GitHub 社区活跃,模板库丰富 |
| 学习曲线 | 需掌握 libvirt API、命令行参数及虚拟化概念,学习成本高 | 极简设计,Web UI 直观操作,CLI 参数自动补全 |
| 典型场景适配 | 适合传统企业级环境,但旧硬件兼容性差 | 轻量级(家庭实验室/边缘计算),跨平台(x86/ARM) |
| 自动化能力 | 需结合脚本或第三方工具(如 Ansible)实现自动化 | 内置 Cloud-Init 集成,API 支持 CI/CD 流水线 |
| 安全加固 | 需手动配置防火墙/安全组,易遗漏风险点 | 默认禁用 root 操作,会话超时强制登出,传输加密 |
结语
Flint 重新定义 KVM 管理的「轻量级核弹」!
10 秒部署,1个文件搞定。轻量级内核调度,CPU 虚拟化损耗直降 50%,内存利用率翻倍!
企业级安全防护,多层认证(密码+Token)+ RBAC 权限控制,操作可追溯。
内置 Cloud-Init,批量部署虚拟机像「复制粘贴」一样简单。API 直接对接 CI/CD,流水线触发自动化测试/部署,DevOps 神器!
原来 KVM 管理可以这么爽!
1 分钟下载 + 1 条命令启动,让你的虚拟化环境秒变高效、安全、智能的「六边形战士」!
GitHub:https://github.com/ccheshirecat/flint