{"id":443956,"date":"2025-01-02T21:00:49","date_gmt":"2025-01-02T21:00:49","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=443956"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2025-01-02T21:00:49","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=443956","title":{"rendered":"<span>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0439 docker-\u043e\u0431\u0440\u0430\u0437 Apache Kafka<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 2024 \u0433\u043e\u0434\u0443 \u043c\u044b \u043d\u0435 \u0434\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0445\u043e\u0434\u0430 \u0432 \u0441\u0432\u0435\u0442 Apache Kafka 4.0, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ZooKeeper, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0430\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e KRaft. \u041a\u0442\u043e-\u0442\u043e \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u044d\u0442\u0443 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e, \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u044e\u0442, \u043a\u0430\u043a \u0438\u043c \u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435  \u2014  \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u0438\u043d\u0435\u0439\u043a\u0435 3.\u0445 \u0438\u043b\u0438 \u0432 \u043e\u043c\u0443\u0442 \u0441 \u0433\u043e\u043b\u043e\u0432\u043e\u0439.<\/p>\n<p>\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043a\u0430\u043d\u0438\u043a\u0443\u043b\u044b \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0449\u0443\u043f\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0425\u043e\u0442\u044f \u043a\u043e\u0434 \u043d\u0435\u0432\u043e\u0437\u0431\u0440\u0430\u043d\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 Github \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Kafka, docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0441\u0431\u043e\u0440\u043e\u043a 4.0 \u043c\u043d\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 4.0 \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439, \u0438 \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440 \u043c\u043d\u043e\u044e \u043b\u044e\u0431\u0438\u043c\u044b\u0439, k8s-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 strimzi. \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0441\u0430\u043c\u043e\u043c\u0443!<\/p>\n<h2>\u0427\u0435\u0433\u043e \u0438\u0437\u0432\u043e\u043b\u0438\u043c?<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043c\u043e\u044f \u0446\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c docker-\u043e\u0431\u0440\u0430\u0437 Apache Kafka \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c <a href=\"https:\/\/github.com\/apache\/kafka\/tree\/trunk\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0432\u0435\u0442\u043a\u0438 trunk<\/a> (aka nigthly build). \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c Docker Hub \u0441\u0430\u043c\u044b\u043c\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u043c\u0438 \u0431\u044b\u043b\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">\u041f\u0440\u043e\u0435\u043a\u0442<\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">\u0412\u0435\u0440\u0441\u0438\u044f<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">\u0411\u0430\u0437\u0430<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">Kafka<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/github.com\/bitnami\/containers\/tree\/main\/bitnami\/kafka\" rel=\"noopener noreferrer nofollow\">bitnami\/kafka<\/a><\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">3.9.0-debian-12-r4<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">docker.io\/bitnami\/minideb:bookworm<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\" rel=\"noopener noreferrer nofollow\">confluentinc\/cp-kafka<\/a><\/p>\n<\/td>\n<td colspan=\"4\" data-colwidth=\"144,270,55,0\" width=\"144\">\n<p align=\"left\">7.8.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/github.com\/wurstmeister\/kafka-docker\" rel=\"noopener noreferrer nofollow\">wurstmeister\/kafka<\/a><\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">2.13-2.8.1<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">openjdk:11-jre-slim<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">2.8.1<\/p>\n<\/td>\n<td>\n<p align=\"left\">11<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">quay.io\/strimzi\/kafka <\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">0.45.0-kafka-3.9.0 <\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">ubi9\/ubi-minimal:latest<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">apache\/kafka<\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">eclipse-temurin:21-jre-alpine<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.0.5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 kubernetes\/OpenShift, \u0430 \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 strimzi. \u0422\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u043d\u0430 <a href=\"https:\/\/github.com\/strimzi\/strimzi-kafka-operator\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Github<\/a>. \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u043e\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 prometheus \u0438 grafana.<\/p>\n<p>\u041d\u043e strimzi \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043b\u044e\u0431\u044b\u043c kafka-\u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0435\u0440\u0441\u0438\u0439 kafka, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0437\u0430\u0434\u0430\u043d \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0441\u043e\u043e\u0442\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0441 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438:<\/p>\n<pre><code class=\"json\">spec:   template:     spec:       containers:           env:             - name: STRIMZI_KAFKA_IMAGES               value: |                 3.8.0=quay.io\/strimzi\/kafka:0.45.0-kafka-3.8.0                 3.8.1=quay.io\/strimzi\/kafka:0.45.0-kafka-3.8.1                 3.9.0=quay.io\/strimzi\/kafka:0.45.0-kafka-3.9.0<\/code><\/pre>\n<p>\u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c strimzi \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u0422\u0435\u043c\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430 \u0432 <a href=\"https:\/\/strimzi.io\/quickstarts\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043c\u0435\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0432 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 kafka.<\/p>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0438 \u043f\u0440\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0448\u0435 3.9.0 strimzi \u0432\u0435\u0440\u0441\u0438\u0438 0.4.5 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 &#171;3.9.0&#187; \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e &#171;\u043b\u0435\u0432\u044b\u0439&#187; \u043e\u0431\u0440\u0430\u0437 \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f, \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u0441\u044f. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 strimzi \u043f\u0440\u043e 4.0 <a href=\"https:\/\/strimzi.io\/blog\/2024\/08\/21\/taming-apache-kafka-4.0\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043a\u0430 \u0432 \u0440\u0430\u0437\u0434\u0443\u043c\u044c\u044f\u0445<\/a>.<\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c strimzi \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0435 kafka \u0438 java 23;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043d\u0430\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c?<\/h2>\n<p>\u041f\u043e\u0439\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438: \u0432\u0437\u044f\u0442\u044c \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 strimzi-\u043e\u0431\u0440\u0430\u0437 \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u043e\u0442 Apache. \u0411\u043e\u043b\u0435\u0435 \u0438 \u0433\u0438\u0431\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043c\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 strimzi-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0442 Apache, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, jvm \u0438 native. \u041c\u044b \u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u044b \u044f \u0432\u043e\u0437\u044c\u043c\u0443 eclipse-temurin:23-jre-alpine (\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u043c&#187; \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0442 Apache Kafka, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u044b\u0439 eclipse-temurin:21-jre-alpine).<\/p>\n<p>jvm-\u043e\u0431\u0440\u0430\u0437 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u0434\u0438\u044e &#171;\u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430&#187;, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 jsa_launch \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kafka, \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043f\u0438\u043a, producer \u0438 consumer. \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/vm\/class-data-sharing.html\" rel=\"noopener noreferrer nofollow\">CDS-\u0444\u0430\u0439\u043b\u044b<\/a> \/opt\/kafka\/storage.jsa \u0438 \/opt\/kafka\/kafka.jsa, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u042d\u0442\u043e \u0432\u0435\u0449\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438 \u043d\u0443\u0436\u043d\u0430\u044f, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>\u041e\u0431\u0430 dockerfile \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u0431\u043e\u0440\u043a\u0443 kafka \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u042d\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e, \u043c\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c, \u0443\u0431\u0438\u0440\u0430\u0435\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b, \u043a\u0430\u043a \u0438 \u044f, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0432 windows, \u043d\u0430 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e core.autocrlf = false \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e git \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 chmod +x \u0432 dockerfile.<\/p>\n<h2>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e strimzi <\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 strimzi-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b (\u043c\u043e\u0436\u0435\u0442, \u0433\u0434\u0435-\u0442\u043e \u043e\u043d\u043e \u0438 \u0435\u0441\u0442\u044c, \u043d\u043e \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c), \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0431\u044b\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430. \u041a\u043e\u0434 \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0430 Github <a href=\"https:\/\/github.com\/strimzi\/strimzi-kafka-operator\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/strimzi\/strimzi-kafka-operator<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 strimzi \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0435 docker-images. \u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0430 kafka-\u043e\u0431\u0440\u0430\u0437 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c docker-images\/kafka-based\/build.sh. \u041d\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443 \u043c\u0435\u043d\u044f <s>\u043b\u0430\u043f\u043a\u0438<\/s> windows, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u043c\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u0430\u044f&#187; \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430 \u043e\u0442 Apache Kafka \u0438 \u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 python. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \/opt\/kafka\/kafka_run.sh;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 readiness \/opt\/kafka\/kafka_readiness.sh;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 liveness \/opt\/kafka\/kafka_liveness.sh.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043e\u043d\u043e \u043f\u0440\u0438\u0431\u0438\u0442\u043e \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c. \u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e strimzi-\u043e\u0431\u0440\u0430\u0301\u0437\u043d\u044b\u043c \u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u0442.\u043a. \u043c\u044b \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430\u043b\u0438 JVM, \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 CDS-\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 kafka_run.sh (\u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u0445 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c). <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0442 \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>tini \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/krallin\/tini\" rel=\"noopener noreferrer nofollow\">krallin\/tini<\/a> (&#171;A tiny but valid init for containers&#187;);<\/p>\n<\/li>\n<li>\n<p>Kafka exporter for Prometheus \u043e\u0442 <a href=\"https:\/\/github.com\/danielqsj\/kafka_exporter\" rel=\"noopener noreferrer nofollow\">danielqsj\/kafka_exporter<\/a>;<\/p>\n<\/li>\n<li>\n<p>JMX Exporter \u0438\u0437 <a href=\"https:\/\/github.com\/prometheus\/jmx_exporter\" rel=\"noopener noreferrer nofollow\">prometheus\/jmx_exporter<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u0432\u0435\u0449\u0438, \u043d\u0443\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u043d\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c &#171;Cruise Control for Apache Kafka&#187; \u043e\u0442 <a href=\"https:\/\/github.com\/linkedin\/cruise-control\" rel=\"noopener noreferrer nofollow\">linkedin\/cruise-control<\/a> \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430, \u0438 \u0435\u0433\u043e \u044f \u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. \u041c\u043e\u0436\u0435\u0442, \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043e\u0431\u0440\u0430\u0437\u0443 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c kafka-agent, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u0430\u043a javaagent \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 jetty-servlet, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 readiness \u0438 liveness. \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442. \u0414\u043b\u044f readiness  \u044d\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u043a\u043e\u0434 HTTP 204, \u0434\u043b\u044f liveness \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430. kafka-agent \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a JMX \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c kafka, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0440\u043e\u043a\u0435\u0440\u0430. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 strimzi \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 &#171;\u043f\u043e\u0434\u0432\u0438\u0441\u0430\u043d\u0438\u0435&#187; \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u0445\u043e\u0434\u0435 <a href=\"https:\/\/github.com\/strimzi\/proposals\/blob\/main\/048-avoid-broker-restarts-when-in-recovery.md\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432<\/a>.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0443\u0442 \u043d\u0430\u0441 \u043f\u043e\u0434\u0441\u0442\u0435\u0440\u0435\u0433\u0430\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 4.0 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 KIP-1032, \u043f\u043e\u0434\u043d\u044f\u0432\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044e jetty \u0441 9.4.56 \u0434\u043e 12.0.15 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0443\u044e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 Jakarta \u0438 JavaEE 10. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u044d\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 embedded kafka \u2014 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0435! \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c kafka-agent \u043d\u0430 jetty 12, \u0431\u043b\u0430\u0433\u043e \u0432 \u043d\u0451\u043c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441. \u0424\u0438\u043a\u0441 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0443 strimzi\/patch \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/kvmorozov\/kafka-utils\" rel=\"noopener noreferrer nofollow\">kvmorozov\/kafka-utils<\/a>.<\/p>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430<\/h2>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ul>\n<li>\n<p>git pull trunk<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 docker_build_test.py \u0438\u0437 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043e\u0442 Apache<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c gradle \u0442\u0430\u0441\u043a\u0443 releaseTarGz \u0438\u0437 kafka:core, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c .tgz, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0437\u0430<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0437 \\kafka\\core\\build\\distributions \u0432 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 dockerfile<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0435 \/docker\/jvm \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/kvmorozov\/kafka-utils\" rel=\"noopener noreferrer nofollow\">kvmorozov\/kafka-utils<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c python docker_build_test.py kmorozov\/kafka &#8212;image-tag=4.1.0-jvm &#8212;image-type=jvm &#8212;kafka-url=kafka_2.13-4.1.0-SNAPSHOT.tgz -b<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/h2>\n<ul>\n<li>\n<p>kubectl create -f &#8216;<a href=\"https:\/\/strimzi.io\/install\/latest?namespace=kafka\" rel=\"noopener noreferrer nofollow\">https:\/\/strimzi.io\/install\/latest?namespace=kafka<\/a>&#8216; -n kafka<\/p>\n<\/li>\n<li>\n<p>kubectl edit deployment strimzi-cluster-operator -n kafka<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c quay.io\/strimzi\/kafka:0.45.0-kafka-3.9.0 \u043d\u0430 kmorozov\/kafka:4.1.0-jvm<\/p>\n<\/li>\n<li>\n<p>\u0436\u0434\u0451\u043c, \u043f\u043e\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>kubectl apply -f &lt;strimzi-kafka-operator&gt;\\examples\\kafka\\kraft\\kafka-ephemeral.yaml -n kafka<\/p>\n<\/li>\n<li>\n<p>kubectl wait kafka\/my-cluster &#8212;for=condition=Ready &#8212;timeout=300s -n kafka<\/p>\n<ul>\n<li>\n<p>\u0436\u0434\u0451\u043c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 prometheus \u0438 grafana \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b, \u0438\u0445 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c<\/p>\n<\/li>\n<li>\n<p>kubectl get pods -n kafka<\/p>\n<ul>\n<li>\n<p>\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0439 kafka-ephemeral.yaml \u0434\u0430\u0451\u0442 \u043d\u0430\u043c 3 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438 1 controller<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u043c \u0432 pod my-cluster-broker-0. \u0418\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u0442\u043e\u043f\u0438\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>.\/bin\/kafka-topics.sh &#8212;create &#8212;bootstrap-server=localhost:9092 &#8212;<strong>topic test-3p-1rf<\/strong> &#8212;partitions 3 &#8212;replication-factor 1<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-topics.sh &#8212;create &#8212;bootstrap-server=localhost:9092 &#8212;<strong>topic test-3p-3rf<\/strong> &#8212;partitions 3 &#8212;replication-factor 3<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-producer-perf-test.sh <br \/> &#8212;<strong>topic test-3p-1rf<\/strong> <br \/> &#8212;num-records 50000000 <br \/> &#8212;record-size 100 <br \/> &#8212;throughput -1 <br \/> &#8212;producer-props acks=1 <br \/> bootstrap.servers=localhost:9092 <br \/> buffer.memory=67108864 <br \/> batch.size=8196<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-producer-perf-test.sh <br \/> &#8212;<strong>topic test-3p-3rf<\/strong> <br \/> &#8212;num-records 50000000 <br \/> &#8212;record-size 100 <br \/> &#8212;throughput -1 <br \/> &#8212;producer-props acks=1 <br \/> bootstrap.servers=localhost:9092 <br \/> buffer.memory=67108864 <br \/> batch.size=8196<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 producer \u0436\u0434\u0451\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 (acks=1), \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u043e\u0442 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u0432\u0441\u0451 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 kubectl delete-f &lt;strimzi-kafka-operator&gt;\\examples\\kafka\\kraft\\kafka-ephemeral.yaml -n kafka<\/p>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h2>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0414\u0435\u0434 \u041c\u043e\u0440\u043e\u0437 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u043b \u043f\u043e\u0434 \u0451\u043b\u043e\u0447\u043a\u0443 \u043d\u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0438 \u043e\u043f\u043b\u0430\u0442\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0432 \u043f\u043e\u043f\u0443\u0433\u0430\u044f\u0445, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044f 16 \u044f\u0434\u0440\u0430\u043c\u0438 \u0438 12 Gi RAM (\u0432\u0441\u0435\u0433\u043e \u0443 \u043c\u0435\u043d\u044f 16 Gi RAM, \u043d\u043e \u0434\u043b\u044f WSL \u044f \u043e\u0442\u0434\u0430\u043b 12). \u0421\u043a\u0440\u043e\u043c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u044e\u043d\u0438\u043d\u0433, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u0431\u0435\u0433\u0430 \u043d\u0430 \u043c\u043e\u0451\u043c strimzi-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. Strimzi \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 JVM, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">apiVersion: kafka.strimzi.io\/v1beta2 kind: Kafka metadata:   name: strimzi spec:   kafka:     resources:       limits:         memory: \"5Gi\"     jvmOptions:       -Xmx: \"4G\"       -Xms: \"2G\"       -XX:         foo: bar<\/code><\/pre>\n<p>\u041d\u043e \u043c\u044b \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u043c \u0441 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. \u0412 \u0437\u0430\u0447\u0451\u0442 \u0448\u043b\u0430 \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td rowspan=\"2\" data-colwidth=\"123\" width=\"123\">\n<p align=\"center\">\u041e\u0431\u0440\u0430\u0437<\/p>\n<\/td>\n<td rowspan=\"2\" data-colwidth=\"166\" width=\"166\">\n<p align=\"center\">OS<\/p>\n<\/td>\n<td rowspan=\"2\" data-colwidth=\"66\" width=\"66\">\n<p align=\"center\">JVM<\/p>\n<\/td>\n<td colspan=\"2\" data-colwidth=\"0,71.5\" width=\"0\">\n<p align=\"center\">test-3p-1rf<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">test-3p-3rf<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">rps<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"center\">avg, ms<\/p>\n<\/td>\n<td>\n<p align=\"center\">rps<\/p>\n<\/td>\n<td>\n<p align=\"center\">avg, ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">Strimzi 3.8.0<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">RHEL 9.5<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<td>\n<p align=\"right\">1017438<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">5.20<\/p>\n<\/td>\n<td>\n<p align=\"right\">755161<\/p>\n<\/td>\n<td>\n<p align=\"right\">116.41<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">Strimzi 3.9.0<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">RHEL 9.5<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<td>\n<p align=\"right\">984174<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">2.45<\/p>\n<\/td>\n<td>\n<p align=\"right\">777786<\/p>\n<\/td>\n<td>\n<p align=\"right\">49.21<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p>kmorozov-jvm<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">Alpine Linux v3.20<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">23.0.1<\/p>\n<\/td>\n<td>\n<p align=\"right\">977823<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">2.71<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"right\">\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0442\u0435\u0441\u0442\u0435 \u043c\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0435\u043c\u0443 \u0438\u043d\u043e\u0433\u0434\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430) \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \ud83d\ude41 <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/df7\/087\/3bf\/df70873bf373833ce16ded48cb4bb79e.png\" alt=\"\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438\" title=\"\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438\" width=\"3372\" height=\"1384\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/df7\/087\/3bf\/df70873bf373833ce16ded48cb4bb79e.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043e\u0442\u0434\u0430\u0451\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 prometheus, \u0438 \u043e\u043d\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 grafana:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/043\/421\/dc2\/043421dc2d6ee08da6985daccaa1cd53.png\" alt=\"\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e topic test-3p-3rf\" title=\"\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e topic test-3p-3rf\" width=\"3297\" height=\"1221\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/043\/421\/dc2\/043421dc2d6ee08da6985daccaa1cd53.png\"\/><\/p>\n<div><figcaption>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e <strong>topic test-3p-3rf<\/strong><\/figcaption><\/div>\n<\/figure>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>\u0426\u0435\u043b\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u0430, \u043e\u0431\u0440\u0430\u0437 \u0441\u043e\u0431\u0440\u0430\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0411\u044b\u043b\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c strimzi \u044f \u0431\u044b\u043b \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d \u043e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (\u043c\u043d\u0435 \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437 100). \u041e\u0434\u043d\u0430\u043a\u043e, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0435\u0440\u0441\u0438\u0435\u0439 4.0 \u043f\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a. \u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0438 \u043f\u043e\u0431\u0435\u0434\u0438\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432, \u0438\u0431\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e 50 \u043c\u043b\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 3 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 4.0 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0435 \u0442\u044f\u043d\u0435\u0442. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0435\u0441\u043b\u0438 \u0435\u0451 \u043e\u0442\u0442\u044e\u043d\u0438\u0442\u044c \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043e\u043d\u0430 \u043f\u043e\u0431\u044c\u0451\u0442 3.9.0 \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/871108\/\"> https:\/\/habr.com\/ru\/articles\/871108\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 2024 \u0433\u043e\u0434\u0443 \u043c\u044b \u043d\u0435 \u0434\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0445\u043e\u0434\u0430 \u0432 \u0441\u0432\u0435\u0442 Apache Kafka 4.0, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ZooKeeper, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0430\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e KRaft. \u041a\u0442\u043e-\u0442\u043e \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u044d\u0442\u0443 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0443\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e, \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u044e\u0442, \u043a\u0430\u043a \u0438\u043c \u0436\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435  \u2014  \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u0438\u043d\u0435\u0439\u043a\u0435 3.\u0445 \u0438\u043b\u0438 \u0432 \u043e\u043c\u0443\u0442 \u0441 \u0433\u043e\u043b\u043e\u0432\u043e\u0439.<\/p>\n<p>\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043a\u0430\u043d\u0438\u043a\u0443\u043b\u044b \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0449\u0443\u043f\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0425\u043e\u0442\u044f \u043a\u043e\u0434 \u043d\u0435\u0432\u043e\u0437\u0431\u0440\u0430\u043d\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 Github \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Kafka, docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0441\u0431\u043e\u0440\u043e\u043a 4.0 \u043c\u043d\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 4.0 \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439, \u0438 \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440 \u043c\u043d\u043e\u044e \u043b\u044e\u0431\u0438\u043c\u044b\u0439, k8s-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 strimzi. \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0441\u0430\u043c\u043e\u043c\u0443!<\/p>\n<h2>\u0427\u0435\u0433\u043e \u0438\u0437\u0432\u043e\u043b\u0438\u043c?<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043c\u043e\u044f \u0446\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c docker-\u043e\u0431\u0440\u0430\u0437 Apache Kafka \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c <a href=\"https:\/\/github.com\/apache\/kafka\/tree\/trunk\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0432\u0435\u0442\u043a\u0438 trunk<\/a> (aka nigthly build). \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c Docker Hub \u0441\u0430\u043c\u044b\u043c\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u043c\u0438 \u0431\u044b\u043b\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">\u041f\u0440\u043e\u0435\u043a\u0442<\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">\u0412\u0435\u0440\u0441\u0438\u044f<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">\u0411\u0430\u0437\u0430<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">Kafka<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/github.com\/bitnami\/containers\/tree\/main\/bitnami\/kafka\" rel=\"noopener noreferrer nofollow\">bitnami\/kafka<\/a><\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">3.9.0-debian-12-r4<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">docker.io\/bitnami\/minideb:bookworm<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\" rel=\"noopener noreferrer nofollow\">confluentinc\/cp-kafka<\/a><\/p>\n<\/td>\n<td colspan=\"4\" data-colwidth=\"144,270,55,0\" width=\"144\">\n<p align=\"left\">7.8.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\"><a href=\"https:\/\/github.com\/wurstmeister\/kafka-docker\" rel=\"noopener noreferrer nofollow\">wurstmeister\/kafka<\/a><\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">2.13-2.8.1<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">openjdk:11-jre-slim<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">2.8.1<\/p>\n<\/td>\n<td>\n<p align=\"left\">11<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">quay.io\/strimzi\/kafka <\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">0.45.0-kafka-3.9.0 <\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">ubi9\/ubi-minimal:latest<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"168\" width=\"168\">\n<p align=\"left\">apache\/kafka<\/p>\n<\/td>\n<td data-colwidth=\"144\" width=\"144\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td data-colwidth=\"270\" width=\"270\">\n<p align=\"left\">eclipse-temurin:21-jre-alpine<\/p>\n<\/td>\n<td data-colwidth=\"55\" width=\"55\">\n<p align=\"left\">3.9.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.0.5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 kubernetes\/OpenShift, \u0430 \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 strimzi. \u0422\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u043d\u0430 <a href=\"https:\/\/github.com\/strimzi\/strimzi-kafka-operator\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Github<\/a>. \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u043e\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 prometheus \u0438 grafana.<\/p>\n<p>\u041d\u043e strimzi \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043b\u044e\u0431\u044b\u043c kafka-\u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0432\u0435\u0440\u0441\u0438\u0439 kafka, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0437\u0430\u0434\u0430\u043d \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0441\u043e\u043e\u0442\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0441 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438:<\/p>\n<pre><code class=\"json\">spec:   template:     spec:       containers:           env:             - name: STRIMZI_KAFKA_IMAGES               value: |                 3.8.0=quay.io\/strimzi\/kafka:0.45.0-kafka-3.8.0                 3.8.1=quay.io\/strimzi\/kafka:0.45.0-kafka-3.8.1                 3.9.0=quay.io\/strimzi\/kafka:0.45.0-kafka-3.9.0<\/code><\/pre>\n<p>\u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c strimzi \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u0422\u0435\u043c\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430 \u0432 <a href=\"https:\/\/strimzi.io\/quickstarts\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043c\u0435\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0432 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 kafka.<\/p>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0438 \u043f\u0440\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0448\u0435 3.9.0 strimzi \u0432\u0435\u0440\u0441\u0438\u0438 0.4.5 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 &#171;3.9.0&#187; \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e &#171;\u043b\u0435\u0432\u044b\u0439&#187; \u043e\u0431\u0440\u0430\u0437 \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f, \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u0441\u044f. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 strimzi \u043f\u0440\u043e 4.0 <a href=\"https:\/\/strimzi.io\/blog\/2024\/08\/21\/taming-apache-kafka-4.0\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043a\u0430 \u0432 \u0440\u0430\u0437\u0434\u0443\u043c\u044c\u044f\u0445<\/a>.<\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c strimzi \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0435 kafka \u0438 java 23;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043d\u0430\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c?<\/h2>\n<p>\u041f\u043e\u0439\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438: \u0432\u0437\u044f\u0442\u044c \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 strimzi-\u043e\u0431\u0440\u0430\u0437 \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u043e\u0442 Apache. \u0411\u043e\u043b\u0435\u0435 \u0438 \u0433\u0438\u0431\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043c\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 strimzi-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0442 Apache, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, jvm \u0438 native. \u041c\u044b \u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u044b \u044f \u0432\u043e\u0437\u044c\u043c\u0443 eclipse-temurin:23-jre-alpine (\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u043c&#187; \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0442 Apache Kafka, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u044b\u0439 eclipse-temurin:21-jre-alpine).<\/p>\n<p>jvm-\u043e\u0431\u0440\u0430\u0437 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u0434\u0438\u044e &#171;\u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430&#187;, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 jsa_launch \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kafka, \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043f\u0438\u043a, producer \u0438 consumer. \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/vm\/class-data-sharing.html\" rel=\"noopener noreferrer nofollow\">CDS-\u0444\u0430\u0439\u043b\u044b<\/a> \/opt\/kafka\/storage.jsa \u0438 \/opt\/kafka\/kafka.jsa, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u042d\u0442\u043e \u0432\u0435\u0449\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438 \u043d\u0443\u0436\u043d\u0430\u044f, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>\u041e\u0431\u0430 dockerfile \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u0431\u043e\u0440\u043a\u0443 kafka \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u042d\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e, \u043c\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c, \u0443\u0431\u0438\u0440\u0430\u0435\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b, \u043a\u0430\u043a \u0438 \u044f, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0432 windows, \u043d\u0430 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e core.autocrlf = false \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e git \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 chmod +x \u0432 dockerfile.<\/p>\n<h2>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e strimzi <\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 strimzi-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b (\u043c\u043e\u0436\u0435\u0442, \u0433\u0434\u0435-\u0442\u043e \u043e\u043d\u043e \u0438 \u0435\u0441\u0442\u044c, \u043d\u043e \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c), \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0431\u044b\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430. \u041a\u043e\u0434 \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0430 Github <a href=\"https:\/\/github.com\/strimzi\/strimzi-kafka-operator\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/strimzi\/strimzi-kafka-operator<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 strimzi \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u0435 docker-images. \u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0430 kafka-\u043e\u0431\u0440\u0430\u0437 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c docker-images\/kafka-based\/build.sh. \u041d\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443 \u043c\u0435\u043d\u044f <s>\u043b\u0430\u043f\u043a\u0438<\/s> windows, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u043c\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u0430\u044f&#187; \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430 \u043e\u0442 Apache Kafka \u0438 \u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 python. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \/opt\/kafka\/kafka_run.sh;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 readiness \/opt\/kafka\/kafka_readiness.sh;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 liveness \/opt\/kafka\/kafka_liveness.sh.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043e\u043d\u043e \u043f\u0440\u0438\u0431\u0438\u0442\u043e \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c. \u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e strimzi-\u043e\u0431\u0440\u0430\u0301\u0437\u043d\u044b\u043c \u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u0442.\u043a. \u043c\u044b \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430\u043b\u0438 JVM, \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 CDS-\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 kafka_run.sh (\u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u0445 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c). <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0442 \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>tini \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/krallin\/tini\" rel=\"noopener noreferrer nofollow\">krallin\/tini<\/a> (&#171;A tiny but valid init for containers&#187;);<\/p>\n<\/li>\n<li>\n<p>Kafka exporter for Prometheus \u043e\u0442 <a href=\"https:\/\/github.com\/danielqsj\/kafka_exporter\" rel=\"noopener noreferrer nofollow\">danielqsj\/kafka_exporter<\/a>;<\/p>\n<\/li>\n<li>\n<p>JMX Exporter \u0438\u0437 <a href=\"https:\/\/github.com\/prometheus\/jmx_exporter\" rel=\"noopener noreferrer nofollow\">prometheus\/jmx_exporter<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u0432\u0435\u0449\u0438, \u043d\u0443\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u043d\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c &#171;Cruise Control for Apache Kafka&#187; \u043e\u0442 <a href=\"https:\/\/github.com\/linkedin\/cruise-control\" rel=\"noopener noreferrer nofollow\">linkedin\/cruise-control<\/a> \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430, \u0438 \u0435\u0433\u043e \u044f \u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. \u041c\u043e\u0436\u0435\u0442, \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043e\u0431\u0440\u0430\u0437\u0443 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c kafka-agent, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u0430\u043a javaagent \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 jetty-servlet, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 readiness \u0438 liveness. \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442. \u0414\u043b\u044f readiness  \u044d\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u043a\u043e\u0434 HTTP 204, \u0434\u043b\u044f liveness \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430. kafka-agent \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a JMX \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c kafka, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0440\u043e\u043a\u0435\u0440\u0430. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 strimzi \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 &#171;\u043f\u043e\u0434\u0432\u0438\u0441\u0430\u043d\u0438\u0435&#187; \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u0445\u043e\u0434\u0435 <a href=\"https:\/\/github.com\/strimzi\/proposals\/blob\/main\/048-avoid-broker-restarts-when-in-recovery.md\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432<\/a>.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0443\u0442 \u043d\u0430\u0441 \u043f\u043e\u0434\u0441\u0442\u0435\u0440\u0435\u0433\u0430\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 4.0 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 KIP-1032, \u043f\u043e\u0434\u043d\u044f\u0432\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044e jetty \u0441 9.4.56 \u0434\u043e 12.0.15 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0443\u044e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 Jakarta \u0438 JavaEE 10. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u044d\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 embedded kafka \u2014 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0435! \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c kafka-agent \u043d\u0430 jetty 12, \u0431\u043b\u0430\u0433\u043e \u0432 \u043d\u0451\u043c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441. \u0424\u0438\u043a\u0441 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0443 strimzi\/patch \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/kvmorozov\/kafka-utils\" rel=\"noopener noreferrer nofollow\">kvmorozov\/kafka-utils<\/a>.<\/p>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430<\/h2>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ul>\n<li>\n<p>git pull trunk<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 docker_build_test.py \u0438\u0437 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043e\u0442 Apache<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c gradle \u0442\u0430\u0441\u043a\u0443 releaseTarGz \u0438\u0437 kafka:core, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c .tgz, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0437\u0430<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0437 \\kafka\\core\\build\\distributions \u0432 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 dockerfile<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0435 \/docker\/jvm \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/kvmorozov\/kafka-utils\" rel=\"noopener noreferrer nofollow\">kvmorozov\/kafka-utils<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c python docker_build_test.py kmorozov\/kafka &#8212;image-tag=4.1.0-jvm &#8212;image-type=jvm &#8212;kafka-url=kafka_2.13-4.1.0-SNAPSHOT.tgz -b<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/h2>\n<ul>\n<li>\n<p>kubectl create -f &#8216;<a href=\"https:\/\/strimzi.io\/install\/latest?namespace=kafka\" rel=\"noopener noreferrer nofollow\">https:\/\/strimzi.io\/install\/latest?namespace=kafka<\/a>&#8216; -n kafka<\/p>\n<\/li>\n<li>\n<p>kubectl edit deployment strimzi-cluster-operator -n kafka<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c quay.io\/strimzi\/kafka:0.45.0-kafka-3.9.0 \u043d\u0430 kmorozov\/kafka:4.1.0-jvm<\/p>\n<\/li>\n<li>\n<p>\u0436\u0434\u0451\u043c, \u043f\u043e\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>kubectl apply -f &lt;strimzi-kafka-operator&gt;\\examples\\kafka\\kraft\\kafka-ephemeral.yaml -n kafka<\/p>\n<\/li>\n<li>\n<p>kubectl wait kafka\/my-cluster &#8212;for=condition=Ready &#8212;timeout=300s -n kafka<\/p>\n<ul>\n<li>\n<p>\u0436\u0434\u0451\u043c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 prometheus \u0438 grafana \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b, \u0438\u0445 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c<\/p>\n<\/li>\n<li>\n<p>kubectl get pods -n kafka<\/p>\n<ul>\n<li>\n<p>\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0439 kafka-ephemeral.yaml \u0434\u0430\u0451\u0442 \u043d\u0430\u043c 3 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438 1 controller<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u043c \u0432 pod my-cluster-broker-0. \u0418\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u0442\u043e\u043f\u0438\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>.\/bin\/kafka-topics.sh &#8212;create &#8212;bootstrap-server=localhost:9092 &#8212;<strong>topic test-3p-1rf<\/strong> &#8212;partitions 3 &#8212;replication-factor 1<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-topics.sh &#8212;create &#8212;bootstrap-server=localhost:9092 &#8212;<strong>topic test-3p-3rf<\/strong> &#8212;partitions 3 &#8212;replication-factor 3<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-producer-perf-test.sh <br \/> &#8212;<strong>topic test-3p-1rf<\/strong> <br \/> &#8212;num-records 50000000 <br \/> &#8212;record-size 100 <br \/> &#8212;throughput -1 <br \/> &#8212;producer-props acks=1 <br \/> bootstrap.servers=localhost:9092 <br \/> buffer.memory=67108864 <br \/> batch.size=8196<\/p>\n<\/li>\n<li>\n<p>.\/bin\/kafka-producer-perf-test.sh <br \/> &#8212;<strong>topic test-3p-3rf<\/strong> <br \/> &#8212;num-records 50000000 <br \/> &#8212;record-size 100 <br \/> &#8212;throughput -1 <br \/> &#8212;producer-props acks=1 <br \/> bootstrap.servers=localhost:9092 <br \/> buffer.memory=67108864 <br \/> batch.size=8196<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 producer \u0436\u0434\u0451\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 (acks=1), \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u043e\u0442 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u0432\u0441\u0451 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 kubectl delete-f &lt;strimzi-kafka-operator&gt;\\examples\\kafka\\kraft\\kafka-ephemeral.yaml -n kafka<\/p>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h2>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0414\u0435\u0434 \u041c\u043e\u0440\u043e\u0437 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u043b \u043f\u043e\u0434 \u0451\u043b\u043e\u0447\u043a\u0443 \u043d\u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0438 \u043e\u043f\u043b\u0430\u0442\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0432 \u043f\u043e\u043f\u0443\u0433\u0430\u044f\u0445, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044f 16 \u044f\u0434\u0440\u0430\u043c\u0438 \u0438 12 Gi RAM (\u0432\u0441\u0435\u0433\u043e \u0443 \u043c\u0435\u043d\u044f 16 Gi RAM, \u043d\u043e \u0434\u043b\u044f WSL \u044f \u043e\u0442\u0434\u0430\u043b 12). \u0421\u043a\u0440\u043e\u043c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u044e\u043d\u0438\u043d\u0433, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u0431\u0435\u0433\u0430 \u043d\u0430 \u043c\u043e\u0451\u043c strimzi-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. Strimzi \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 JVM, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">apiVersion: kafka.strimzi.io\/v1beta2 kind: Kafka metadata:   name: strimzi spec:   kafka:     resources:       limits:         memory: \"5Gi\"     jvmOptions:       -Xmx: \"4G\"       -Xms: \"2G\"       -XX:         foo: bar<\/code><\/pre>\n<p>\u041d\u043e \u043c\u044b \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u043c \u0441 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. \u0412 \u0437\u0430\u0447\u0451\u0442 \u0448\u043b\u0430 \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td rowspan=\"2\" data-colwidth=\"123\" width=\"123\">\n<p align=\"center\">\u041e\u0431\u0440\u0430\u0437<\/p>\n<\/td>\n<td rowspan=\"2\" data-colwidth=\"166\" width=\"166\">\n<p align=\"center\">OS<\/p>\n<\/td>\n<td rowspan=\"2\" data-colwidth=\"66\" width=\"66\">\n<p align=\"center\">JVM<\/p>\n<\/td>\n<td colspan=\"2\" data-colwidth=\"0,71.5\" width=\"0\">\n<p align=\"center\">test-3p-1rf<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">test-3p-3rf<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">rps<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"center\">avg, ms<\/p>\n<\/td>\n<td>\n<p align=\"center\">rps<\/p>\n<\/td>\n<td>\n<p align=\"center\">avg, ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">Strimzi 3.8.0<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">RHEL 9.5<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<td>\n<p align=\"right\">1017438<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">5.20<\/p>\n<\/td>\n<td>\n<p align=\"right\">755161<\/p>\n<\/td>\n<td>\n<p align=\"right\">116.41<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">Strimzi 3.9.0<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">RHEL 9.5<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">17.0.13<\/p>\n<\/td>\n<td>\n<p align=\"right\">984174<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">2.45<\/p>\n<\/td>\n<td>\n<p align=\"right\">777786<\/p>\n<\/td>\n<td>\n<p align=\"right\">49.21<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"123\" width=\"123\">\n<p>kmorozov-jvm<\/p>\n<\/td>\n<td data-colwidth=\"166\" width=\"166\">\n<p align=\"left\">Alpine Linux v3.20<\/p>\n<\/td>\n<td data-colwidth=\"66\" width=\"66\">\n<p align=\"left\">23.0.1<\/p>\n<\/td>\n<td>\n<p align=\"right\">977823<\/p>\n<\/td>\n<td data-colwidth=\"71.5\" width=\"71.5\">\n<p align=\"right\">2.71<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"right\">\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0442\u0435\u0441\u0442\u0435 \u043c\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0435\u043c\u0443 \u0438\u043d\u043e\u0433\u0434\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430) \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \ud83d\ude41 <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-443956","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=443956"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443956\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=443956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=443956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=443956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}