
修复configmap编辑后配置乱码
最近在工作中,博主经常需要手动调试 Kubernetes 中的 ConfigMap 文件。有一次,编辑 ConfigMap 后发现配置文件显示乱码。经过排查,我发现是因为某一行的配置末尾多了一个空格,导致文件无法正常阅读。为了帮助大家解决类似问题,我整理了一下遇到 ConfigMap 乱码时的处理方法,分享给大家。
问题复现:
手动编辑configmap
kubectl edit cm testapp -n testns
在 Vim 编辑器中打开配置文件后,假设我在编辑时不小心在某一行的末尾添加了一个空格,导致配置文件看起来像这样:
apiVersion: v1
data:
config.yaml: |-
testcm1: # <--- 假设这里行尾不小心多敲了一个空格
host: "test.com:10086"
user: "test"
pass: "test"
testcm2:
AppId: "test"
AppSecret: "test"
kind: ConfigMap
metadata:
...
再次打开configmap
kubectl edit cm testapp -n testns
当我再次打开 ConfigMap 时,配置文件的格式已经发生了变化,变成了乱码状态,如下所示:
# 以下为 vim 模式下的例子,显示乱码状态
...
apiVersion: v1
data:
config.yaml: "testcm1: \n host: \"test.com:10086\"\n user: \"test\"\n pass: \"test\"\ntestcm2:\n
\ AppId: \"test\"\n AppSecret: \"test\""
kind: ConfigMap
metadata:
annotations:
...
通过上面的试例可以看到末尾的一个小小的空格会导致整个配置文件不可读,同时想再临时调试修改也不好修改,这还只是博主为了用来举例的简易配置,工作环境下的配置可能非常多,之前如果遇到这样的问题往往博主都是直接helm重新渲染回来的,最近调试功能的原因手动修改多了起来,简单重新渲染可能会丢失之前的一些临时修改,所以就找了找原因,总结了下处理办法
原因说明:
行尾空格:在 YAML 文件中,特别是使用 kubectl edit cm 时,行尾的额外空格会导致解析错误。
缩进不一致:YAML 格式对缩进非常敏感,缩进的空格数不一致也会引起解析问题。
特殊字符或空格问题:某些情况下,编辑工具可能会错误地处理字符编码,尤其是在不同的终端或编辑器环境中。
处理方法:
搜索删除误添加的空格
kubectl edit cm testapp -n testns
在 Vim 中,输入以下命令搜索包含空格的行:
/ \\n
#定位到误添加的空格后x删除即可,如果还有那就继续n定位下一个依次删除后wq保存退出,在打开就会恢复成正常的配置格式啦
这就是快速解决 ConfigMap 乱码问题的小妙招!通过简单的 Vim 搜索和删除空格,就可以修复由于误操作导致的配置文件乱码问题。如果你有更好的解决方法,欢迎在评论区分享交流。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 咸鱼博客
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果