monedula-acl-rbac-converter
CLI che converte ACL di Apache Kafka in binding RBAC di Confluent tramite un piano con checksum e verifica l'accesso effettivo prima di ogni eliminazione.
Questa pagina è stata tradotta automaticamente dall'inglese. Leggi l'originale
monedula-gitops v0.1.0, AGPL-3.0
Descrivi topic, accessi, quote, schemi, utenti SCRAM e RBAC di Confluent come YAML in Git. monedula-gitops li confronta con il cluster in esecuzione, applica solo ciò che è cambiato e fa fallire la CI quando rileva un drift. Gli stessi manifest funzionano da una CLI o da un operator Kubernetes.
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.
La configurazione di Kafka si trova raramente in un unico posto.
I topic arrivano da uno script, le ACL da un altro, gli schemi dalle pipeline applicative, le quote da un amministratore e i role binding RBAC di Confluent da un ulteriore strumento. Col tempo solo il cluster in esecuzione descrive il sistema, e nessuno ha revisionato quella descrizione.
import cluster Trasforma un cluster in esecuzione in manifest.
YAML + pull request Topic, accessi, quote, schemi, utenti SCRAM e role binding come YAML in stile Kubernetes.
diff diff e apply --dry-run mostrano prima il piano rispetto al cluster in esecuzione.
apply Vengono eseguite solo le operazioni necessarie. Il pruning e le modifiche rischiose attendono flag espliciti.
verify verify esce con codice 1 in caso di drift, così un job CI pianificato intercetta le modifiche fatte fuori da Git.
La maggior parte degli strumenti per Kafka tiene un topic in un posto e i suoi accessi in un altro. monedula-gitops lega gli accessi al topic stesso: elenchi i producer e i consumer, e vengono generate le ACL di topic e di consumer group corrispondenti. Sui cluster con RBAC, lo stesso blocco può essere compilato in role binding di Confluent MDS.
Quando ti servono pattern con prefisso, consumer group condivisi o restrizioni sugli host, ci sono le risorse autonome KafkaAccessPolicy e KafkaRoleBinding.
KafkaTopic + KafkaUserKafkaTopic con un blocco accessimport cluster legge topic, ACL, quote, schemi e, dove supportati, i role binding RBAC, e scrive i manifest. Verificarli sullo stesso cluster non rileva alcun drift.
Come importare un cluster (in inglese)
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 dichiara una credenziale SCRAM, così il topic, i suoi accessi e il principal che lo usa stanno insieme in Git. La CLI legge la password da una variabile d'ambiente o da un file; l'operator la legge da un Secret di Kubernetes, oppure ne genera una.
KafkaRoleBinding gestisce i role binding di Confluent MDS insieme alle ACL.
apiVersion: gitops.monedula.dev/v1alpha1
kind: KafkaUser
metadata:
name: svc-checkout
spec:
clusterRef: { name: prod }
password:
valueFrom: { env: SVC_CHECKOUT_PASSWORD } --dry-run mostra in anteprima ogni modifica. La CLI non elimina mai un topic, un utente SCRAM o una quota che rimuovi da Git. --prune elimina solo ACL e role binding che rientrano in un permesso ancora dichiarato dai tuoi manifest, e le modifiche rischiose, come un aumento delle partizioni, un abbassamento della compatibilità di uno schema o la rimozione di un limite di quota, attendono --allow-destructive. In Kubernetes, la policy di eliminazione di un topic decide se eliminare la risorsa elimina anche il topic, e Delete richiede anche l'annotazione allow-delete.
Controlli di sicurezza (in inglese)
| 0 | Successo, o nessun drift per verify |
|---|---|
| 1 | Drift rilevato (verify) |
| 2 | Errore di validazione, di configurazione o di connessione, oppure un'operazione non riuscita |
| 3 | Restano solo operazioni protette: attendono --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 I binari precompilati per Linux e macOS sono nella pagina delle release. Passo successivo: iniziare con la CLI (in inglese).
Possiamo aiutarti a gestire monedula-gitops su un'infrastruttura estesa, dalla progettazione all'operatività quotidiana.
ParliamoneAltri strumenti gratuiti per Apache Kafka, dallo stesso team. Informazioni su Flock
CLI che converte ACL di Apache Kafka in binding RBAC di Confluent tramite un piano con checksum e verifica l'accesso effettivo prima di ogni eliminazione.
Plugin MetricsReporter per Kafka che invia metriche di broker, JVM e client KIP-714 via OTLP; un collector non disponibile non blocca mai Kafka.
CLI Go in sola lettura che trasforma un cluster Kafka reale in un link condivisibile a Kafka Simulator, con un server MCP per agenti IA.
Simulatore di Apache Kafka interattivo e deterministico nel browser: rompi un cluster, scorri la timeline e leggi perché ha reagito.
Pagina del prodotto (in inglese) Documentazione (in inglese)