Сделать большие статические файлы данных доступными для модулей kubernetes

У меня есть несколько довольно больших файлов данных UTF-8, которые нужно загружать в память при запуске - от нескольких сотен КБ до примерно 50 МБ.

Проект (включая диаграмму Хелма) имеет открытый исходный код, но некоторые из этих файлов - нет, в противном случае я, вероятно, просто включил бы их в изображения. Сначала я думал о создании конфигурационных карт, но, насколько я понимаю, 50 МБ - это больше, чем было предназначено для конфигурационных карт, поэтому в некоторых случаях это может стать проблемой. Я думаю, что секреты также были бы излишними - они не секреты, их просто не следует размещать в открытом Интернете.

По соображениям производительности я предпочел бы иметь копию в памяти в каждом модуле, а не использовать общий кэш, но я могу ошибаться в этом. По крайней мере, это, вероятно, добавит больше сложности, чем оно того стоит.

Конфигурационные карты - путь?

1 ответ

С моей точки зрения, лучшим решением было бы использование контейнера init для загрузки файлов из защищенного хранилища (как это было упомянуто Andrew Savinykh в комментариях) в объем модуля, а затем его использование в главном контейнере модуля.

Пожалуйста, смотрите пример:

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  # These containers are run during pod initialization
  initContainers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://kubernetes.io
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}
Другие вопросы по тегам