Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/streamthoughts/jikkou
The Open source Resource as Code framework for Apache Kafka
https://github.com/streamthoughts/jikkou
acl automation cluster-manager datamesh git-ops kafka kafka-cluster kafka-manager kafka-topic tool yaml
Last synced: 3 months ago
JSON representation
The Open source Resource as Code framework for Apache Kafka
- Host: GitHub
- URL: https://github.com/streamthoughts/jikkou
- Owner: streamthoughts
- License: apache-2.0
- Created: 2018-07-16T19:53:53.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-03-25T03:14:25.000Z (3 months ago)
- Last Synced: 2024-03-25T08:59:44.128Z (3 months ago)
- Topics: acl, automation, cluster-manager, datamesh, git-ops, kafka, kafka-cluster, kafka-manager, kafka-topic, tool, yaml
- Language: Java
- Homepage: https://www.jikkou.io
- Size: 25.6 MB
- Stars: 154
- Watchers: 10
- Forks: 17
- Open Issues: 23
-
Metadata Files:
- Readme: README.adoc
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Lists
- awesome-kafka - Kafka Specs
- awesome-stars - streamthoughts/jikkou - The Open source Resource as Code framework for Apache Kafka (Java)
README
= Jikkou!
[.text-center]
image:./assets/jikkou-logo-title.png[align="center"][.text-center]
--
image:https://img.shields.io/github/license/streamthoughts/jikkou[]
image:https://img.shields.io/github/issues/streamthoughts/jikkou[]
image:https://img.shields.io/github/forks/streamthoughts/jikkou[]
image:https://img.shields.io/github/stars/streamthoughts/jikkou[]
image:https://github.com/streamthoughts/jikkou/actions/workflows/maven-build.yml/badge.svg[]image:https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou&metric=reliability_rating[Reliability_rating]
image:https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou&metric=sqale_rating[Maintainability Rating]
image:https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou&metric=vulnerabilities[Vulnerabilities]
image:https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou&metric=coverage[Coverage]image:https://img.shields.io/badge/Slack-Join%20Community-c92760?logo=slack[Slack Community, link=https://join.slack.com/t/jikkou-io/shared_invite/zt-27c0pt61j-F10NN7d7ZEppQeMMyvy3VA]
image:https://img.shields.io/badge/Wesite-Jikkou-c92760[Website,link=https://streamthoughts.github.io/jikkou/]
--toc::[]
See: https://streamthoughts.github.io/jikkou/[official documentation]
== Introduction
**https://github.com/streamthoughts/jikkou[Jikkou]** (jikkō / 実行) is an open-source tool built to provide an efficient
and easy way to manage, automate, and provision resources on your event-stream platform.Developed by Kafka ❤️, Jikkou aims to streamline daily operations on https://kafka.apache.org/documentation/[Apache Kafka], ensuring that platform governance is no longer a boring and tedious task for both **Developers** and **Administrators**.
Jikkou enables a declarative management approach of **Topics**, **ACLs**, **Quotas**, **Schemas**, **Connectors** and even more with the use of YAML files called **_Resource Definitions_**.
Taking inspiration from `kubectl` and Kubernetes resource definition files, Jikkou offers an intuitive and user-friendly approach to configuration management.
Jikkou can be used with https://kafka.apache.org/[Apache Kafka], https://aiven.io/kafka[Aiven], https://aws.amazon.com/fr/msk/[MSK], https://www.confluent.io/confluent-cloud/[Confluent Cloud], https://redpanda.com/[Redpanda].
== Motivation
See https://medium.com/@fhussonnois/why-is-managing-kafka-topics-still-such-a-pain-introducing-jikkou-4ee9d5df948[this blog post] for more details.
== Installation
The latest stable release of jikkou (x86) for Linux, and macOS can be retrieved via https://sdkman.io/[SDKMan]:
```bash
sdk install jikkou
```Alternatively, the latest stable release of jikkou (x86) for Linux, and macOS can be downloaded from https://github.com/streamthoughts/jikkou/releases/latest[GitHub Releases]
Below are the convenience links for the base downloads of Jikkou.
[%header,format=csv]
|===
Platform,Link
Linux, ⬇️ https://github.com/streamthoughts/jikkou/releases/download/v0.33.0/jikkou-0.33.0-linux-x86_64.zip[download (jikkou-0.33.0-linux-x86_64.zip)]
macOS,⬇️ https://github.com/streamthoughts/jikkou/releases/download/v0.33.0/jikkou-0.33.0-osx-x86_64.zip[download (jikkou-0.33.0-osx-x86_64.zip)]
|===Download the jikkou binary from the https://github.com/streamthoughts/jikkou/releases[releases page], uncompress and copy to the desired location.
[source,bash]
----
# Download the latest stable release
wget https://github.com/streamthoughts/jikkou/releases/download/v0.33.0/jikkou-0.33.0-linux-x86_64.zip# Uncompress
unzip jikkou-0.33.0-linux-x86_64.zip# Copy to the desired location
cp jikkou-0.33.0-linux-x86_64/bin/jikkou $HOME/.local/bin
----Finally, Jikkou is can also be retrieved :
* As a **fatJar** from https://repo.maven.apache.org/maven2/io/streamthoughts/jikkou/0.33.0/[Maven Central]
* As a **Docker Image** from https://hub.docker.com/r/streamthoughts/jikkou[Docker Hub].Note, it is recommended to install the bash/zsh completion script `jikkou_completion`:
[source,bash]
----
wget https://raw.githubusercontent.com/streamthoughts/jikkou/main/jikkou_completion . jikkou_completion
----or alternatively, run the following command for generation the completion script.
[source,bash]
----
source <(jikkou generate-completion)
----WARNING: If you are using macOS you may need to remove the quarantine attribute from the bits before you can use them To do this, run the following: `sudo xattr -r -d com.apple.quarantine path/to/jikkou/folder/`
== Overview
Here is an example of how to create and manage a _Kafka topic_ using Jikkou:
* Create a resource file _kafka-topics.yaml_:
kafka-topics.yaml:::[source,yaml]
----
# file:./kafka-topics.yaml
apiVersion: 'kafka.jikkou.io/v1beta2'
kind: 'KafkaTopic'
metadata:
name: 'my-first-topic-with-jikkou'
labels: {}
annotations: {}
spec:
partitions: 12
replicas: 3
configs:
min.insync.replicas: 2
----* Then run the following command:
[source,bash]
----
$ jikkou apply --files ./kafka-topics.yaml
----Jikkou will then take care of computing and applying the necessary changes directly to your cluster.
_(output)_:
[source]
----
TASK [CREATE] Create a new topic my-first-topic-with-jikkou (partitions=12, replicas=3) - CHANGED **********************
----[source,json]
----
{
"changed" : true,
"end" : 1634071489773,
"resource" : {
"name" : "my-first-topic-with-jikkou",
"operation" : "ADD",
"partitions" : {
"after" : 12,
"operation" : "ADD"
},
"replicas" : {
"after" : 3,
"operation" : "ADD"
},
"configs" : {
"min.insync.replicas" : {
"after" : "2",
"operation" : "ADD"
}
}
},
"failed" : false,
"status" : "CHANGED"
}
----[source]
----
EXECUTION in 2s 661ms (DRY_RUN)
ok : 0, created : 1, altered : 0, deleted : 0 failed : 0
----== Documentation
Check the official https://streamthoughts.github.io/jikkou/[documentation] for further https://streamthoughts.github.io/jikkou/docs/introducion/_installation/[installation] and usage https://streamthoughts.github.io/jikkou/docs/user-guide/[instructions].
== 🏭 Developers
You need to have http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java] and https://www.docker.com/[Docker] installed.
=== Dependencies
Jikkou CLI is built with https://micronaut.io/[Micronaut] and https://picocli.info/[Picocli]
To build the project you will need:
* Java 21
* https://www.graalvm.org/[GraalVM] 22.1.0 or newer to create native executable
* https://testcontainers.com/[TestContainer] to run integration tests=== Build project
This project includes https://maven.apache.org/wrapper/[Maven Wrapper].
Below are the commands commonly used to build the project:
[source,bash]
----
# Build and run all tests
./mvnw clean verify# Build and skip integration tests
./mvnw clean verify -DskipTests
----=== Build Docker Images (locally)
[source,bash]
----
$ make
----=== Create Native Executable
[source,bash]
----
# Build and run all tests
./mvnw clean verify -Pnative
----You can then execute the native executable with: `./jikkou-cli/target/jikkou-$PROJECT_VERSION-runner`
=== Create Debian Package (on Linux)
[source,bash]
----
# Build and run all tests
./mvnw clean package -Pnative
./mvnw package -Pdeb
----You can then install the package with: `sudo dpkg -i ./dist/jikkou-$PROJECT_VERSION-linux-x86_64.deb`
NOTE: Jikkou will install itself in the directory : `/opt/jikkou`
=== Formats
This project uses the Maven plugin https://github.com/diffplug/spotless/tree/master/plugin-maven[Spotless]
to format all Java classes and to apply some code quality checks.=== Bugs
This project uses the Maven plugin https://spotbugs.github.io/[SpotBugs] and https://find-sec-bugs.github.io/[FindSecBugs]
to run some static analysis to look for bugs in Java code.Reported bugs can be analysed using SpotBugs GUI:
[source,bash]
----
$ ./mvnw spotbugs:gui
----== 💡 Contributions
Any feedback, bug reports and PRs are greatly appreciated!
- **Source Code**: https://github.com/streamthoughts/jikkou
- **Issue Tracker**: https://github.com/streamthoughts/jikkou/issues== 🙏 Show your support
You think this project can help you or your team to manage your Apache Kafka Cluster ?
Please ⭐ this repository to support us!== Licence
This code base is available under the Apache License, version 2.