monedula-acl-rbac-converter
一款 CLI,通过带校验和的计划把 Apache Kafka ACL 转换为 Confluent RBAC 角色绑定,并在任何 ACL 被删除之前验证有效访问。
本页由英文机器翻译而成。 阅读原文
monedula-gitops v0.1.0, AGPL-3.0
在 Git 中以 YAML 描述主题、访问权限、配额、schema、SCRAM 用户和 Confluent RBAC。monedula-gitops 会把它与运行中的集群比对,只应用发生变化的部分,并在集群出现漂移时让 CI 失败。同一套清单既可以由 CLI 运行,也可以由 Kubernetes operator 运行。
brew install monedula-dev/tap/monedula-gitops apiVersion: gitops.monedula.dev/v1alpha1
kind: KafkaTopic
metadata:
name: orders
spec:
clusterRef: { name: prod }
topicName: orders
partitions: 6
config:
retention.ms: "604800000"
access:
producers:
- principal: User:svc-checkout
consumers:
- principal: User:svc-fraud
group: fraud-orders monedula-gitops diff -f ./manifests --cluster-config-file ./cluster.yaml# preview: the topic, plus the ACLs its access block compiles tomonedula-gitops apply -f ./manifests --cluster-config-file ./cluster.yamlmonedula-gitops verify -f ./manifests --cluster-config-file ./cluster.yaml# exit 0: no drift. exit 1: drift, and the CI job fails.
Kafka 的配置很少集中在一个地方。
主题来自一个脚本,ACL 来自另一个脚本,schema 来自应用的流水线,配额来自管理员,Confluent RBAC 的角色绑定又来自另一套工具。时间一长,只有运行中的集群还描述着这个系统,而这份描述从未经过任何人评审。
import cluster 把运行中的集群转换为清单。
YAML + pull request 以 Kubernetes 风格的 YAML 描述主题、访问权限、配额、schema、SCRAM 用户和角色绑定。
diff diff 和 apply --dry-run 会先展示针对运行中集群的计划。
apply 只执行必要的操作。裁剪和有风险的变更需要显式的标志才会执行。
verify 发现漂移时 verify 返回退出码 1,因此定时运行的 CI 任务能发现绕过 Git 的变更。
大多数 Kafka 工具把主题放在一处,把它的访问权限放在另一处。monedula-gitops 把访问权限直接挂在主题上:列出生产者和消费者,相应的主题 ACL 和消费者组 ACL 就会自动生成。在使用 RBAC 的集群上,同一个块还可以编译为 Confluent MDS 角色绑定。
如果你需要前缀模式、共享消费者组或主机限制,还有独立的 KafkaAccessPolicy 和 KafkaRoleBinding 资源可用。
KafkaTopic + KafkaUseraccess 块的 KafkaTopicimport cluster 会读取主题、ACL、配额、schema,以及在受支持情况下的 RBAC 角色绑定,并写出清单。用同一个集群验证这些清单,不会报告任何漂移。
如何导入集群(英文)
monedula-gitops import cluster --cluster-config-file ./clusters/prod.yaml --output-dir ./imported
monedula-gitops verify -f ./imported -R --cluster-config-file ./clusters/prod.yaml # exits 0: no drift KafkaUser 声明一个 SCRAM 凭据,这样主题、它的访问权限以及使用它的 principal 都一起保存在 Git 中。CLI 从环境变量或文件读取密码;operator 从 Kubernetes Secret 读取密码,或自动生成一个。
KafkaRoleBinding 与 ACL 一起管理 Confluent MDS 角色绑定。
apiVersion: gitops.monedula.dev/v1alpha1
kind: KafkaUser
metadata:
name: svc-checkout
spec:
clusterRef: { name: prod }
password:
valueFrom: { env: SVC_CHECKOUT_PASSWORD } --dry-run 会预览每一项变更。对于你从 Git 中移除的主题、SCRAM 用户或配额,CLI 从不删除。--prune 只删除仍处于你的清单所声明的某项授权范围内的 ACL 和角色绑定;分区扩容、降低 schema 兼容性或移除配额上限这类有风险的变更要等待 --allow-destructive。在 Kubernetes 中,主题的删除策略决定删除资源时是否同时删除该主题,而 Delete 还需要 allow-delete 注解。
安全门禁(英文)
| 0 | 成功,或 verify 未发现漂移 |
|---|---|
| 1 | 检测到漂移(verify) |
| 2 | 校验、配置或连接错误,或某个操作失败 |
| 3 | 只剩下受门禁限制的操作:它们在等待 --allow-destructive |
brew install monedula-dev/tap/monedula-gitops go install github.com/monedula-dev/monedula-gitops/cmd/monedula-gitops@latest docker run --rm ghcr.io/monedula-dev/monedula-gitops:latest --help helm install monedula-gitops oci://ghcr.io/monedula-dev/charts/monedula-gitops 同一团队开发的更多 Apache Kafka 免费工具。关于 Flock
一款 CLI,通过带校验和的计划把 Apache Kafka ACL 转换为 Confluent RBAC 角色绑定,并在任何 ACL 被删除之前验证有效访问。
一款 Kafka MetricsReporter 插件,通过 OTLP 发送 broker、JVM 和 KIP-714 客户端指标;collector 宕机绝不会阻塞 Kafka。
一款只读的 Go CLI,把真实的 Kafka 集群变成可分享的 Kafka Simulator 链接,并为 AI 代理提供 MCP 服务器。
一款在浏览器中运行的交互式、确定性 Apache Kafka 模拟器:把集群弄坏,拖动时间线,看清它为何如此反应。