Принимает ли Kubernetes формат JSON в качестве входного файла для создания карты конфигурации и секрета? - PullRequest
1 голос
/ 07 мая 2020

У меня есть существующий файл конфигурации в формате JSON, примерно как показано ниже

{
    "maxThreadCount": 10,
    "trackerConfigs": [{
            "url": "https://example1.com/",
            "username": "username",
            "password": "password",
            "defaultLimit": 1
        },
        {
            "url": "https://example2.com/",
            "username": "username",
            "password": "password",
            "defaultLimit": 1
        }
    ],
    "repoConfigs": [{
        "url": "https://github.com/",
        "username": "username",
        "password": "password",
        "type": "GITHUB"
    }],
    "streamConfigs": [{
        "url": "https://example.com/master.json",
        "type": "JSON"
    }]
}

Я понимаю, что мне разрешено передавать файл свойств пары ключ / значение с параметром --from-file для configmap и секретное создание.

Но как насчет файла в формате JSON? Принимает ли Kubernetes файл формата JSON в качестве входного файла для создания карты конфигурации и секрета?

$ kubectl create configmap demo-configmap --from-file=example.json

Если я запустил эту команду, будет сказано, что configmap / demo-configmap создан. Но как я могу сослаться на эти значения configmap в другом модуле?

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Карты конфигурации - это контейнер для пар ключ-значение. Итак, если вы создаете ConfigMap из файла, содержащего JSON, он будет сохранен с именем файла в качестве ключа и JSON в качестве значения.

Чтобы получить доступ к такой карте конфигурации из модуля, вы нужно будет смонтировать его в ваш Pod как том:

Как смонтировать карты конфигурации

2 голосов
/ 07 мая 2020

Когда вы создаете configmap / secret, используя --from-file, по умолчанию имя файла будет именем ключа, а содержимое файла будет значением.

Например, созданная вами карта конфигурации будет иметь вид

apiVersion: v1
data:
  test.json: |
    {
        "maxThreadCount": 10,
        "trackerConfigs": [{
                "url": "https://example1.com/",
                "username": "username",
                "password": "password",
                "defaultLimit": 1
            },
            {
                "url": "https://example2.com/",
                "username": "username",
                "password": "password",
                "defaultLimit": 1
            }
        ],
        "repoConfigs": [{
            "url": "https://github.com/",
            "username": "username",
            "password": "password",
            "type": "GITHUB"
        }],
        "streamConfigs": [{
            "url": "https://example.com/master.json",
            "type": "JSON"
        }]
    }
kind: ConfigMap
metadata:
  creationTimestamp: "2020-05-07T09:03:55Z"
  name: demo-configmap
  namespace: default
  resourceVersion: "5283"
  selfLink: /api/v1/namespaces/default/configmaps/demo-configmap
  uid: ce566b36-c141-426e-be30-eb843ab20db6

. Вы можете смонтировать карту конфигурации в свой модуль как том. где имя ключа будет именем файла, а значение будет содержимым файла. как показано ниже

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: demo-configmap
  restartPolicy: Never

При запуске модуля команда ls /etc/config/ выдает следующий результат:

test.json

...