复制配置映射,但在同一命名空间中使用另一个名称(kubernetes/kubectl)

u12*_*123 2 kubernetes

我在命名空间中有一个配置映射my-config,需要制作一个副本(一些临时实验的一部分),但使用另一个名称,所以我最终得到:

my-config
my-config-copy
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

kubectl get cm my-config -o yaml > my-config-copy.yaml
Run Code Online (Sandbox Code Playgroud)

手动编辑名称,然后:

kubectl create -f my-config-copy.yaml
Run Code Online (Sandbox Code Playgroud)

但是有没有一种方法可以在一行中自动完成呢?

我可以通过以下方式获得一些方法:

kubectl get cm my-config --export -o yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

但我缺少新名称的部分(因为名称是不可变的,我知道这不是标准行为)。

也最好不使用导出,因为:

标志 --export 已被弃用,此标志已被弃用,并将在将来删除。

有什么建议么?

cse*_*nga 9

您可以通过组合 kubectlpatchapply函数来实现这一点。

 kubectl patch cm source-cm -p '{"metadata":{ "name":"target-cm"}}' --dry-run=client -o yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

source-cmtarget-cm配置映射名称