通过 Docker 连接 Kafka 的自定义环境变量
Custom Environment Variables for Kafka Connect via Docker
有没有办法通过 Docker-Compose 提供可以在 Kafka 连接器配置中引用的自定义变量?
我的 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
之类的环境变量添加前缀,但没有用。
我觉得您正在寻找 Externalizing Kafka Connect secrets,但这需要挂载文件,而不是使用环境变量。
JSON 连接器配置文件未在 Docker 容器启动时加载。我 made this issue 看看这是否可行。
您必须在外部模板化 JSON 文件,然后将它们通过 HTTP-POST 发送到容器公开的端口。
Tried prefixing environment varibles like CONNECT_SQL_SERVER
这些值将进入 Kafka Connect Worker 属性,而不是需要由特定连接器任务加载的属性。
有没有办法通过 Docker-Compose 提供可以在 Kafka 连接器配置中引用的自定义变量?
我的 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
之类的环境变量添加前缀,但没有用。
我觉得您正在寻找 Externalizing Kafka Connect secrets,但这需要挂载文件,而不是使用环境变量。
JSON 连接器配置文件未在 Docker 容器启动时加载。我 made this issue 看看这是否可行。
您必须在外部模板化 JSON 文件,然后将它们通过 HTTP-POST 发送到容器公开的端口。
Tried prefixing environment varibles like CONNECT_SQL_SERVER
这些值将进入 Kafka Connect Worker 属性,而不是需要由特定连接器任务加载的属性。