Jikkou!
Introduction
Jikkou (jikkล / ๅฎ่ก) is an open-source tool designed to provide an efficient and easy way to manage, automate, and provision resource configurations for Kafka, Schema Registry, etc.
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 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.
Motivation
See this blog post for more details.
Installation
The latest stable release of jikkou (x86) for Linux, and macOS can be downloaded from GitHub Releases
Below are the convenience links for the base downloads of Jikkou.
Platform | Link |
---|---|
Linux |
|
macOS |
Alternatively, jikkou is also available:
-
As a fatJar available from Maven Central
-
As a Docker Image available from Docker Hub.
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.29.0/jikkou-0.29.0-linux-x86_64.zip
# Uncompress
unzip jikkou-0.29.0-linux-x86_64.zip
# Copy to the desired location
cp jikkou-0.29.0-linux-x86_64/bin/jikkou $HOME/.local/bin
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 usage instructions.
๐ญ Developers
Dependencies
To build the project you will need:
-
Java 17
-
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
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
๐ 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.