Kubernetes configmap打印 而不是换行符 [英] kubernetes configmap prints instead of a newline

查看:33
本文介绍了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引用了所有印刷的期刊。

Acomment mentions

我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆