Есть много способов добиться результата, некоторые из них лучше, чем другие, поэтому я просто упомяну лучшие.
Теоретически вы можете использовать configmaps, но вы также упомянули "... есть много устаревшего кода" , и поэтому вам необходимо знать, что configmaps имеет ограничение в 1 МБ (чтобы быть более конкретным c Я должен упомянуть, что это ограничение применяется etcd, а не самим configmap ). Теперь, предполагая, что это не проблема, вам нужно будет хранить каждый файл как один ключ в configmap, а затем монтировать каждый файл отдельно в свой каталог. Конечно, вы можете автоматизировать этот процесс, так как это не идеальное решение при наличии большого количества файлов.
Теперь отвечая на ваш вопрос:
Можете ли вы легко создать том, заполнить его с файловой структурой, а затем смонтировать его в модуле заданий?
Вероятно, самый простой способ достичь указанного результата - это смонтировать том emptyDir и заполнить его с помощью initContainers. Контейнер инициализации может извлечь папку конфигурации (либо из репозитория git, либо из какого-либо другого репозитория файлов) и сохранить ее в томе emptyDit, который позже будет смонтирован в фактический контейнер. Вот пример того, как это будет выглядеть.
То, что вы предлагаете, также является допустимым решением, но оно требует использования постоянных томов и не всегда может быть необходимо. Но если вы решите использовать его, все, что вам нужно сделать, это использовать то же имя тома и использовать сохранить для поля persistentVolumeReclaimPolicy.
Вам также необходимо запомнить этот код контейнера init (hook) должен быть идемпотентным. В частности, код, записывающий в EmptyDirs (постоянный том), должен быть подготовлен к тому, что выходные файлы уже существуют.