kubernetes的configmap格式错乱问题

文章讲述了在处理KubernetesConfigMap资源时遇到的格式问题,特别是当配置文件如nginx.conf包含制表符或尾随空格时。解决方案包括使用sed命令删除尾随空格,用空格替换制表符,以及利用jq或yq工具查看和编辑ConfigMap内容,确保YAML格式正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题       

        最近发现configmap资源在查看(-o yaml)或者修改(edit)时,存在格式错乱问题。以nginx配置文件为例,通过<kubectl create cm nginx.cong>创建cm,如下:

 二、原因

        可能是由于配置文件(如nginx.conf)文件自身存在制表符TAB或者尾随空格,Kubernetes ConfigMapload过程中发现文件中包含tab缩进,直接转化为\n\t。

        我们需要在创建cm前先把配置文件格式化

# 使用以下方法删除尾随空格
sed -i -E 's/[[:space:]]+$//g' file.txt
# 使用空格替换制表符
sed -i 's/\t/    /g' file.txt

        然后创建cm就显示正常了。

三、查看

        如果cm已经创建只需要查看下原有的格式,可以通过jq实现

# kubectl get cm -n my-namespace my-cm -o json | jq '.data."nginx.conf"' -r

#  将my-cm这个configmap资源以json格式化输出,格式化范围是/data/nginx.conf内容

四、修改

1、直接修改(还没验证)

# 下载yq工具
wget https://github.com/mikefarah/yq/releases/download/v4.16.2/yq_linux_amd64 \
  && chmod +x yq_linux_amd64 \
  && mv yq_linux_amd64 /usr/local/bin/yq

# kubectl edit cm my-cm | yq '.' -

# 将 ConfigMap 的内容输出为 YAML 格式,并通过 `yq` 工具进行格式化和修改。其中,`.` 表示当前节点,`-` 表示从标准输入读取数据,然后可以对其进行修改和调整,最后保存退出即可。
  注意:在编辑时需要按照正确的 YAML 语法进行操作,否则可能会导致格式错误等问题。

2、重新生成cm

1. 格式化配置文件后重新create configmap;(原配置文件能找到)

2、jq 'xxx' -r获取当前配置文件后重新create configmap;(当前cm里面直接拿)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

情绪零碎碎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值