通过Docker用于Kafka Connect的自定义环境变量

时间:2018-11-02 15:12:00

标签: docker apache-kafka apache-kafka-connect confluent

是否可以通过可在Kafka Connector配置中引用的Docker-Compose提供自定义变量?

我在docker-compose.yml中具有以下设置:

- "sql_server=1.2.3.4"
- "sql_database=db_name"
- "sql_username=some_user"
- "sql_password=nahman"
- "sql_applicationname=kafka_connect"

这是我的.json配置文件:

{
  "name": "vwInv_Tran_Amounts",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
    "src.consumer.interceptor.classes": "io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor",
    "tasks.max": 2,
    "connection.url": "jdbc:sqlserver://${sql_server};database=${sql_database};user=${sql_username};password={sql_password};applicationname={sql_applicationname}",
    "query": "SELECT * FROM vwInv_Tran_Amounts",
    "mode": "timestamp",
    "topic.prefix": "inv_tran_amounts",
    "timestamp.column.name": "timestamp",
    "incrementing.column.name": "Inv_Tran_ID"
  }
}

我能够通过Elastic Logstash使用此方法引用环境变量,但是在这里似乎不起作用。

每当通过curl加载时,我都会收到:

The connection string contains a badly formed name or value. for configuration Couldn't open connection to jdbc:sqlserver://${sql_server};database=${sql_database};user=${sql_username};password={sql_password};applicationname={sql_applicationname}\nInvalid value com.microsoft.sqlserver.jdbc.SQLServerException: The connection string contains a badly formed name or value.

编辑////////// 我尝试给环境变量加前缀CONNECT_SQL_SERVER之类的标签,但没有用。

1 个答案:

答案 0 :(得分:1)

我觉得您正在寻找Externalizing Kafka Connect secrets,但这将需要挂载文件,而不使用env vars。

JSON连接器配置文件未在Docker容器启动时加载。我made this issue看这是否可行。

您将必须在外部模板化JSON文件,然后将它们HTTP-POST到容器公开的端口。

  

尝试为前缀CONNECT_SQL_SERVER之类的环境变量

这些值将进入Kafka Connect Worker属性,而不是特定连接器任务需要加载的属性。