3

是否可以将文件添加到现有的 Openshift configMap 中?

正如我所建议的那样,我将构建一个 Jenkins 作业,该作业将自动更新 Openshift configMap 中的特定键,但现在我在实际操作时遇到了问题。我们总是可以有多个配置映射,但为了清洁起见,我的问题仍然存在。

oc create configmap my-config --from-file=path/to/file.properties --dry-run -o 
yaml | oc apply -f -

我只发现这个命令可以做到这一点,但不是添加键“file.properties”及其内容作为值,它只是用键“file.properties”替换我的整个configMap,这是我没有的希望做。

这里的用例是某个团队部署了一个特定的 configMap,如果可能的话,我应该能够使用额外的值来更新和维护 configMap。

编辑:我从 2016 年发现这个线程,但oc update似乎已从 openshift 3.10 中删除

4

2 回答 2

2

通过使用 json 而不是 yaml,并使用jq及其乘法运算符( ),我能够得到我认为你想要的东西*,当与对象一起使用时,它将递归地合并它们(为了可读性而拆分行):

oc export configmap my-config -o json \
  | jq ". * $(oc create configmap my-config --from-file path/to/file.properties --dry-run -o json)" \
  | oc apply -f -

虽然如果您正在寻找单线,这很好用,您也可以在文本编辑器中手动编辑配置映射oc edit configmap my-config,或oc replace(使用新准备的 json 或 yaml 文件),或使用 Web 控制台。这也可能是可能的oc patch,但我无法让它快速工作。

于 2018-09-28T22:30:18.117 回答
2

oc 补丁是你的朋友:

oc patch cm myconfig -p $(cat patch_file.yaml)

其中 patch_file.yaml 有:

data:
  file.properties: |
    content of the file here

如果 file.properties 不在 cm 中,它将被创建并与其余数据合并,如果在其中,则将被替换。

于 2019-03-11T11:39:12.850 回答