Kubernetes ConfigMap для записи подробностей узла в файл - PullRequest
0 голосов
/ 01 февраля 2020

Как я могу использовать ConfigMap для записи информации узла кластера в файл JSON?

Ниже приводится информация об узле:

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="Hostname")].address}'

Как я могу использовать Configmap для записи выше вывод в текстовый файл?

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вы можете сохранить вывод команды в любом файле. Затем используйте файл или данные внутри файла для создания configmap. После создания файла конфигурации вы можете смонтировать его в виде файла в вашем развертывании / модуле.

Например:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: appname
  name: appname
  namespace: development
spec:
  selector:
    matchLabels:
      app: appname
      tier: sometier
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: appname
        tier: sometier
    spec:
      containers:
        - env:
            - name: NODE_ENV
              value: development
            - name: PORT
              value: "3000"
            - name: SOME_VAR
              value: xxx
          image: someimage
          imagePullPolicy: Always
          name: appname
          volumeMounts:
            - name: your-volume-name
              mountPath: "your/path/to/store/the/file"
              readOnly: true
      volumes:
        - name: your-volume-name
          configMap:
            name: your-configmap-name
            items:
              - key: your-filename-inside-pod
                path: your-filename-inside-pod

Я добавил следующую конфигурацию в развертывание:

      volumeMounts:
        - name: your-volume-name
          mountPath: "your/path/to/store/the/file"
          readOnly: true
  volumes:
    - name: your-volume-name
      configMap:
        name: your-configmap-name
        items:
          - key: your-filename-inside-pod
            path: your-filename-inside-pod

Чтобы создать ConfigMap из файла:

kubectl create configmap your-configmap-name --from-file=your-file-path

Или просто создайте ConfigMap с выводом вашей команды:

apiVersion: v1
kind: ConfigMap
metadata:
  name: your-configmap-name
  namespace: your-namespace
data:
  your-filename-inside-pod: |
    output of command
0 голосов
/ 12 февраля 2020

Сначала сохраните вывод команды kubect get nodes в файл JSON:

$ exampleCommand > node-info.json

Затем создайте правильный ConfigMap .

Вот пример:

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-config
data:
  node-info.json: |
    {
      "array": [
        1,
        2
      ],
      "boolean": true,
      "number": 123,
      "object": {
        "a": "egg",
        "b": "egg1"
      },
      "string": "Welcome"
    }

Затем не забудьте добавить следующие строки ниже раздела спецификации в файле конфигурации модуля:

env:
  - name: NODE_CONFIG_JSON
    valueFrom:
      configMapKeyRef:
        name: example-config
        key: node-info.json

Вы также можете использовать PodPresent .

PodPreset - это объект, позволяющий вводить информационное яйцо. переменные среды в стручки во время создания.

Посмотрите на приведенный ниже пример:

apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
  name: example
spec:
  selector:
    matchLabels:
      app: your-pod
  env:
    - name: DB_PORT
      value: "6379"
  envFrom:
    - configMapRef:
        name: etcd-env-config
        key: node-info.json

, но помните, что вы также должны добавить:

env:
  - name: NODE_CONFIG_JSON
    valueFrom:
      configMapKeyRef:
        name: example-config
        key: node-info.json

в определение вашего модуля, соответствующее вашим PodPresent и ConfigMap конфигурация.

Более подробную информацию вы можете найти здесь: podpresent , pod-present-configuration .

...