Awesome
<h1 style="text-align: center;">Jikkou: The Open Source Resource as Code framework for Apache Kafka®.</h1> <p style="text-align: center;"> <img src="./assets/jikkou-logo-title.png" alt="Jikkou Logo"/> <h2 style="text-align: center;"> Developed by Kafka ❤️, for all Kafka users! </h2> </p> <p style="text-align: center;">
</p> <img src="./assets/demo.gif" alt="Jikkou Demonstration"/>
Do You Like This Project? ⭐
Please consider giving us a star ⭐ on GitHub. Your stars motivate us to persistently improve and help other developers discover our project.
Introduction
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 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 Apache Kafka, Aiven, MSK, Confluent Cloud, Redpanda, etc.
🛠️ Installation
The latest stable release of jikkou (x86) for Linux, and macOS can be retrieved via https://sdkman.io/[SDKMan]:
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.
Platform | Link |
---|---|
Linux | ⬇️ download (jikkou-0.35.0-linux-x86_64.zip) |
macOS | ⬇️ download (jikkou-0.35.0-osx-x86_64.zip) |
Download the jikkou binary from the releases page, uncompress and copy to the desired location.
# Download the latest stable release
wget https://github.com/streamthoughts/jikkou/releases/download/v0.35.0/jikkou-0.35.0-linux-x86_64.zip
# Uncompress
unzip jikkou-0.35.0-linux-x86_64.zip
# Copy to the desired location
cp jikkou-0.35.0-linux-x86_64/bin/jikkou $HOME/.local/bin
Finally, Jikkou is can also be retrieved :
- As a fatJar from Maven Central
- As a Docker Image from Docker Hub.
Note, it is recommended to install the bash/zsh completion script jikkou_completion
:
wget https://raw.githubusercontent.com/streamthoughts/jikkou/main/jikkou_completion . jikkou_completion
or alternatively, run the following command for generation the completion script.
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:::
# 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:
$ jikkou apply --files ./kafka-topics.yaml
Jikkou will then take care of computing and applying the necessary changes directly to your cluster.
(output):
TASK [CREATE] Create a new topic my-first-topic-with-jikkou (partitions=12, replicas=3) - CHANGED **********************
{
"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"
}
EXECUTION in 2s 661ms (DRY_RUN)
ok : 0, created : 1, altered : 0, deleted : 0 failed : 0
Documentation
Check the official documentation for further installation and use cases.
🏭 Developers
You need to have Java and Docker installed.
Dependencies
Jikkou CLI is built with Micronaut and Picocli
To build the project you will need:
- Java 21
- GraalVM 22.1.0 or newer to create native executable
- TestContainer to run integration tests
Build project
This project includes Maven Wrapper.
Below are the commands commonly used to build the project:
# Build and run all tests
./mvnw clean verify
# Build and skip integration tests
./mvnw clean verify -DskipTests
Build Docker Images (locally)
$ make
Create Native Executable
# 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)
# 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 Spotless to format all Java classes and to apply some code quality checks.
Bugs
This project uses the Maven plugin SpotBugs and FindSecBugs to run some static analysis to look for bugs in Java code.
Reported bugs can be analysed using SpotBugs GUI:
$ ./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
Licence
This code base is available under the Apache License, version 2.