将文件添加到现有的Openshift configMap

时间:2018-09-27 12:07:41

标签: jenkins openshift configmap

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

正如我的建议,我要构建一个Jenkins作业,该作业将自动更新Openshift configMap中的特定键,但是现在我在执行该操作时遇到了问题。我们总是可以有多个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年有this个线程,但oc update似乎已从openshift 3.10中删除

2 个答案:

答案 0 :(得分: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-configoc replace(使用新准备的json或yaml)在文本编辑器中手动编辑configmap文件),或使用网络控制台。 oc patch也有可能,但是我无法快速开始工作。

答案 1 :(得分:0)

oc补丁是您的朋友:

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

其中patch_file.yaml具有:

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

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