Права доступа к папке и файлам Kubernetes volumeMount?

#kubernetes #amazon-eks

#kubernetes #amazon-eks

Вопрос:

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

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

Вот схема архитектуры: введите описание изображения здесь

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

 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. не могли бы вы, пожалуйста, добавить вывод kubectl logs pod_name и результат ls -l /var/config/openhim-core ?

2. Заранее спасибо. Я добавил выходные данные. Я запустил chmod 777 -R / var / config/

3. Думаю, моя проблема связана с несколькими зонами доступности AWS EKS.

Ответ №1:

После долгих усилий я обнаружил, что пытаюсь разместить конфигурацию на хосте 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: {}