Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • There will be a docker image as an additional artifact for every Apache Kafka release.
  • Java version: 17
  • Base Image: ubi-minimal
  • This docker image will consist of JVM based Kafka and will have support for Linux based AMD and ARM architectures. 
  • Extend the existing Kafka system tests framework to run against the new docker image for each tag. 
  • Extend the Apache CI/CD pipeline to publish a new docker image to public DockerHub through the ASF docker profile

Scala Version

Currently Kafka has support for two flavours of binaries based on Scala version: 2.12 and Scala 2.13.
We will support Docker Image only for Scala 2.13

  • Less maintenance overhead.
  • Recommended by Apache Kafka.

  • Should anyone require a Docker image with Scala version 2.12, it can be conveniently generated by making a minor adjustment to the Apache Kafka tar file specified in the provided Dockerfiles. This modification will align the image with the 2.12 version of Apache Kafka.

JAVA Version

  • We will support only the latest JAVA supported by Apache Kafka.
  • Apache Kafka is already being built and tested with JAVA 21.
  • By release 3.7.0 (the next release), Apache Kafka will have JAVA 21 as one of the officially supported versions.
  • Hence, we will support JAVA 21 in our docker image.

What if users want Docker Image with a different Java version?

  • For users seeking a Docker image with an alternative Java version, they will have the flexibility to build their own Docker image utilising the Dockerfiles we provide. In our documentation, we will provide clear guidance on the designated base images for various Java versions.
  • We will update the Java major version as part of minor Apache Kafka releases. The implication is that users who include broker plugins alongside the broker should use custom images to ensure their custom code is not broken by Java upgrades.

Docker Base Image

To run Apache Kafka, only JRE, and not JDK, is needed in the Docker image.
We have decided to utilise the eclipse-temurin:<JRE-version> as the base image for docker image.

  • This is one of the best images for JAVA JRE which is maintained by a reputed organisation.
  • Flink relies on eclipse-temurin base images, affirming their authenticity and increasing our confidence in their reliability.

  • This image has support for arm64 and amd64 both.

  • Since it’s just JRE it is lightweight in terms of image size of 263MB.

NOTE: JAVA 21 was released on Sep 19. As of Oct 4, eclipse-temurin has not yet provided a Docker image for JRE 21. We anticipate that they will release the JRE 21 image prior to our Apache Kafka Docker image release.

Image Naming

Image naming should:

  1. Transparently communicate the packaged Kafka version.

  2. Maintain the above point in the event of CVEs/bugs requiring a dedicated Docker release.

Adhering to the outlined constraints, image tagging can follow this format
<image-name>:<kafka-version>-<optional-suffix>

  • For example, for 3.5.1 version of kafka, the image name with tagging would be kafka:3.5.1

    • kafka:3.5.1-1 In case of docker dedicated release, added a suffix -1 .

Compatibility, Deprecation, and Migration Plan

  • For existing apache kafka users there will be no impact as JVM based docker image will be a new feature.

Test Plan

...

  • Testing the functionality of the Apache Kafka packaged in the image

    • The image will consist of the official tarball released by Apache Kafka.

    • The above tarball is pre tested as the part of Apache Kafka release.

    • Hence no extra testing is required for the Apache Kafka packaged in the image.

  • Testing the Docker Image - Integration of the Apache Kafka with the Docker

    • Dockerizing Apache Kafka requires additional steps like, passing the configs from the user to the properties file in the container, passing credentials etc.

    • Sanity tests will be added to test the proper functionality of the docker image.

Rejected Alternatives

NA