Kubectl edit直接编辑secret

来自三线的随记
Admin讨论 | 贡献2024年10月5日 (六) 01:55的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

主要是配合vim的能力来实现,或者假如原本的secret中的内容已经解码过了 / 可以完全覆盖,那么可以直接去掉secret 里面 data: 以及data下的所有声明,然后用stringData进行写入,保存以后会自动编码为base64,例如:

apiVersion: v1
stringData:
  test.yaml: |-
   11231313123123
kind: Secret
metadata:
  name: test
type: Opaque

所以首先需要保证kubectl edit调用的是vim 而不是 vi 或其他编辑器

可以通过环境变量指定使用vim

export KUBE_EDITOR=vim

然后开始编辑secret,例如 kubectl edit secret default

找到需要编辑的data

然后对base64以后的编码内容换行,保证整行内容都是base64处理后的结果

光标移动到base64以后的编码内容所在行

按下 : 进入vim的命令模式,输入 . ! base64 -d 即可解码,然后进行编辑

编辑完成以后,如果相应的解码后内容还在同一行,那就

同样按下 : 进入vim的命令模式,输入 . ! base64 -w0即可编码,例如 :'<,'> ! base64 -w0

如果需要编码的内容不在同一行,那么可以按下 Shift + V 进入vim的行visual模式以选中多行,然后再按下 : 进入vim的命令模式

输入 '<,'> ! base64 -w0 即可编码,例如 :'<,'> ! base64 -w0