【Falco】运维与升级:0.43→0.44 成对换驱动
内容提要
本文介绍Falco 0.44.1版本升级要点:0.43驱动与0.44用户态不兼容,需成对升级至10.2.0+driver;删除legacy eBPF、gVisor和gRPC输出;0.44.1新增禁用BPF iterators功能。提供升级检查单,强调配置清除、驱动匹配、规则插件兼容等关键步骤,避免启动失败或事件丢失。
延伸解读
成对升级的必然性
0.43驱动与0.44用户态不兼容,源于API与Schema版本的大幅变更。只升级用户态而忽略驱动,会导致启动失败或无原始事件,且易被误判为规则错误。因此,升级时必须成对更换驱动至10.2.0+driver,并确保Helm滚动时重启loader或更新镜像标签,避免版本分叉。
配置清理与启动风险
0.44.0删除了legacy eBPF、gVisor和gRPC输出,若配置残留相关键,Falco可能在启动期直接失败。升级前需彻底清除engine.ebpf、gVisor、grpc_output等旧配置,并检查driver.kind是否合法。否则,即使二进制版本正确,也可能因配置问题导致服务不可用。
规则与插件兼容性
0.44.0引入规则语言增强和更严的schema校验,规则文件需通过新schema,插件(如container、k8smeta)需与0.44.1兼容。规则能加载不代表字段有值,插件元数据缺失会导致条件永远假。升级时需核对规则集和插件版本,避免因版本不匹配导致检测失效。
0.44.1的容器可用性改进
0.44.1新增禁用BPF iterators的功能,修复了0.44.0在容器PID命名空间下的问题。默认iterators仍可用,但在非host PID命名空间会自动禁用。升级到0.44.1可避免容器场景下的启动或事件丢失问题,但需评估是否需手动禁用iterators。
Q&A
Falco 0.43 升级到 0.44 时,为什么必须成对升级驱动?
因为 0.43 的驱动(kmod/modern_ebpf)与 0.44 的用户态不兼容,如果只升级用户态而驱动不匹配,会导致启动失败或无原始事件。必须将驱动升级到 10.2.0+driver 才能匹配 0.44 用户态。
Falco 0.44.0 删除了哪些功能?
Falco 0.44.0 删除了 legacy eBPF probe、gVisor engine 和 gRPC output(包括 gRPC server)。这些功能在 0.42/0.43 中已弃用,0.44.0 中彻底移除。
Falco 0.44.1 相比 0.44.0 增加了什么功能?
Falco 0.44.1 增加了禁用 BPF iterators 的支持,并修复了相关问题(bump libs 到 0.25.4)。默认仍启用 iterators,但在非 host PID 命名空间时会自动禁用。
升级 Falco 到 0.44.1 时,检查单中关于驱动和引擎的检查项有哪些?
检查单中关于驱动和引擎的检查项包括:驱动版本必须是 10.2.0+driver 且与用户态匹配;driver.kind 必须是 auto、modern_ebpf 或 kmod,不能是 ebpf;实际引擎(Driver 行)与预期一致,auto 分列记录。
Falco 0.44 升级时,如果配置中残留了旧键(如 engine.ebpf)会怎样?
如果配置中残留了旧键(如 engine.ebpf、gVisor、grpc_output 等),Falco 可能在启动期直接失败。因此升级前必须清除这些已删除的配置键。
Falco 0.44 升级时,规则和插件需要如何兼容?
规则文件需要通过新的 schema 校验,不能误用仅新版本支持的语法却钉在旧规则集;插件(如 container、k8smeta)需要与 0.44.1 兼容的版本,否则可能导致条件永远假。
Falco 0.44.1 中 BPF iterators 在什么情况下会自动禁用?
在非 host PID 命名空间时,BPF iterators 会自动禁用。默认仍可用 iterators 做启动态与 drop 后恢复。