如何拆分JCasC ConfigMap且避免配置互相覆盖?
解决JCasC ConfigMap拆分后配置覆盖的问题
问题根源是两个ConfigMap的configScripts使用了相同的键名(jenkins-settings),JCasC加载时会用后加载的同名键覆盖前一个的配置。要避免覆盖,只需给两个ConfigMap的配置脚本设置独立的键名即可:
1. 修改主配置ConfigMap(master-jcasc)
移除jobs部分,保留基础配置,键名保持jenkins-settings:
apiVersion: v1 kind: ConfigMap metadata: name: master-jcasc namespace: master-namespace data: entries.yaml: | master: JCasC: defaultConfig: false configScripts: jenkins-settings: | field1: ... field2: ...
2. 修改Job配置ConfigMap(jobs-file)
给configScripts设置新的唯一键名(比如jenkins-jobs),单独存放jobs配置:
apiVersion: v1 kind: ConfigMap metadata: name: jobs-file namespace: master-namespace data: entries.yaml: | master: JCasC: configScripts: jenkins-jobs: | jobs: - script: > someJobDefenition
原理说明
JCasC的configScripts是一个键值对字典,每个键对应一段独立的配置片段。当加载多个包含JCasC配置的ConfigMap时,所有configScripts下的键都会被汇总,JCasC会深度合并不同键对应的配置内容,不会出现覆盖问题。
另外,defaultConfig: false只需在其中一个ConfigMap中配置即可,重复配置不会产生冲突(布尔值的合并逻辑是最后加载的生效,但此处值为false,不影响结果)。
内容的提问来源于stack exchange,提问作者Chris Ragner
相关产品推荐
相关产品推荐

