当前位置: 首页 > 知识库问答 >
问题:

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

长孙承嗣
2023-03-14

我们已经在库伯内特斯中部署了自定义合流Kafka连接器作为状态集,它从Azure KeyVault挂载机密。这些机密包含db用户名和密码

机密作为环境变量被加载到容器中。基于< code > kubernetes-ingress-controller 路径的路由用于暴露restendpoint。

到目前为止,我们的团队在通过 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”,但在连接器 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

有没有办法在这个配置中使用系统/容器环境变量,同时使用Postman或其他东西创建连接器?

共有1个答案

郤飞英
2023-03-14

终于做到了!!使用FileConfi提供者。所有需要的信息都在这里。

我们只需根据我们的要求对< code > connect-secrets . properties 进行参数化,并在启动时替换env vars值。

这不允许通过Postman使用环境变量。但是根据我们的需要专门调整的参数化的< code > connect-secrets . properties 完成了这项工作,而< code>FileConfigProvider通过从< code > connect-secrets . properties 中选取值来完成其余的工作

在这里找到了使用env变量实现这一点的方法。

 类似资料:
  • 问题内容: 我的操作系统是Windows7。我想在我的Java应用程序中读取环境变量。我已经搜索过google,很多人的答案是使用方法 或 。但这似乎不起作用。通过该方法,我可以读取JVM中定义的某些变量的值。 如果我设置一个名为“ Config”的环境变量,其值为“一些配置信息”,那么如何在Java中获取该值? 问题答案: 您应该使用System.getenv(),例如: 从IDE运行时,您可以

  • 问题内容: 我有一个Perl脚本,其中有一个类似的变量。我们可以将$ name的内容设置为可以导入其他文件并在其他文件中使用的环境变量吗? 我尝试过,但是这不起作用。 问题答案: 如果要影响您的进程或子进程的环境,请使用哈希: 如果要影响父进程的环境,则不会。至少没有父进程的合作。标准过程是发出shell脚本并让父进程执行该shell脚本: …并从shell(脚本)中调用该脚本为:

  • 问题内容: Java是否具有默认的“系统环境变量”,当我们设置它时将始终读取/附加它?/ etc似乎仅适用于TOMCAT / JBOSS等。 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传递)来设置它,因为它涉及shell / batch脚本。 它应可跨操作系统使用,例如Windows中的双击jar文件。 它应该可以在不同的JRE(Sun,IB

  • 问题内容: 所以我的Dockerfile是这样写的: 但是我想用 这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。 我该如何解决? 谢谢。 问题答案: 使用指令。根据文档: ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。 因此,您实际上可以像这样使用:

  • 问题内容: 是否可以在log4j xml配置文件中引用系统环境变量(与Java系统属性相反)? 我希望能够执行以下操作: 并使其从系统环境变量中获取,因此我可以避免必须通过-D参数传递太多内容。 问题答案: 仅在log4j 2.X中记录了此语法,因此请确保使用正确的版本。它不适用于1.X版本。

  • 问题内容: 我认为这是另一个简单的问题,但是我无法使用任何Web解决方案。我的项目有一个版本号。每个数字都可以用“。”分隔。或“ _”。我想要一个仅显示前两个数字的变量。 我尝试编写一个普通的脚本来创建Jenkins环境变量。 我想使用前两位数字而不是整个字符串。 我是否正确执行此操作,甚至可以创建一个新的环境变量,并且对此有更好的解决方案吗? 问题答案: 以下groovy片段应传递版本(如您所提