我们可以在创建 Kafka 连接器时在 Postman 中使用系统环境变量吗
Can we use System Env Variables in Postman while creating Kafka Connector(s)
我们已将自定义的 Confluent Kafka 连接器部署为 Kubernetes 中的有状态集,它从 Azure KeyVault 安装机密。这些秘密包含数据库用户名和密码,用于在使用 Postman 通过 rest 端点 https://kafka.mydomain.com/connectors
创建连接器时使用。
秘密正在作为容器中的环境变量加载。并且 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"
,但在 Connector Pod 的日志中,它没有解析为相应的值。
日志:
[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
有什么方法可以在此配置中使用 system/container 环境变量,同时使用 Postman 或其他工具创建连接器?
我们已将自定义的 Confluent Kafka 连接器部署为 Kubernetes 中的有状态集,它从 Azure KeyVault 安装机密。这些秘密包含数据库用户名和密码,用于在使用 Postman 通过 rest 端点 https://kafka.mydomain.com/connectors
创建连接器时使用。
秘密正在作为容器中的环境变量加载。并且 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"
,但在 Connector Pod 的日志中,它没有解析为相应的值。
日志:
[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
有什么方法可以在此配置中使用 system/container 环境变量,同时使用 Postman 或其他工具创建连接器?