{"id":13783480,"url":"https://github.com/devshawn/kafka-gitops","last_synced_at":"2026-02-18T05:13:53.804Z","repository":{"id":40661781,"uuid":"236228216","full_name":"devshawn/kafka-gitops","owner":"devshawn","description":"🚀Manage Apache Kafka topics and generate ACLs through a desired state file.","archived":false,"fork":false,"pushed_at":"2023-04-30T13:27:40.000Z","size":315,"stargazers_count":328,"open_issues_count":45,"forks_count":71,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-11T19:38:49.834Z","etag":null,"topics":["acl-management","acls","gitops","kafka","kafka-acls","kafka-cluster","kafka-dsf","kafka-gitops","kafka-manager","kafka-topics"],"latest_commit_sha":null,"homepage":"https://devshawn.github.io/kafka-gitops","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devshawn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-01-25T20:51:15.000Z","updated_at":"2025-04-23T07:47:56.000Z","dependencies_parsed_at":"2024-01-18T15:57:11.216Z","dependency_job_id":"8ae5b39d-398e-4262-966a-e10e32d8ed52","html_url":"https://github.com/devshawn/kafka-gitops","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/devshawn/kafka-gitops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devshawn%2Fkafka-gitops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devshawn%2Fkafka-gitops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devshawn%2Fkafka-gitops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devshawn%2Fkafka-gitops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devshawn","download_url":"https://codeload.github.com/devshawn/kafka-gitops/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devshawn%2Fkafka-gitops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29569856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T04:18:28.490Z","status":"ssl_error","status_checked_at":"2026-02-18T04:13:49.018Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["acl-management","acls","gitops","kafka","kafka-acls","kafka-cluster","kafka-dsf","kafka-gitops","kafka-manager","kafka-topics"],"created_at":"2024-08-03T19:00:22.555Z","updated_at":"2026-02-18T05:13:48.794Z","avatar_url":"https://github.com/devshawn.png","language":"Java","funding_links":[],"categories":["Operations","Configurations","Security"],"sub_categories":["CI/CD","Authentication \u0026 Authorization"],"readme":"# kafka-gitops\n\n![Java CI](https://github.com/devshawn/kafka-gitops/workflows/Java%20CI/badge.svg) [![Maintainability](https://api.codeclimate.com/v1/badges/373371aac3f69c292031/maintainability)](https://codeclimate.com/github/devshawn/kafka-gitops/maintainability) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\nManage Apache Kafka topics and ACLs through a desired state file.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://i.imgur.com/jnDwYp8.png\"/\u003e\n\u003c/p\u003e\n\n## Overview\n\nKafka GitOps is an Apache Kafka resources-as-code tool which allows you to automate the management of your Apache Kafka topics and ACLs from version controlled code. It allows you to define topics and services through the use of a desired state file, much like Terraform and other infrastructure-as-code tools.\n\nTopics and services get defined in a YAML file. When run, `kafka-gitops` compares your desired state to the actual state of the cluster and generates a plan to execute against the cluster. This will make your topics and ACLs match your desired state.\n\nThis tool also generates the needed ACLs for each type of application. There is no need to manually create a bunch of ACLs for Kafka Connect, Kafka Streams, etc. By defining your services, `kafka-gitops` will build the necessary ACLs.\n\nThis tool supports self-hosted Kafka, managed Kafka, and Confluent Cloud clusters.\n\n## Features\n\n- 🚀  **Built For CI/CD**: Made for CI/CD pipelines to automate the management of topics \u0026 ACLs.\n- 🔥  **Configuration as code**: Describe your desired state and manage it from a version-controlled declarative file.\n- 👍  **Easy to use**: Deep knowledge of Kafka administration or ACL management is **NOT** required. \n- ⚡️️  **Plan \u0026 Apply**: Generate and view a plan with or without executing it against your cluster.\n- 💻  **Portable**: Works across self-hosted clusters, managed clusters, and even Confluent Cloud clusters.\n- 🦄  **Idempotency**: Executing the same desired state file on an up-to-date cluster will yield the same result.\n- ☀️  **Continue from failures**: If a specific step fails during an apply, you can fix your desired state and re-run the command. You can execute `kafka-gitops` again without needing to rollback any partial successes.\n\n## Getting Started\n\nDocumentation on how to install and use this tool can be found on our [documentation site][documentation].\n\n## Usage\n\nRun `kafka-gitops` to view the help output.\n\n```bash\nUsage: kafka-gitops [-hvV] [--no-delete] [--skip-acls] [-f=\u003cfile\u003e] [COMMAND]\nManage Kafka resources with a desired state file.\n  -f, --file=\u003cfile\u003e   Specify the desired state file.\n  -h, --help          Display this help message.\n      --no-delete     Disable the ability to delete resources.\n      --skip-acls     Do not take ACLs into account during plans or applies.\n  -v, --verbose       Show more detail during execution.\n  -V, --version       Print the current version of this tool.\nCommands:\n  account   Create Confluent Cloud service accounts.\n  apply     Apply changes to Kafka resources.\n  plan      Generate an execution plan of changes to Kafka resources.\n  validate  Validates the desired state file.\n```\n\n## Configuration\n\nCurrently, configuring bootstrap servers and other properties is done via environment variables:\n\nTo configure properties, prefix them with `KAFKA_`. For example:\n\n* `KAFKA_BOOTSTRAP_SERVERS`: Injects as `bootstrap.servers`\n* `KAFKA_CLIENT_ID`: Injects as `client.id`\n\nAdditionally, we provide helpers for setting the `sasl.jaas.config` for clusters such as Confluent Cloud.\n\nBy setting:\n\n* `KAFKA_SASL_JAAS_USERNAME`: Username to use\n* `KAFKA_SASL_JAAS_PASSWORD`: Password to use\n\nThe following configuration is generated:\n\n* `sasl.jaas.config`: `org.apache.kafka.common.security.plain.PlainLoginModule required username=\"USERNAME\" password=\"PASSWORD\";`\n\n## State File\n\nBy default, `kafka-gitops` looks for `state.yaml` in the current directory. You can also use `kafka-gitops -f` to pass a file.\n\nAn example desired state file:\n\n```yaml\ntopics:\n  example-topic:\n    partitions: 6\n    replication: 3\n    configs:\n      cleanup.policy: compact\n\nservices:\n  example-service:\n    type: application\n    produces:\n      - example-topic\n    consumes:\n      - example-topic\n```\n\n## Contributing\n\nContributions are very welcome. See [CONTRIBUTING.md][contributing] for details.\n\n## License\n\nCopyright (c) 2020 Shawn Seymour.\n\nLicensed under the [Apache 2.0 license][license].\n\n[documentation]: https://devshawn.github.io/kafka-gitops\n[contributing]: ./CONTRIBUTING.md\n[license]: ./LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevshawn%2Fkafka-gitops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevshawn%2Fkafka-gitops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevshawn%2Fkafka-gitops/lists"}