Kubernetes configmap打印 而不是换行符 [英] kubernetes configmap prints instead of a newline
本文介绍了Kubernetes configmap打印
而不是换行符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将configmap部署到群集
- name: Make/Update all configmaps on the cluster
kubernetes:
api_endpoint: blah
url_username: blah
url_password: blah
inline_data:
apiVersion: v1
kind: ConfigMap
metadata:
name: blah
namespace: blah
data: my-data.txt: "{{ data }}"
state: present
data: |
some = foo
foo = some
(using spinnaker to attach it to pods)
当我进入Pod并打开my-data.txt时,它显示:
some = foo
foo = some
我希望它看起来与文本完全一样,并打印换行符,而不是
奇怪的是,如果我将‘’单引号放在文本中的某个位置,它会按原样打印文本,但会使用单引号打印文本,因此:
data: |
some = foo
foo = some
' '
打印的内容完全相同。
我试过调查,但什么也找不到,我已经坚持了一段时间了。
推荐答案
这似乎类似于从文件创建configMap时的kubernetes/kubernetes issue 36222。
在您的情况下,从data
挡路创建时会发生这种情况。
最近的kubernetes/kubernetes issue 63503引用了所有印刷的期刊。
我使用Tab进行标识,在configMap中添加了新行。在更改为空格而不是Tab后,我可以按预期看到configmap.
8月202:issue 36222现在包括:
如果您只想要创建时读入的原始输出
--from-file
,您可以使用jq
获取原始字符串(没有转义换行符等)如果您从如下文件创建了configmap:
kubectl create configmap myconfigmap --from-file mydata.txt
获取数据:
kubectl get cm myconfigmap -o json | jq '.data."mydata.txt""' -r
同时:
如果cm的格式变得奇怪,使其恢复正常的简单方法是:
kubectl get cm configmap_name-o yaml>;cm.yaml
现在复制cm.yaml
文件的内容,并将其传递到yamllint.com
。Yamllint.com是检查YAML文件粘连的强大工具。
这将为您提供预期的具有正确格式的configmap。将输出粘贴到另一个YAML文件中(例如-cm_ready.yaml)
kubectl apply -f cm_ready.yaml
更新2020年11月,same issue包括:
我能够通过以下方式修复此行为:
不使用制表符,转换为空格
若要删除换行符之前的空格,请使用以下命令:
sed -i -E 's/[[:space:]]+$//g' File.ext
似乎还会将CRLF仅转换为LF。
这篇关于Kubernetes configmap打印 而不是换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文