monedula-acl-rbac-converter
CLI que convierte ACL de Apache Kafka en role bindings RBAC de Confluent vía un plan con checksum y verifica el acceso efectivo antes de cualquier borrado.
Esta página se tradujo automáticamente del inglés. Leer el original
monedula-gitops v1.0.0, AGPL-3.0
Describe topics, acceso, cuotas, esquemas, usuarios SCRAM y RBAC de Confluent como YAML en Git. monedula-gitops lo compara con el clúster en vivo, aplica solo lo que ha cambiado y hace fallar la CI cuando hay drift. Los mismos manifiestos se ejecutan desde una CLI o un operador de Kubernetes.
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 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.
La configuración de Kafka rara vez vive en un solo sitio.
Los topics vienen de un script, las ACL de otro, los esquemas de los pipelines de las aplicaciones, las cuotas de un administrador y los role bindings RBAC de Confluent de otra herramienta más. Con el tiempo, solo el clúster en vivo describe el sistema, y nadie ha revisado esa descripción.
import clusterConvierte un clúster en vivo en manifiestos.
YAML + pull requestTopics, acceso, cuotas, esquemas, usuarios SCRAM y role bindings como YAML al estilo Kubernetes.
diffdiff y apply --dry-run muestran primero el plan frente al clúster en vivo.
applySolo se ejecutan las operaciones necesarias. El pruning y los cambios arriesgados esperan flags explícitos.
verifyverify termina con código 1 si hay drift, así que un job de CI programado detecta los cambios hechos fuera de Git.
La mayoría de las herramientas de Kafka guardan un topic en un sitio y su acceso en otro. monedula-gitops vincula el acceso al propio topic: enumera los productores y los consumidores, y se generan las ACL de topic y de grupo de consumidores correspondientes. En clústeres con RBAC, el mismo bloque puede compilarse en role bindings de Confluent MDS.
Cuando necesitas patrones con prefijo, grupos de consumidores compartidos o restricciones de host, tienes los recursos independientes KafkaAccessPolicy y KafkaRoleBinding.
KafkaTopic + KafkaUserKafkaTopic con un bloque accessimport cluster lee topics, ACL, cuotas, esquemas y, donde hay soporte, role bindings RBAC, y escribe manifiestos. Verificarlos contra el mismo clúster no reporta ningún drift.
Cómo importar un clúster (en inglés)
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 Un KafkaUser declara una credencial SCRAM, así que el topic, su acceso y el principal que lo usa se definen juntos en Git. La CLI lee la contraseña de una variable de entorno o de un archivo; el operador la lee de un Secret de Kubernetes, o genera una.
KafkaRoleBinding gestiona los role bindings de Confluent MDS junto a las ACL.
apiVersion: gitops.monedula.dev/v1alpha1
kind: KafkaUser
metadata:
name: svc-checkout
spec:
clusterRef: { name: prod }
password:
valueFrom: { env: SVC_CHECKOUT_PASSWORD } --dry-run previsualiza cada cambio. La CLI nunca elimina un topic, un usuario SCRAM o una cuota que quites de Git. --prune solo elimina ACL y role bindings que caen dentro de un permiso que tus manifiestos todavía declaran, y los cambios arriesgados, como aumentar el número de particiones, rebajar la compatibilidad de un esquema o quitar un límite de cuota, esperan a --allow-destructive. En Kubernetes, la política de eliminación de un topic decide si eliminar el recurso también elimina el topic, y Delete requiere además la anotación allow-delete.
Las barreras de seguridad (en inglés)
| 0 | Éxito, o ningún drift para verify |
|---|---|
| 1 | Drift detectado (verify) |
| 2 | Error de validación, de configuración o de conexión, o una operación fallida |
| 3 | Solo quedan operaciones protegidas: esperan a --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 Hay binarios precompilados para Linux y macOS en la página de releases. Siguiente paso: primeros pasos con la CLI (en inglés).
Podemos ayudarte a usar monedula-gitops en una infraestructura grande, desde el diseño hasta la operación diaria.
Más herramientas gratuitas para Apache Kafka del mismo equipo. Acerca de Flock
CLI que convierte ACL de Apache Kafka en role bindings RBAC de Confluent vía un plan con checksum y verifica el acceso efectivo antes de cualquier borrado.
Plugin MetricsReporter de Kafka que envía métricas de broker, JVM y clientes KIP-714 por OTLP; una caída del collector nunca bloquea Kafka.
CLI en Go de solo lectura que convierte un clúster de Kafka real en un enlace compartible de Kafka Simulator, con un servidor MCP para agentes de IA.
Simulador de Apache Kafka interactivo y determinista en el navegador: rompe un clúster, recorre la línea de tiempo y lee por qué reaccionó.