web-dev-qa-db-fra.com

Quel est le meilleur moyen de partager / monter un fichier dans un pod?

J'envisageais d'utiliser des secrets pour monter un seul fichier, mais il semble que vous ne pouvez monter qu'un répertoire qui écrasera tout le contenu. Comment puis-je partager un seul fichier de configuration sans monter un répertoire?

61
Smana

Par exemple, vous avez un configmap qui contient 2 fichiers de configuration:

kubectl create configmap config --from-file <file1> --from-file <file2>

Vous pouvez utiliser subPath comme ceci pour monter un fichier unique dans un répertoire existant:

---
        volumeMounts:
        - name: "config"
          mountPath: "/<existing folder>/<file1>"
          subPath: "<file1>"
        - name: "config"
          mountPath: "/<existing folder>/<file2>"
          subPath: "<file2>"
      restartPolicy: Always
      volumes:
        - name: "config"
          configMap:
            name: "config"
---

Exemple complet ici

103
Tommy Nguyen

Je commencerais par cet exemple de travail de ici . Assurez-vous que vous utilisez au moins Kubernetes 1.3.

Créez simplement un ConfigMap comme ceci:

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-pd-plus-cfgmap
data:
  file-from-cfgmap: file data

Et puis créez un pod comme ceci:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd-plus-cfgmap
spec:
  containers:
  - image: ubuntu
    name: bash
    stdin: true
    stdinOnce: true
    tty: true
    volumeMounts:
    - mountPath: /mnt
      name: pd
    - mountPath: /mnt/file-from-cfgmap
      name: cfgmap
      subPath: file-from-cfgmap
  volumes:
  - name: pd
    gcePersistentDisk:
      pdName: testdisk
  - name: cfgmap
    configMap:
      name: test-pd-plus-cfgmap
34
Joel B

Il n'y a actuellement (v1.0, v1.1) aucun moyen de monter en volume un seul fichier de configuration. La structure Secret est naturellement capable de représenter plusieurs secrets, ce qui signifie qu'il doit s'agir d'un répertoire.

Lorsque nous obtenons des objets de configuration, les fichiers uniques doivent être pris en charge.

En attendant, vous pouvez peut-être monter un répertoire et y créer un lien symbolique, à partir de votre image.

6
Tim Hockin

Utilisez secrets . Ceci est considéré comme une meilleure pratique. Si vous ne savez pas comment les utiliser, regardez ce que j'ai fait ici .

2
Michael Hausenblas