有没有办法使用 oc 命令编辑我的 openshift configmap

Is there a way to edit my openshift configmap using oc command

我正在尝试创建一个简单的自动化来将我在 OpenShift 中的配置映射内容从当前内容替换为编辑后的 ​​yaml 文件,我尝试了很多 oc 命令但都失败了,我想知道是否有人知道怎么做。

只是为了让你明白: 我正在使用 oc get congifmap <configmap name> 从我的项目中获取当前配置图, 然后我使用 python 对 configmap 数据进行更改。 然后我想将当前配置映射更改为新编辑的配置映射。 我试过编辑、应用、更改,但都失败了。

非常感谢您的帮助:)

您只需要处理“输入”和“输出”即可。

想象一个 lighttpd.conf:

server.modules = (
    "mod_scgi",
    "mod_compress",
    "mod_accesslog"
)
oc create cm lighttpd --from-file lighttpd.conf

因此,作为示例,让我们将 mod_scgi 更改为 mod_fastcgi。所以我写了这个脚本:

import fileinput

for line in fileinput.input():
  if 'mod_scgi' in line:
    print(line.replace('scgi', 'fastcgi').rstrip())
  else:
    print(line.rstrip())

因此,要更改 configMap,更新它的值并再次应用:

oc get cm -o yaml | python modify.py | oc apply -f -
  • get -o yaml 在屏幕上打印所有信息
  • 输出到脚本 modify.py
  • modify.py 更改并打印从标准输入读取的行
  • 输出到 oc
  • oc apply -f - 从标准输入读取并应用

对于这样的用例有一个"oc"命令:oc patch

使用"oc patch"您可以编辑、替换、添加、删除任何 OCP 对象的部分

如果你google“oc补丁”你会在网上找到很多例子

Official OCP v4.7 oc patch doc
Tons of examples here
OC patch "man" page
Other examples