Skip to content

The Open source Resource as Code framework for Apache Kafka. Jikkou helps you implement GitOps for Kafka at scale!

License

Notifications You must be signed in to change notification settings

streamthoughts/jikkou

Repository files navigation

Jikkou: The Open Source Resource as Code framework for Apache Kafka®.

Jikkou Logo

Developed by Kafka ❤️, for all Kafka users!

Reliability_rating Maintainability Rating Vulnerabilities Coverage

Slack Community Website

See: official documentation

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 Logo

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 :

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!

Licence

This code base is available under the Apache License, version 2.