Skip to content

streamthoughts/jikkou

Repository files navigation

Jikkou!

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.

Motivation

See this blog post for more details.

Installation

The latest stable release of jikkou (x86) for Linux, and macOS can be retrieved via SDKMan:

sdk install jikkou

Alternatively, 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

⬇️ download (jikkou-0.34.0-linux-x86_64.zip)

macOS

⬇️ download (jikkou-0.34.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.34.0/jikkou-0.34.0-linux-x86_64.zip

# Uncompress
unzip jikkou-0.34.0-linux-x86_64.zip

# Copy to the desired location
cp jikkou-0.34.0-linux-x86_64/bin/jikkou $HOME/.local/bin

Finally, Jikkou is can also be retrieved :

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 usage instructions.

🏭 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!

🙏 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.