是否可以将文件添加到现有的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中删除
答案 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-config
或oc 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中,它将被创建并与其余数据合并,如果在其中,它将被替换。