web-dev-qa-db-ja.com

kubernetes configmapが改行ではなく\ nを出力する

クラスターに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
' '

まったく同じように印刷します。

調べてみましたが何も見つからず、しばらく悩んでしまいました。

8
hashmim

これは、ファイルからconfigMapを作成するときの kubernetes/kubernetes issue 36222 に似ているようです。

あなたの場合、それはdataブロックから作成されたときに起こります。

最近の kubernetes/kubernetes issue 635 は、印刷されたすべての問題を参照しています。

A コメントの言及

識別のためにタブを使用して、configMapに新しい行を追加しました。タブではなくスペースに変更した後、期待どおりにconfigmapを表示できました...

2
VonC

Githubの問題 で述べたように、各行の末尾からすべての空白を削除する必要があり、特殊文字も含まれていないことを確認してください。

これをプログラムで行っている場合は、複数行ではなく単一行の文字列の方がうまくいきます。例えばgoでは、バッククォートではなく"" + "\n"を使用します。

正しい結果にはパイプを使用する必要があります|

data: |
 some = foo
 foo = some
1
VladFr