#kubernetes #yaml #kubectl #multiline
Вопрос:
Я бегу kubectl apply
за этим файлом:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
namespace: test
data:
folded: >-
{
"field1": 1,
"test2": "test"
}
literal: |-
{
"field1": 1,
"test2": "test"
}
single-quoted:
'{
"field1": 1,
"test2": "test"
}'
И я получаю этот результат после выполнения kubectl describe
:
Data
====
folded:
----
{
"field1": 1,
"test2": "test"
}
literal:
----
{
"field1": 1,
"test2": "test"
}
single-quoted:
----
{ "field1": 1, "test2": "test" }
Согласно документации , если я все сделал правильно, я ожидал folded
, что все будет так же, как single-quoted
, то есть в одной строке, но этого не происходит. Я делаю что-то не так?
Ответ №1:
На самом деле это сделано специально и из-за дополнительных пробелов в json:
Если вы вставите дополнительные пробелы в начале не первых строк в сложенном виде, они будут сохранены с дополнительной новой строкой. (Этого не происходит со стилями потока.) Раздел 6.5 спецификации YAML 1.2.2:
Кроме того, сгибание не применяется к разрывам строк, окружающим текстовые строки, содержащие начальные пробелы. Обратите внимание, что такая линия с большим отступом может состоять только из такого ведущего пробела.
Это будет работать так, как я и предполагал:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
namespace: test
data:
folded: >-
{
"field1": 1,
"test2": "test"
}