kubernetes configmap打印\ n而不是换行符

时间:2018-07-11 17:47:06

标签: kubernetes ansible yaml devops

我正在尝试将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)

当我进入吊舱并打开my-data.txt时,它显示:

some = foo\n foo = some\n

我希望它看起来像文本并打印换行符,而不是\ n

奇怪的是,如果我在文本中的某处加上''单引号,它会按原样打印文本,但带有单引号:

data: |
 some = foo
 foo = some
' '

打印完全一样。

我试图进行研究,但找不到任何东西,而且我已经坚持了一段时间。

4 个答案:

答案 0 :(得分:2)

使用 Kubernetes 1.20.2,该问题已通过以下方式修复:

  • 使用以下方法去除尾随空格: sed -i -E 's/[[:space:]]+$//g' file.txt
  • 使用 sed -i 's/\t/ /g' file.txt 用空格替换制表符(警告:手动管理空格数!)
  • 删除文件末尾的空行

答案 1 :(得分:1)

删除 data: 部分末尾的空行为我解决了问题(我使用的是 yaml)

答案 2 :(得分:0)

从文件创建configMap时,这似乎类似于kubernetes/kubernetes issue 36222

就您而言,是从data块创建的。

最近的kubernetes/kubernetes issue 63503引用了所有印刷版。

一个comment mentions

  

我使用Tab标识在configMap中添加了新行。更改为Spaces而不是Tab后,我能够按预期看到configmap ...

答案 3 :(得分:0)

Github issue中所述,您需要删除每行末尾的所有空格,并确保您也没有任何特殊字符。

如果您以编程方式执行此操作,则单行字符串而不是多行字符串会更好。例如继续使用"" + "\n"而不是反引号。

正确的结果应该使用管道|

data: |
 some = foo
 foo = some