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

Lists

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.