From af10c1f863bafb278e7bfca38d0154d980bea88d Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Fri, 15 Apr 2022 13:05:07 -0500 Subject: [PATCH] Add schema registry to Kafka tools --- tools/kafka/docker-compose/README.adoc | 38 +++++++++++++++---- .../docker-compose/control-center-ui.yml | 2 +- .../kafka/docker-compose/schema-registry.yml | 22 +++++++++++ 3 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 tools/kafka/docker-compose/schema-registry.yml diff --git a/tools/kafka/docker-compose/README.adoc b/tools/kafka/docker-compose/README.adoc index 95dcc7c..5a6e506 100644 --- a/tools/kafka/docker-compose/README.adoc +++ b/tools/kafka/docker-compose/README.adoc @@ -20,21 +20,45 @@ TIP: To start the containers in the foreground simply add `-d` to the start comm === Control Center UI Runs a https://docs.confluent.io/platform/current/control-center/index.html[Confluent Control Center] that exposes a UI at http://locahost:9021. -NOTE: It is expected that the brokers are already running +NOTE: The scripts must be chained together as the UI depends on the brokers -To start the Control Center run the following command: +To start the brokers and the Control Center UI run the following command: [source,shell] ---- -docker-compose -f ./control-center-ui.yml up +docker-compose -f ./kafka-cluster.yml -f ./control-center-ui.yml up ---- -To stop the Control Center run the following command: +To stop the brokers and the Control Center UI run the following command: [source,shell] ---- -docker-compose -f ./control-center-ui.yml down +docker-compose -f ./kafka-cluster.yml -f ./control-center-ui.yml down ---- -TIP: The scripts can be chained together to start both cluster and UI in a single command +=== Schema Registry +Runs a https://docs.confluent.io/platform/current/schema-registry/index.html[Confluent Schema Registry] available at http://locahost:8081. + +NOTE: The scripts must be chained together as the schema registry depends on the brokers + +To start the brokers and the schema registry run the following command: [source,shell] ---- -docker-compose -f kafka-cluster.yml -f ./control-center-ui.yml up` +docker-compose -f ./kafka-cluster.yml -f ./schema-registry.yml up ---- +To stop the brokers and the schema registry run the following command: +[source,shell] +---- +docker-compose -f ./kafka-cluster.yml -f ./schema-registry.yml down +---- + +=== All The Things +The scripts can be chained together to start the cluster, UI and schema registry with the following commmand: +[source,shell] +---- +docker-compose -f kafka-cluster.yml -f ./control-center-ui.yml -f ./schema-registry.yml up +---- +Likewise, to stop all the things: +[source,shell] +---- +docker-compose -f kafka-cluster.yml -f ./control-center-ui.yml -f ./schema-registry.yml down +---- + +TIP: The only "UI" representation of the schema registry is by navigating to a `Topic` and then clicking the `Schema` tab for the topic \ No newline at end of file diff --git a/tools/kafka/docker-compose/control-center-ui.yml b/tools/kafka/docker-compose/control-center-ui.yml index 716be64..34cc5fb 100644 --- a/tools/kafka/docker-compose/control-center-ui.yml +++ b/tools/kafka/docker-compose/control-center-ui.yml @@ -21,7 +21,7 @@ services: #CONTROL_CENTER_CONNECT_CONNECT-DEFAULT_CLUSTER: 'connect:8083' #CONTROL_CENTER_KSQL_KSQLDB1_URL: "http://ksqldb-server:8088" #CONTROL_CENTER_KSQL_KSQLDB1_ADVERTISED_URL: "http://localhost:8088" - #CONTROL_CENTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081" + CONTROL_CENTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081" CONTROL_CENTER_REPLICATION_FACTOR: 1 CONTROL_CENTER_INTERNAL_TOPICS_PARTITIONS: 1 CONTROL_CENTER_MONITORING_INTERCEPTOR_TOPIC_PARTITIONS: 1 diff --git a/tools/kafka/docker-compose/schema-registry.yml b/tools/kafka/docker-compose/schema-registry.yml new file mode 100644 index 0000000..91a0dec --- /dev/null +++ b/tools/kafka/docker-compose/schema-registry.yml @@ -0,0 +1,22 @@ +version: '2' + +# Runs a Confluent Schema Registry instance on 'http://localhost:8081'. +# +# Pre-requisites: The brokers are already running. + +services: + schema-registry: + image: confluentinc/cp-schema-registry:7.0.1 + hostname: schema-registry + container_name: schema-registry + depends_on: + - broker1 + - broker2 + - broker3 + ports: + - "8081:8081" + environment: + SCHEMA_REGISTRY_HOST_NAME: schema-registry + SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: 'broker1:29091,broker2:29092,broker3:29093' + SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 + SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: WARN