Kubernetes VolumeMount папка и права доступа к файлам? - PullRequest
0 голосов
/ 29 марта 2019

Попытка смонтировать файлы конфигурации из hostPath в контейнер kubernetes. Это работает с использованием общих папок minikube и VirtualBox, но я не могу заставить это работать в Linux.

Я использую AWS EKS и следующую архитектуру https://aws.amazon.com/quickstart/architecture/amazon-eks/. Мне кажется, моя проблема в том, что файлы должны жить в каждом из экземпляров узла EKS.

Вот схема архитектуры: enter image description here

Ниже приведен файл развертывания.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: openhim-core-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: openhim-core
  template:
    metadata:
      labels:
        component: openhim-core
    spec:
      volumes:
        - name: core-config
          hostPath:
            path: /var/config/openhim-core
      containers:
        - name: openhim-core
          image: jembi/openhim-core:5.rc
          ports:
            - containerPort: 8080
            - containerPort: 5000
            - containerPort: 5001
          volumeMounts:
            - name: core-config
              mountPath: /usr/src/app/config
          env:
            - name: NODE_ENV
              value: development

1 Ответ

1 голос
/ 02 апреля 2019

После большой боли я обнаружил, что пытаюсь разместить конфигурацию на хосте Linux Bastion, где у меня есть доступ к kubectl, но на самом деле эта конфигурация должна быть в каждом экземпляре EC2 в каждой зоне доступности.

Решением для меня было использование initContainer.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: openhim-core-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: openhim-core
  template:
    metadata:
      labels:
        component: openhim-core
    spec:
      volumes:
        - name: core-config
          hostPath:
            path: /var/config/openhim-core
      containers:
        - name: openhim-core
          image: jembi/openhim-core:5
          ports:
            - containerPort: 8080
            - containerPort: 5000
            - containerPort: 5001
          volumeMounts:
            - name: core-config
              mountPath: /usr/src/app/config
          env:
            - name: NODE_ENV
              value: development
      initContainers:
        - name: install
          image: busybox
          command:
          - wget
          - "-O"
          - "/usr/src/app/config/development.json"
          - https://s3.eu-central-1.amazonaws.com/../development.json
          volumeMounts:
            - name: core-config
              mountPath: "/usr/src/app/config"      
      volumes:
        - name: core-config
          emptyDir: {}       
...