X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=docker%2Fdocker-compose.yml;h=64ab239bad4a67f55081b4f30ad73425dacafd06;hb=b3262c6bafa74e2b53fffbf87de471eec9abd8d9;hp=bf9addde10ec46307397b71f42ee2f95b931d9c9;hpb=663a9aa3a9f3dc285ea78847813db8c5c3443cca;p=demos%2Fkafka%2Ftraining diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index bf9addd..64ab239 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -22,7 +22,9 @@ services: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" + KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "false" + KAFKA_SUPER_USERS: User:ANONYMOUS + KAFKA_LOG4J_LOGGERS: kafka.authorizer.logger=INFO KAFKA_OPTS: -javaagent:/usr/share/java/cp-base-new/jmx_prometheus_javaagent-0.18.0.jar=0.0.0.0:80:/etc/jmx-exporter.yml -Dcom.sun.management.jmxremote=true @@ -35,6 +37,7 @@ services: org.apache.kafka.common.security.plain.PlainLoginModule required \ user_schemaregistry="schemaregistry-secret" \ user_connect="connect-secret" \ + user_ui="ui-secret" \ user_client="client-secret"; KAFKA_LISTENER_NAME_LOCALHOST_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_LISTENER_NAME_LOCALHOST_PLAIN_SASL_JAAS_CONFIG: | @@ -64,7 +67,9 @@ services: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" + KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "false" + KAFKA_SUPER_USERS: User:ANONYMOUS + KAFKA_LOG4J_LOGGERS: kafka.authorizer.logger=INFO KAFKA_OPTS: -javaagent:/usr/share/java/cp-base-new/jmx_prometheus_javaagent-0.18.0.jar=0.0.0.0:80:/etc/jmx-exporter.yml -Dcom.sun.management.jmxremote=true @@ -77,6 +82,7 @@ services: org.apache.kafka.common.security.plain.PlainLoginModule required \ user_schemaregistry="schemaregistry-secret" \ user_connect="connect-secret" \ + user_ui="ui-secret" \ user_client="client-secret"; KAFKA_LISTENER_NAME_LOCALHOST_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_LISTENER_NAME_LOCALHOST_PLAIN_SASL_JAAS_CONFIG: | @@ -111,7 +117,9 @@ services: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" + KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "false" + KAFKA_SUPER_USERS: User:ANONYMOUS + KAFKA_LOG4J_LOGGERS: kafka.authorizer.logger=INFO KAFKA_OPTS: -javaagent:/usr/share/java/cp-base-new/jmx_prometheus_javaagent-0.18.0.jar=0.0.0.0:80:/etc/jmx-exporter.yml -Dcom.sun.management.jmxremote=true @@ -124,6 +132,7 @@ services: org.apache.kafka.common.security.plain.PlainLoginModule required \ user_schemaregistry="schemaregistry-secret" \ user_connect="connect-secret" \ + user_ui="ui-secret" \ user_client="client-secret"; KAFKA_LISTENER_NAME_LOCALHOST_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_LISTENER_NAME_LOCALHOST_PLAIN_SASL_JAAS_CONFIG: | @@ -153,7 +162,9 @@ services: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" + KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "false" + KAFKA_SUPER_USERS: User:ANONYMOUS + KAFKA_LOG4J_LOGGERS: kafka.authorizer.logger=INFO KAFKA_OPTS: -javaagent:/usr/share/java/cp-base-new/jmx_prometheus_javaagent-0.18.0.jar=0.0.0.0:80:/etc/jmx-exporter.yml -Dcom.sun.management.jmxremote=true @@ -166,6 +177,7 @@ services: org.apache.kafka.common.security.plain.PlainLoginModule required \ user_schemaregistry="schemaregistry-secret" \ user_connect="connect-secret" \ + user_ui="ui-secret" \ user_client="client-secret"; KAFKA_LISTENER_NAME_LOCALHOST_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_LISTENER_NAME_LOCALHOST_PLAIN_SASL_JAAS_CONFIG: | @@ -194,10 +206,17 @@ services: schema-registry: image: confluentinc/cp-schema-registry:7.5.1 environment: - SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka-1:9091,kafka-2:9091,kafka-3:9091 + SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka-1:9092,kafka-2:9092,kafka-3:9092 SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8085 SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO + SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: SASL_PLAINTEXT + SCHEMA_REGISTRY_KAFKASTORE_SASL_MECHANISM: PLAIN + SCHEMA_REGISTRY_KAFKASTORE_SASL_JAAS_CONFIG: > + org.apache.kafka.common.security.plain.PlainLoginModule + required + username="schemaregistry" + password="schemaregistry-secret"; ports: - 8085:8085 depends_on: @@ -208,7 +227,7 @@ services: connect: image: confluentinc/cp-kafka-connect:7.5.1 environment: - CONNECT_BOOTSTRAP_SERVERS: kafka-1:9091,kafka-2:9091,kafka-3:9091 + CONNECT_BOOTSTRAP_SERVERS: kafka-1:9092,kafka-2:9092,kafka-3:9092 CONNECT_REST_PORT: 8083 CONNECT_REST_LISTENERS: http://0.0.0.0:8083 CONNECT_REST_ADVERTISED_HOST_NAME: connect @@ -228,6 +247,29 @@ services: CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1 CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1 CONNECT_PLUGIN_PATH: /usr/share/java/ + # Configure the Connect workers to use SASL/PLAIN. + CONNECT_SASL_MECHANISM: PLAIN + CONNECT_SECURITY_PROTOCOL: SASL_PLAINTEXT + # JAAS + CONNECT_SASL_JAAS_CONFIG: > + org.apache.kafka.common.security.plain.PlainLoginModule required + username="connect" + password="connect-secret"; + # producer + CONNECT_PRODUCER_SASL_MECHANISM: PLAIN + CONNECT_PRODUCER_SECURITY_PROTOCOL: SASL_PLAINTEXT + CONNECT_PRODUCER_SASL_JAAS_CONFIG: > + org.apache.kafka.common.security.plain.PlainLoginModule required + username="connect" + password="connect-secret"; + # consumer + CONNECT_CONSUMER_SASL_MECHANISM: PLAIN + CONNECT_CONSUMER_SECURITY_PROTOCOL: SASL_PLAINTEXT + CONNECT_CONSUMER_SASL_JAAS_CONFIG: > + org.apache.kafka.common.security.plain.PlainLoginModule required + username="connect" + password="connect-secret"; + ports: - 8083:8083 depends_on: @@ -308,7 +350,10 @@ services: connections: docker-kafka-server: properties: - bootstrap.servers: "kafka:9091" + bootstrap.servers: "kafka:9092" + security.protocol: SASL_PLAINTEXT + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="ui" password="ui-secret"; schema-registry: url: "http://schema-registry:8085" connect: @@ -320,26 +365,47 @@ services: - kafka-3 producer: - image: juplo/simple-producer:1.0-SNAPSHOT - command: kafka:9092 test producer + image: juplo/endless-stream-spring-producer:1.0-SNAPSHOT + environment: + producer.throttle-ms: 1 + spring.kafka.bootstrap-servers: kafka-1:9092, kafka-2:9092, kafka-3:9092 + spring.kafka.client-id: producer + spring.kafka.template.default-topic: test + spring.kafka.producer.properties.linger.ms: 100 + spring.kafka.jaas.enabled: "true" + spring.kafka.properties.security.protocol: SASL_PLAINTEXT + spring.kafka.properties.sasl.mechanism: PLAIN + spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret"; consumer-1: image: juplo/spring-consumer:1.0-SNAPSHOT environment: spring.kafka.bootstrap-servers: kafka-1:9092, kafka-2:9092, kafka-3:9092 spring.kafka.client-id: consumer-1 + spring.kafka.jaas.enabled: "true" + spring.kafka.properties.security.protocol: SASL_PLAINTEXT + spring.kafka.properties.sasl.mechanism: PLAIN + spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret"; consumer-2: image: juplo/spring-consumer:1.0-SNAPSHOT environment: spring.kafka.bootstrap-servers: kafka-1:9092, kafka-2:9092, kafka-3:9092 spring.kafka.client-id: consumer-1 + spring.kafka.jaas.enabled: "true" + spring.kafka.properties.security.protocol: SASL_PLAINTEXT + spring.kafka.properties.sasl.mechanism: PLAIN + spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret"; consumer-3: image: juplo/spring-consumer:1.0-SNAPSHOT environment: spring.kafka.bootstrap-servers: kafka-1:9092, kafka-2:9092, kafka-3:9092 spring.kafka.client-id: consumer-1 + spring.kafka.jaas.enabled: "true" + spring.kafka.properties.security.protocol: SASL_PLAINTEXT + spring.kafka.properties.sasl.mechanism: PLAIN + spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret"; volumes: zookeeper-data: