我们在kubernetes中部署了定制的confluent kafka连接器作为statefulset,它从azure keyvault装载秘密。这些秘密包含db username和password&用于通过rest端点创建连接器 https://kafka.mydomain.com/connectors
使用 Postman 。
这些秘密将作为环境变量加载到容器中。以及 kubernetes-ingress-controller
-基于路径的路由用于公开rest端点。
到目前为止,我们的团队无法在通过postman创建连接器时使用环境变量。
连接器配置:
{
"name": "TEST.CONNECTOR.SINK",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"errors.log.include.messages": "true",
"table.name.format": "AuditTransaction",
"connection.password": "iampassword", <------------ (1)
"flush.size": "3",
"tasks.max": "1",
"topics": "TEST.CONNECTOR.SOURCE-AuditTransaction",
"key.converter.schemas.enable": "false",
"connection.user": "iamuser", <------------ (2)
"value.converter.schemas.enable": "true",
"name": "TEST.CONNECTOR.SINK",
"errors.tolerance": "all",
"connection.url": "jdbc:sqlserver://testdb.database.windows.net:1433;databaseName=mytestdb01",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"insert.mode": "insert",
"errors.log.enable": "true",
"key.converter": "org.apache.kafka.connect.json.JsonConverter"
}
}
(1) 和(2)-这里我们要使用系统环境变量的值- $my_db_username=iamuser
, $my_db_password=iampassword
. 我们试过使用 "$my_db_username"
以及 "$my_db_password"
但是在连接器盒的日志中,它不能解析为相应的值。
日志:
[2020-07-28 12:31:22,838] INFO Starting JDBC Sink task (io.confluent.connect.jdbc.sink.JdbcSinkTask:44)
[2020-07-28 12:31:22,839] INFO JdbcSinkConfig values:
auto.create = false
auto.evolve = false
batch.size = 3000
connection.password = [hidden]
connection.url = jdbc:sqlserver://testdb.database.windows.net:1433;databaseName=mytestdb01
connection.user = $my_db_username
db.timezone = UTC
delete.enabled = false
dialect.name =
fields.whitelist = []
insert.mode = insert
max.retries = 10
pk.fields = []
pk.mode = none
quote.sql.identifiers = ALWAYS
retry.backoff.ms = 3000
table.name.format = AuditTransaction
在使用postman或其他工具创建连接器时,是否有任何方法可以在此配置中使用系统/容器环境变量?
1条答案
按热度按时间dvtswwa31#
我们做到了!!使用
FileConfigProvider
. 所有需要的信息都在这里。我们只需要参数化
connect-secrets.properties
根据我们的要求,在启动时替换env vars值。这不允许通过 Postman 使用env vars。但是参数化了
connect-secrets.properties
根据我们的需要进行了特别调整FileConfigProvider
其余的都是从connect-secrets.properties
###更新在这里找到了一种使用env vars实现这个的方法。