问题
发现configmap资源在查看(-o yaml)或者修改(edit)时,存在格式错乱问题。以Prometheus配置文件为例,通过kubectl create cm Prometheus创建cm,如下:
原因
可能是由于配置文件(如nginx.conf)文件自身存在制表符TAB或者尾随空格,Kubernetes ConfigMap在load过程中发现文件中包含tab缩进,直接转化为\n\t。
我们需要在创建cm前先把配置文件格式化
# 使用以下方法删除尾随空格
sed -i -E 's/[[:space:]]+$//g' file.txt
# 使用空格替换制表符
sed -i 's/\t/ /g' file.txt
查看源文件
kubectl -n monitoring get cm test -ojson | jq '.data."prometheus.yml"' -r
重新生成cm
- 格式化配置文件后重新create configmap;(原配置文件能找到)
- jq ‘xxx’ -r获取当前配置文件后重新create configmap;(当前cm里面直接拿)