{"id":33083939,"url":"https://github.com/kafka-ops/julie","last_synced_at":"2026-01-11T17:01:16.590Z","repository":{"id":39995523,"uuid":"198162143","full_name":"kafka-ops/julie","owner":"kafka-ops","description":"A solution to help you build automation and gitops in your Apache Kafka deployments. The Kafka gitops!","archived":false,"fork":false,"pushed_at":"2024-06-14T10:51:50.000Z","size":2815,"stargazers_count":438,"open_issues_count":82,"forks_count":121,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-11-16T03:04:31.057Z","etag":null,"topics":["acls","ci-cd","configuration","gitops","gitops-toolkit","kafka","kafka-cluster","topics"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kafka-ops.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-22T06:35:26.000Z","updated_at":"2025-11-11T03:20:02.000Z","dependencies_parsed_at":"2024-01-17T03:16:00.313Z","dependency_job_id":"31de1724-81dc-49d0-b457-37cd608e434f","html_url":"https://github.com/kafka-ops/julie","commit_stats":null,"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/kafka-ops/julie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kafka-ops%2Fjulie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kafka-ops%2Fjulie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kafka-ops%2Fjulie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kafka-ops%2Fjulie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kafka-ops","download_url":"https://codeload.github.com/kafka-ops/julie/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kafka-ops%2Fjulie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28314254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acls","ci-cd","configuration","gitops","gitops-toolkit","kafka","kafka-cluster","topics"],"created_at":"2025-11-14T13:00:27.286Z","updated_at":"2026-01-11T17:01:16.528Z","avatar_url":"https://github.com/kafka-ops.png","language":"Java","funding_links":[],"categories":["进程间通信","Configurations","Security"],"sub_categories":["Authentication \u0026 Authorization"],"readme":"# An operational manager for Apache Kafka (Automation, GitOps, SelfService)\n\n## Note - Governance - Hibernation state\n\nI'm gratefuly of how many people the JulieOps project has helped during it existance, it is totally mind blowing to get more than 300 starts for a humble human like me, thanks everyone!!.\n\nSadly this days, between my workload and personal arrangements, the project has been lacking proper mantainance and care, what honestly makes me very sad as I would love to see it grow and provide more and more people with such features, I'm a big beliver of self service and automation.\n\nSo, until new notice, or something change, you should take the project with care, as currently it is mostly on a long winter hibernation :-) I'm sorry for this, but I can't do more as a mostly sole mantainer.\n\nThanks again to everyone who was, is or will be involved with the project life.\n\n\u003ccenter\u003e\n\u003cimg src=\"https://media.kidadl.com/Do_Pandas_Hibernate_Why_Are_They_More_Active_During_Winter_d5daed1b94.jpg\" alt=\"panda\" width=\"300\"/\u003e\n \u003c/center\u003e\n\n-- Pere\n\n### README\n\n*NOTE*: This project was formally known as Kafka Topology Builder, old versions of this project can still be found under that name.\n\n\u003ca href=\"https://codeclimate.com/github/purbon/kafka-topology-builder/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/ef4bcda7d1b5fd0a4f1e/maintainability\" /\u003e\u003c/a\u003e ![CI tests](https://github.com/kafka-ops/kafka-topology-builder/workflows/CI%20tests/badge.svg?branch=master) [![Gitter](https://badges.gitter.im/kafka-topology-builder/community.svg)](https://gitter.im/kafka-topology-builder/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge) [![Documentation Status](https://readthedocs.org/projects/julieops/badge/?version=latest)](https://julieops.readthedocs.io/?badge=latest)\n\nJulieOps helps you automate the management of your things within Apache Kafka, from Topics,\nConfiguration to Metadata but as well Access Control, Schemas.\nMore items are plan, check [here](https://github.com/kafka-ops/julie/issues) for details.\n\n## The motivation\n\nOne of the typical questions while building an Apache Kafka infrastructure is how to handle topics,\nconfigurations and the required permissions to use them (Access Control List).\n\nThe JulieOps cli, in close collaboration with git and Jenkins (CI/CD) is here to help you setup an\norganised and automated way of managing your Kafka Cluster.\n\n## Where's the docs?\n\nWe recommend taking time to [read the docs](https://julieops.readthedocs.io/en/latest/).\nThere's quite a bit of detailed information about GitOps, Apache Kafka and how this project can help you automate\nthe common operational tasks.\n\n## Automating Management with CI/CD and GitOps\n\n![JulieOps](imgs/julie-ops.png)\n\nYou might be wondering what is the usual workflow to implement this approach:\n\n**Action**: As a user, part of a developer team (for example), I like to have some changes in Apache Kafka.\n\n**Change Request**: As a user:\n\n- Go to the git repository where the topology is described\n- Create a new branch\n- Perform the changes need\n- Make a pull request targeting master branch\n\n**Approval process**: As an ops admin, I can:\n\n- Review the pull request (change request) initiated by teams\n- Request changes when need\n- Merge the requests.\n\nConsiderations:\n\n* Using webhooks, the git server (github, gitlab or bitbucket) will inform the CI/CD system changes had happened\nand the need to apply them to the cluster.\n* All changes (git push) to master branch are disabled directly.\nChanges only can happen with a pull request. Providing a Change Management mechanism to fit into your org procedures.\n\n## Help??\n\nIf you are using the JulieOps tool, or plan to use it in your project? might be you have encounter a bug? or a challenge?\nneed a certain future? feel free to reach out into our [gitter community](https://gitter.im/kafka-topology-builder/community).\n\n[![Gitter](https://badges.gitter.im/kafka-topology-builder/community.svg)](https://gitter.im/kafka-topology-builder/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n## Feature list, not only bugs ;-)\n\nWhat can you achieve with this tool:\n\n* Support for multiple access control mechanisms:\n    * Traditional ACLs\n    * Role Bases Access Control as provided by Confluent\n* Automatically set access control rules for:\n    * Kafka Consumers\n    * Kafka Producers\n    * Kafka Connect\n    * Kafka Streams applications ( microservices )\n    * KSQL applications\n    * Schema Registry instances\n    * Confluent Control Center\n    * KSQL server instances\n* Manage topic naming with a topic name convention\n    * Including the definition of *projects*, *teams*, *datatypes* and for sure the topic name\n    * Some of the topics are flexible defined by user requirements\n* Allow for creation, delete and update of:\n    * topics, following the topic naming convention\n    * Topic configuration, variables like retention, segment size, etc\n    * Acls, or RBAC rules\n    * Service Accounts (Experimental feature only available for now in Confluent Cloud)\n* Manage your cluster schemas.\n    - Support for Confluent Schema Registry\n\nOut of the box support for Confluent Cloud and other clouds that enable you to use the AdminClient API.\n\n### How can I run JulieOps directly?\n\nThis tool is available in multiple formats:\n\n- As a Docker image, available from [docker hub](https://hub.docker.com/r/purbon/kafka-topology-builder)\n- As an RPM package, for the RedHat alike distributions\n- As a DEB package, for Debian based distros\n- Directly as a fat jar (zip/tar.gz)\n- As a fat jar.\n\nThe latest version are available from the [releases](https://github.com/kafka-ops/julie/releases) page.\n\n#### How to execute the tool\n\nThis is how you can run the tool directly as a docker image:\n\n```bash\ndocker run purbon/kafka-topology-builder:latest julie-ops-cli.sh  --help\nParsing failed cause of Missing required options: topology, brokers, clientConfig\nusage: cli\n    --brokers \u003carg\u003e                  The Apache Kafka server(s) to connect\n                                     to.\n    --clientConfig \u003carg\u003e             The client configuration file.\n    --dryRun                         Print the execution plan without\n                                     altering anything.\n    --help                           Prints usage information.\n    --overridingClientConfig \u003carg\u003e   The overriding AdminClient\n                                     configuration file.\n    --plans \u003carg\u003e                    File describing the predefined plans\n    --quiet                          Print minimum status update\n    --topology \u003carg\u003e                 Topology config file.\n    --validate                       Only run configured validations in\n                                     your topology\n    --version                        Prints useful version information.\n```\n\nIf you install the tool as rpm, you will have available in your $PATH the _julie-ops-cli.sh_.\nYou can run this script with the same options observed earlier, however you will need to be using, or be in the group,\nfor the user julie-kafka.\n\n#### An example topology\n\nAn example topology should look like this (in yaml format):\n\n```yaml\ncontext: \"context\"\nsource: \"source\"\nprojects:\n- name: \"foo\"\n  consumers:\n  - principal: \"User:app0\"\n  - principal: \"User:app1\"\n  streams:\n  - principal: \"User:App0\"\n    topics:\n      read:\n      - \"topicA\"\n      - \"topicB\"\n      write:\n      - \"topicC\"\n      - \"topicD\"\n  connectors:\n  - principal: \"User:Connect1\"\n    topics:\n      read:\n      - \"topicA\"\n      - \"topicB\"\n  - principal: \"User:Connect2\"\n    topics:\n      write:\n      - \"topicC\"\n      - \"topicD\"\n  topics:\n  - name: \"foo\" # topicName: context.source.foo.foo\n    config:\n      replication.factor: \"2\"\n      num.partitions: \"3\"\n  - name: \"bar\" # topicName: context.source.foo.bar\n    config:\n      replication.factor: \"2\"\n      num.partitions: \"3\"\n- name: \"bar\"\n  topics:\n  - name: \"bar\" # topicName: context.source.bar.bar\n    config:\n      replication.factor: \"2\"\n      num.partitions: \"3\"\n```\n\nmore examples can be found at the [example/](example/) directory.\n\nAlso, please check, the documentation in [the docs](https://julieops.readthedocs.io/) for extra information and\nexamples on managing ACLs, RBAC, Principales, Schemas and many others.\n\n## Troubleshooting guides\n\nIf you're having problems with JulieOps I would recommend lookup up two main sources of information:\n\n* The project [issues](https://github.com/kafka-ops/julie/issues) tracker. Highly possible others might have had your problem before.\n* Our always work in progress [troubleshooting guide](troubleshooting.md)\n\n## Interested in contributing back?\n\nInterested on contributing back? might be have an idea for a great future? or wanna fix a bug?\nCheck our [contributing](CONTRIBUTING.md) doc for guidance.\n\n## Building JulieOps from scratch (source code)\n\nThe project is build using Java and Maven, so both are required if you aim to build the tool from scratch.\nThe minimum version of Java supported is Java 8, note it soon will be deprecated here, it is only keep as supported\nfor very legacy environments.\n\nIt is recommended to run JulieOps with Java 11 and an open JDK version.\n\n### Building a release\n\nIf you are interested on building a release artifact from the source code, check our [release](RELEASE.md) doc for guidance.\n\nNightly builds as well as release builds are regularly available from the [Actions](https://github.com/kafka-ops/julie/actions)\nin this project.\n\nNightly release build are available as well from [here](https://github.com/kafka-ops/julie/actions/workflows/nightly-artifacts-build.yml).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkafka-ops%2Fjulie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkafka-ops%2Fjulie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkafka-ops%2Fjulie/lists"}