在创建Kafka连接器时,我们可以在postman中使用系统环境变量吗

ni65a41a  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(635)

我们在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或其他工具创建连接器时,是否有任何方法可以在此配置中使用系统/容器环境变量?

dvtswwa3

dvtswwa31#

我们做到了!!使用 FileConfigProvider . 所有需要的信息都在这里。
我们只需要参数化 connect-secrets.properties 根据我们的要求,在启动时替换env vars值。
这不允许通过 Postman 使用env vars。但是参数化了 connect-secrets.properties 根据我们的需要进行了特别调整 FileConfigProvider 其余的都是从 connect-secrets.properties ###更新
在这里找到了一种使用env vars实现这个的方法。

相关问题