外部化从 SCDF 启动的任务或作业的 application.properties
Posted
技术标签:
【中文标题】外部化从 SCDF 启动的任务或作业的 application.properties【英文标题】:Externalize application.properties of tasks or Jobs launched from SCDF 【发布时间】:2020-11-16 16:36:24 【问题描述】:我在 openshift 环境中运行 SCDF。我使用 SCDF 在同一环境中启动批处理作业(spring.application.name=EmployeeBatchJob)。现在我需要将 EmployeeBatchJob 的 application.properties 外部化,尤其是数据源密码,所以我不会在我的 git repo 中的任何地方维护密码。
我使用 ConfigMap 为 SCDF 指定数据源。批处理应用程序需要两个数据源。因此,如果我想将批处理应用程序的 application.properties 外部化,是否应该仅为批处理应用程序创建单独的 configMap ?如果是这样,如何在 SCDF 启动的 POD 中引用/访问该配置映射。 (这里我已经外部化了两个数据源)。引用该 configmap 所需的所有属性是什么?
EmployeeBatchJob application.properties
spring.datasource.source1.password = abcd
spring.datasource.source2.password = efgh
These two properties of application should be moved to configmap and read by the POD when deployed from SCDF as Job
我尝试了 Cloud-config-map。但我仍然会将密码存储在 git repo 中。所以我正在寻找将它存储在 openshift 环境中并访问它的方法。
对于普通的 Spring Boot 应用程序,我们可以使用 ConfigMap 并将其作为卷挂载在 SpringBoot 应用程序的部署配置中。但我正在使用 SCDF 来启动我的批处理应用程序(EmployeeBatchJob)。
任何帮助将不胜感激。谢谢
【问题讨论】:
【参考方案1】:为了保存密码等敏感信息,我实际上会创建一个比配置映射更好的 Openshift secret,然后只需在需要从 yaml 中获取其值的任何地方引用它。
基于Spring SCDF docs,“第三部分.入门”部分,您可以修改src/etc/kubernetes/scdf-secrets.yml
中的Secrets,记住使用base64作为密码。
【讨论】:
如果我使用秘密,我怎么能在 SCDF POD 配置中引用它。由于 SCDF 推出的 POD 没有单独的 deployment.yaml 有什么消息吗?有帮助吗? 嗨哈维尔,不,这些文档是针对 SCDF POD 的,我已经为其设置了机密和配置映射。但我说的是从那里启动的任务应用程序。那些任务/作业 pod 无法访问 SCDF pod 可以访问的 configmap 信息。因为我将配置映射安装为 scdf 的卷。但从 SCDF 启动的任务/作业是不可能的。以上是关于外部化从 SCDF 启动的任务或作业的 application.properties的主要内容,如果未能解决你的问题,请参考以下文章
为从 SCDF 启动的批处理作业创建的 PODS 的 ConfigMap