将一个文件添加到现有的Openshift configMap中

3

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

我正在构建一个Jenkins作业,该作业将自动更新Openshift configMap中的特定键,因为这是我的建议,但现在我面临实际操作的问题。我们总是可以拥有多个configmaps,但为了保持整洁性,我仍然提出了这个问题。

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

我只找到了一条命令来完成此操作,但是它不是将键“file.properties”及其内容作为值添加,而是将整个configMap替换为“file.properties”键,这不是我想要的。
在某些情况下,某个团队部署了一个特定的configMap,我应该能够更新和维护该configMap,并添加额外的值(如果可能的话)。
编辑:我在这篇2016年的帖子中找到了信息,但似乎在openshift 3.10中已删除oc update命令。
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 -

如果您只需要一行代码,那么这种方法可以正常工作。但是,您也可以使用文本编辑器手动编辑configmap,例如:oc edit configmap my-config,或者使用oc replace(使用新准备的json或yaml文件),或者使用Web控制台。可能还可以使用oc patch,但我无法快速使其工作。


2

OC Patch 是您的好帮手:

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

其中patch_file.yaml包含:

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

如果file.properties不在cm中,它将会被创建并与其他数据合并,如果它已存在,则会被替换。"Original Answer"翻译成"最初的回答"。

如果我只想替换file.properties文件怎么办? - ImranRazaKhan
如果您已经阅读了注释,那么“...如果它在其中,它将被替换。” - Kostadin Karaivanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接