monedula-acl-rbac-converter
Une CLI qui convertit les ACL Apache Kafka en bindings RBAC Confluent via un plan avec checksum et vérifie l'accès effectif avant toute suppression d'ACL.
Cette page a été traduite automatiquement depuis l’anglais. Lire l’original
monedula-gitops v0.1.0, AGPL-3.0
Décrivez topics, accès, quotas, schémas, utilisateurs SCRAM et RBAC Confluent en YAML dans Git. monedula-gitops compare cette description au cluster en production, n'applique que ce qui a changé et fait échouer la CI en cas de drift. Les mêmes manifestes s'exécutent depuis une CLI ou un opérateur 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 configuration de Kafka est rarement réunie en un seul endroit.
Les topics viennent d'un script, les ACL d'un autre, les schémas des pipelines applicatifs, les quotas d'un administrateur et les bindings de rôles RBAC Confluent d'un outil encore différent. Avec le temps, seul le cluster en production décrit le système, et personne n'a relu cette description.
import cluster Générer des manifestes depuis un cluster en production.
YAML + pull request Topics, accès, quotas, schémas, utilisateurs SCRAM et bindings de rôles en YAML de style Kubernetes.
diff diff et apply --dry-run montrent d'abord le plan face au cluster en production.
apply Seules les opérations nécessaires s'exécutent. Le pruning et les changements risqués attendent des flags explicites.
verify verify renvoie le code 1 en cas de drift : un job CI planifié détecte ainsi les changements faits en dehors de Git.
La plupart des outils Kafka gardent un topic à un endroit et ses accès à un autre. monedula-gitops rattache les accès au topic lui-même : listez les producteurs et les consommateurs, et les ACL de topic et de groupe de consommateurs correspondantes sont générées. Sur les clusters dotés du RBAC, ce même bloc peut être compilé en bindings de rôles Confluent MDS.
Pour les patterns préfixés, les groupes de consommateurs partagés ou les restrictions d'hôte, les ressources autonomes KafkaAccessPolicy et KafkaRoleBinding sont disponibles.
KafkaTopic + KafkaUserKafkaTopic avec un bloc accessimport cluster lit les topics, les ACL, les quotas, les schémas et, là où c'est pris en charge, les bindings de rôles RBAC, puis écrit des manifestes. Les vérifier face au même cluster ne signale aucun drift.
Importer un cluster (en anglais)
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 déclare des identifiants SCRAM : le topic, ses accès et le principal qui l'utilise sont décrits ensemble dans Git. La CLI lit le mot de passe dans une variable d'environnement ou un fichier ; l'opérateur le lit dans un Secret Kubernetes, ou en génère un.
KafkaRoleBinding gère les bindings de rôles Confluent MDS aux côtés des ACL.
apiVersion: gitops.monedula.dev/v1alpha1
kind: KafkaUser
metadata:
name: svc-checkout
spec:
clusterRef: { name: prod }
password:
valueFrom: { env: SVC_CHECKOUT_PASSWORD } --dry-run prévisualise chaque changement. La CLI ne supprime jamais un topic, un utilisateur SCRAM ou un quota que vous retirez de Git. --prune ne supprime que les ACL et les bindings de rôles qui relèvent d'une autorisation que vos manifestes déclarent encore, et les changements risqués, comme une augmentation du nombre de partitions, un abaissement de la compatibilité de schéma ou la suppression d'une limite de quota, attendent --allow-destructive. Dans Kubernetes, la politique de suppression d'un topic détermine si la suppression de la ressource supprime aussi le topic, et Delete exige en plus l'annotation allow-delete.
Les garde-fous (en anglais)
| 0 | Succès, ou aucun drift pour verify |
|---|---|
| 1 | Drift détecté (verify) |
| 2 | Erreur de validation, de configuration ou de connexion, ou opération en échec |
| 3 | Il ne reste que des opérations protégées : elles attendent --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 Des binaires précompilés pour Linux et macOS sont disponibles sur la page des releases. Ensuite : démarrer avec la CLI (en anglais).
Nous pouvons vous aider à mettre en œuvre monedula-gitops sur un parc étendu, de la conception à l’exploitation au quotidien.
Parlons-enD’autres outils gratuits pour Apache Kafka, par la même équipe. À propos de Flock
Une CLI qui convertit les ACL Apache Kafka en bindings RBAC Confluent via un plan avec checksum et vérifie l'accès effectif avant toute suppression d'ACL.
Un plugin Kafka MetricsReporter qui envoie les métriques broker, JVM et client KIP-714 via OTLP ; une panne du collector ne bloque jamais Kafka.
Une CLI Go en lecture seule qui transforme un vrai cluster Kafka en lien Kafka Simulator partageable, avec un serveur MCP pour les agents IA.
Un simulateur Apache Kafka interactif et déterministe dans le navigateur : cassez un cluster, parcourez la chronologie et lisez pourquoi il a réagi.