Как установить значение mountPath в переменной env в kubernetes? - PullRequest
3 голосов
/ 13 апреля 2020

Я использовал configMap для хранения значения пути монтирования, но когда я вызываю в моем модуле, он не работает, кажется, что свойство mountPath не может быть присвоено переменной env.

вот мой код:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        env:
        - name: MOUNT_PATH
          valueFrom:
           configMapKeyRef:
            name: my-configMap
            key: MOUNT_PATH
        volumeMounts:
        - name: nginx-volume
          mountPath: $(MOUNT_PATH)
      volumes:
      - name: nginx-volume
        persistentVolumeClaim:
         claimName: my-pvc

     ---


apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configMap
  namespace: default
data:
  MOUNT_PATH: "/opt/somepath"

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Я развернул его в своей лаборатории, и невозможно динамически определить какой-либо параметр в манифесте при развертывании чего-либо с помощью kubectl.

Когда вы определите переменную env, она будет доступна только после развертывания модуля и Вы ссылаетесь на это до того, как это произойдет. Поэтому, когда вы применяете созданный манифест, $(MOUNT_PATH) нигде не существует.

Вы также можете достичь этого программно, используя внешний инструмент в качестве руля или настраивая, как прокомментировано @ Burak Сердар .

Когда вы делаете это, в контейнер попадает информация о том, что он должен монтировать том буквально $(MOUNT_PATH).

# df -h | grep MOUNT
tmpfs           3.3G  454M  2.9G  14% /$(MOUNT_PATH)

Используя Helm, вы можете определить свой mountPath для ваших значений. yaml и используйте эту переменную в своем манифесте.

Несколько полезных ссылок, касающихся helm:

Краткое руководство по Helm Введение в Helm, менеджер пакетов для Kubernetes Использование Helm и Kustomize создать больше декларативных рабочих нагрузок Kubernetes

0 голосов
/ 13 апреля 2020

Я предлагаю проверить список ограничений в этом do c для использования ConfigMaps с модулями: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#restrictions

На ум приходит пара потенциальных проблем.

Сначала необходимо создать ConfigMap, чтобы он был доступен для модуля Pod, поэтому убедитесь, что это происходит.

Кроме того, я вижу, что вы создаете ConfigMap в пространстве имен по умолчанию, это где вы запускаете Pod? Они должны находиться в одном пространстве имен.

...