如何在 docker-compose 中配置 bitnami ksqldb docker 镜像

问题描述 投票:0回答:1

老实说,我从未使用过 bitnami 的图像,而且我很难理解如何使用 KSQLDB 图像。我很确定我正在做一些非常愚蠢的事情,因为我误解了一些非常基本的事情。

这是我的基本 docker-compose:

services:
  ksqldb-server:
    image: bitnami/ksql:latest
    hostname: ksqldb-server
    container_name: ksqldb-server
    ports:
      - "8088:8088"
    volumes:
      - "./ksql-server.properties:/opt/bitnami/ksql/config/ksql-server.properties"
    environment:
      # KSQL
      KSQL_LISTENERS: http://0.0.0.0:8088
      KSQL_BOOTSTRAP_SERVERS: my-remote-server:9092
      KSQL_MOUNTED_CONF_DIR: "/opt/bitnami/ksql/config"
  ksqldb-cli:
    image: confluentinc/ksqldb-cli:0.29.0
    container_name: ksqldb-cli
    depends_on:
      - ksqldb-server
    entrypoint: /bin/sh
    tty: true

我的目标是在 BITNAMI 文档中设置这几个 ENVS,然后通过 conf 文件设置其他的。我想保留所有其他的默认值。

这是我的配置文件:

security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="usernameXXX" password="passwordXXX";
ssl.endpoint.identification.algorithm=HTTPS
ksql.internal.topic.replicas=3
ksql.sink.replicas=3
ksql.streams.replication.factor=3
ksql.logging.processing.topic.replication.factor=3
ksql.logging.processing.stream.auto.create=true
ksql.logging.processing.topic.auto.create=true
ksql.log4j.root.loglevel=DEBUG

由于 bitname 使用用户 1001,所以我这样做

chown -R 1001:1001 ksql-server.properties

当我启动此程序时,我得到:

ksqldb-server  | ksql 09:04:32.27 INFO  ==> 
ksqldb-server  | ksql 09:04:32.28 INFO  ==> ** Starting KSQL setup **
ksqldb-server  | ksql 09:04:32.30 INFO  ==> Validating settings in KSQL_* env vars
ksqldb-server  | ksql 09:04:32.33 INFO  ==> Initializing Confluent KSQL
ksqldb-server  | ksql 09:04:32.34 INFO  ==> Injected configuration file found. Skipping default configuration
ksqldb-server  | ksql 09:04:32.34 INFO  ==> Waiting for Kafka brokers to be up
ksqldb-server exited with code 1

我还尝试删除:

KSQL_MOUNTED_CONF_DIR: "/opt/bitnami/ksql/config"

并设置:

volumes:
      - "./ksql-server.properties:/opt/bitnami/ksql/etc/ksqldb/ksql-server.properties"

没有任何变化,仍在检测注入的配置,没有调试日志。

如果我完全删除卷(没有配置文件),我会收到“使用默认值未检测到配置”,然后 Kafka 端点上出现明显错误。

我最初的猜测是,当您不提供

/opt/bitnami/ksql/etc/ksqldb
时,
KSQL_MOUNTED_CONF_DIR
文件夹用于创建默认文件。尽管如此,即使替换该文件夹中的文件也会创建一个“找到注入的配置文件”日志,所以我不知道这是如何工作的。

此外,用

docker run -it bitnami/ksql /bin/bash
查看该文件夹,我看到了很多模板。特别是一个叫做
ksqldb-server.properties.template
,里面有:

{% set kr_props = env_to_props('KSQL_', '') -%}
{% for name, value in kr_props.items() -%}
{{name}}={{value}}
{% endfor -%}

这似乎是 docker 镜像 confluenceinc/ksqldb-server 中使用的方法,这将是我最喜欢的配置方式。我尝试过(不希望添加其他未在 bitnami 的非常小的文档中编写的 ENVS,如下所示:

      KSQL_SASL_JAAS_CONFIG: >
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="usernameXXX"
        password="passwordXXX";
      KSQL_SECURITY_PROTOCOL: SASL_SSL
      KSQL_SASL_MECHANISM: PLAIN
      KSQL_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: "HTTPS"

同样的错误。

简而言之:

  • 这个图像是如何工作的?
  • 如何配置?
  • 是否可以设置它,以便我可以像在 confluenceinc/ksqldb-server 中一样使用 ENVS?
docker docker-compose bitnami ksqldb bitnami-kafka
1个回答
0
投票

据我了解,您可以使用配置文件中的环境变量,也可以在

docker-compose.yml
中指定它们。我尝试启动你的 docker-compose,但遇到了这个问题:

ksqldb-server  | ksql 16:48:59.81 INFO  ==> ** Starting KSQL setup **
ksqldb-server  | ksql 16:48:59.86 INFO  ==> Validating settings in KSQL_* env vars
ksqldb-server  | ksql 16:48:59.89 INFO  ==> Initializing Confluent KSQL
ksqldb-server  | ksql 16:48:59.92 INFO  ==> No injected configuration files found, creating default config file.
ksqldb-server  | grep: /opt/bitnami/ksql/etc/ksqldb/ksql-server.properties: Is a directory
ksqldb-server  | /opt/bitnami/scripts/libksql.sh: line 158: /opt/bitnami/ksql/etc/ksqldb/ksql-server.properties: Is a directory
ksqldb-server exited with code 1

我通过 docker-compose 添加了环境变量,之后它就起作用了

services:
  ksqldb-server:
    image: bitnami/ksql:latest
    hostname: ksqldb-server
    container_name: ksqldb-server
    ports:
      - "8088:8088"
    volumes:
      - "./ksql-server.properties:/opt/bitnami/ksql/config/ksql-server.properties"
    environment:
      # KSQL
      KSQL_LISTENERS: http://0.0.0.0:8088
      KSQL_BOOTSTRAP_SERVERS: my-remote-server:9092
      KSQL_SECURITY_PROTOCOL: SASL_SSL
      KSQL_SASL_MECHANISM: PLAIN
      KSQL_SASL_JAAS_CONFIG: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="usernameXXX" password="passwordXXX";'
      KSQL_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: "HTTPS"
      KSQL_INTERNAL_TOPIC_REPLICAS: 3
      KSQL_SINK_REPLICAS: 3
      KSQL_STREAMS_REPLICATION_FACTOR: 3
      KSQL_LOGGING_PROCESSING_TOPIC_REPLICATION_FACTOR: 3
      KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: true
      KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: true
      KSQL_LOG4J_ROOT_LOGLEVEL: DEBUG
  ksqldb-cli:
    image: confluentinc/ksqldb-cli:0.29.0
    container_name: ksqldb-cli
    depends_on:
      - ksqldb-server
    entrypoint: /bin/sh
    tty: true

这是输出:

ksqldb-server  | ksql 16:52:07.73 INFO  ==> 
ksqldb-server  | ksql 16:52:07.73 INFO  ==> Welcome to the Bitnami ksql container
ksqldb-server  | ksql 16:52:07.73 INFO  ==> Subscribe to project updates by watching https://github.com/bitnami/containers
ksqldb-server  | ksql 16:52:07.74 INFO  ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
ksqldb-server  | ksql 16:52:07.74 INFO  ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
ksqldb-server  | ksql 16:52:07.74 INFO  ==> 
ksqldb-server  | ksql 16:52:07.75 INFO  ==> ** Starting KSQL setup **
ksqldb-server  | ksql 16:52:07.76 INFO  ==> Validating settings in KSQL_* env vars
ksqldb-server  | ksql 16:52:07.80 INFO  ==> Initializing Confluent KSQL
ksqldb-server  | ksql 16:52:07.81 INFO  ==> No injected configuration files found, creating default config file.
ksqldb-server  | ksql 16:52:07.84 INFO  ==> Waiting for Kafka brokers to be up
ksqldb-server  | 
ksqldb-server  | ksql 16:52:07.85 INFO  ==> ** KSQL setup finished! **
ksqldb-server  | ksql 16:52:07.86 INFO  ==> ** Starting KSQL **

我已经检查了容器内的变量。

docker-compose.yml
中指定的所有变量均已成功注入。

© www.soinside.com 2019 - 2024. All rights reserved.