monedula-gitops
一款面向 Apache Kafka 的 GitOps 工具:管理主题、访问权限、配额、schema、SCRAM 用户和 Confluent RBAC,可通过 CLI 或 Kubernetes operator 运行。
本页由英文机器翻译而成。 阅读原文
monedula-acl-rbac-converter v0.10.0, AGPL-3.0
monedula-acl-rbac-converter 从 ACL 所在的任何地方读取你的 Kafka ACL,规划等效的 Confluent RBAC 角色绑定并加以应用,然后向 MDS 确认每一项原有权限是否仍然成立。只有在这之后,它才会写出删除旧 ACL 的脚本。
go install github.com/monedula-dev/monedula-acl-rbac-converter/cmd/monedula-acl-rbac@latest {
"schema_version": "1",
"bindings": [
{
"id": "rb-b6fac2ae9aa0",
"action": "CREATE",
"principal": "User:svc-analytics",
"role": "DeveloperRead",
"scope": { "kafka_cluster": "lkc-demo-1" },
"resource_patterns": [
{ "resource_type": "Topic", "name": "events.", "pattern_type": "PREFIXED" }
],
"source_acl_ids": [11, 12]
}
]
} RUN=runs/2026-05-21T10-00-00Zmonedula-acl-rbac extract --from text --input acls.txt --out $RUN/acls.jsonmonedula-acl-rbac plan --acls $RUN/acls.json --rules rules.yaml --principals principals.yaml --scopes scopes.yaml --out $RUN/plan.jsonmonedula-acl-rbac auth login --mds-url https://mds.example.commonedula-acl-rbac apply --plan $RUN/plan.json --mds-url https://mds.example.com --confirmmonedula-acl-rbac verify --plan $RUN/plan.json --mds-url https://mds.example.com# exit 0: every source ACL is still allowed; exit 5: some access is missing or unknown
plan.json 节选,来自仓库中的 examples/text-dump/expected/。
ACL 与 RBAC 并非一一对应。
把现有集群迁移到 Confluent RBAC,意味着要把每一条 ACL 变成角色绑定。有些 ACL(例如 DENY 规则)根本不应被转换,有些匹配不到任何映射规则,而一条绑定也可能顺利应用却什么权限都不授予。如果手工完成,其中每一种情况都会悄无声息地失败。
extract从九种来源中的任意一种读取 ACL,生成规范化的 acls.json。
plan用可覆盖的默认规则把它们映射为角色绑定,再由你阅读 report.txt。
apply在 MDS 中创建绑定。没有 --confirm,什么都不会改变。
verify向 MDS 确认每一项原有权限是否仍被允许。
delete-acls生成删除脚本及其回滚脚本,然后由你亲自运行。
verify 会针对每一条源 ACL 询问 MDS:原有的 principal、操作和资源现在是否真的被允许,而不只是检查是否存在一条绑定记录。集群 ID 不匹配时,生成的绑定能顺利应用,却什么权限也不授予;正是这项检查能发现这种问题。
monedula-acl-rbac verify \
--plan runs/2026-05-21T10-00-00Z/plan.json \
--mds-url https://mds.example.com \
--mds-token-file ~/.confluent/token 范围从不扩大:针对 Topic:foo* 的前缀 ACL 会变成针对 Topic:foo* 的绑定,绝不会变成集群范围的授权。计划带有校验和,过期或被修改的计划会被拒绝,直到你重新校验为止。
bindingsunmappedrejected给工具 MDS 访问权限,它就会自己应用并验证绑定。或者让 MDS 凭据留在原处:把计划输出为 Confluent CLI 脚本、CFK ConfluentRolebinding 清单或 MDS curl 命令,交给你的流水线去应用,之后再从一台有 MDS 访问权限的主机上运行 verify。想快速看一眼时,convert 可以在一次调用中完成 extract、plan 和 emit。
选择路径(英文)
monedula-acl-rbac convert \
--from yaml \
--input acls.yaml \
--scopes scopes.yaml \
--rules rules.yaml \
--principals principals.yaml \
> bindings.sh 每次运行都会把输入快照、生效的规则、计划、日志和回滚脚本保存在同一个目录中,并记录使用了哪个凭据来源。两次 apply 运行不会在同一个目录上发生竞争。
runs/2026-05-21T10-00-00Z/ acls.json source ACL snapshot plan.json checksummed plan report.txt what maps to what, and why would-apply.log dry-run calls apply.log what was created verify.json effective-access results delete-acls.sh generated, run by you
apply 从不删除源 ACL,delete-acls 会写出一个 kafka-acls --remove 脚本及其回滚脚本,由你检查并运行。该脚本只包含通过 verify 的 ACL;如果没有任何 ACL 通过,delete-acls 会报错停止。参见删除已转换的 ACL(英文)。delete-deny-acls 会生成一个脚本,在运行时为每条 ACL 重新检查有效权限;而通配 principal 的 DENY 永远无法通过该工具移除。参见移除 DENY ACL(英文)。同一团队开发的更多 Apache Kafka 免费工具。关于 Flock
一款面向 Apache Kafka 的 GitOps 工具:管理主题、访问权限、配额、schema、SCRAM 用户和 Confluent RBAC,可通过 CLI 或 Kubernetes operator 运行。
一款 Kafka MetricsReporter 插件,通过 OTLP 发送 broker、JVM 和 KIP-714 客户端指标;collector 宕机绝不会阻塞 Kafka。
一款只读的 Go CLI,把真实的 Kafka 集群变成可分享的 Kafka Simulator 链接,并为 AI 代理提供 MCP 服务器。
一款在浏览器中运行的交互式、确定性 Apache Kafka 模拟器:把集群弄坏,拖动时间线,看清它为何如此反应。