Как загрузить конфигурационную карту из файла свойств с помощью настройки?

Я попытался использовать настройку для загрузки файла свойств в виде карты конфигурации.

Для этого я создал набор образцов, как в ссылке на github .

С базовыми файлами:

      #kustomize build base
apiVersion: v1
data:
  config: |-
    dbport=1234
    dcname=sfsdf
    dbssl=false
    locktime=300
    domainuser=
kind: ConfigMap
metadata:
  labels:
    owner: sara
  name: database-configmap
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
    owner: sara
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      owner: sara
  template:
    metadata:
      labels:
        app: nginx
        owner: sara
    spec:
      containers:
      - image: nginx
        name: nginx

С внешним файлом:

      #kustomize build file
apiVersion: v1
data:
  config: "dbport=156767\r\ndcname=dfsd\r\ndbssl=false\r\nlocktime=300\r\ndomainuser=somedts"
kind: ConfigMap
metadata:
  labels:
    env: dev
    owner: sara
  name: dev-database-configmap
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
    env: dev
    owner: sara
  name: dev-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      env: dev
      owner: sara
  template:
    metadata:
      labels:
        app: nginx
        env: dev
        owner: sara
    spec:
      containers:
      - image: nginx
        name: nginx

Если вы наблюдаете за конфигурационной картой|удаляется, а также заменяется\r\nкак одна строка. Как исправить этот расклад?

1 ответ

Размещая это как вики-сообщество, не стесняйтесь редактировать и расширять.


Как упомянул @mdaniel в комментарии :

Что ж, если не считать символов \r, эти две формы идентичны; : | скалярное цитирование предназначено только для человеческого потребления - к тому времени, когда оно попадает в кластер, оно имеет форму config: "whatever\nwhatever-else\n", как yaml2json покажет для обеих форм, или, конечно, как это на самом деле материализуется в Pod

Вы можете проверить это, получив сведения о карте конфигурации из кластера Kubernetes вjsonи посмотреть, чтобы они хранились одинаково (за исключением доп.\rо чем говорилось выше):

      $ kubectl get cm database-configmap -o json
{
    "apiVersion": "v1",
    "data": {
        "config": "dbport=1234\ndcname=sfsdf\ndbssl=false\nlocktime=300\ndomainuser="
    },
    "kind": "ConfigMap",
    ...

и

      $ kubectl get cm dev-database-configmap -o json
{
    "apiVersion": "v1",
    "data": {
        "config": "dbport=156767\r\ndcname=dfsd\r\ndbssl=false\r\nlocktime=300\r\ndomainuser=somedts"
    },
    "kind": "ConfigMap",
    ...

На StackOverflow есть ответ, который кратко показывает разницу между \n , \r и \r\n .

Другие вопросы по тегам