Разные конфиги у подов statefulSet

Файлы примеров.

Для того что бы подставить индивидуальный конфиг поду statefulSet-а, можно воспользоваться initContainer и скриптом. В скрипте, в зависимости от имени пода, подготовить необходимый файл конфигурации.

Простейший пример показан в файле 01-op-cm.yaml. В нём описаны два файла index.html, которые должны подставляться в файловую систему пода. В зависимости от имени пода, будет использоваться свой вариант файла.

В statefulSet используются два контейнера.

initContainer на основе образа busybox.
Основной контейнер приложения.
К обоим контейнерам подключается файловая системе типа hostPath. Задача initContainer-а поместить в эту фс необходимые конфигурационные файлы. Исходные файлы, находятся в configMap, подключённом к initContainer.

Для подстановки нужного файла в конкретный под, отвечает скрипт conf.sh. В котором, в зависимости от имени контейнера, в целевую директорию копируется определённый файл. Скрипт conf.sh запускается в initContainer statefulSet-а.

Пример использования vmagent.

В этом примере (файлы 03-prometheus-config.yaml, 04-vmagent.yaml и 05-ingress.yaml) всё то же самое. Но есть проблема с ingress.

Что бы все работало корректно, необходимо что бы vmagent в каждом поде запускался с отличным параметром -http.pathPrefix. Что бы vmagent выдавал ответ с нужны путём в URL.

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

Опять же, к сожалению, vmagent не умеет конфигурироваться через переменные среды окружения. Но это вопрос к программистам не следующим рекомендации по конфигурации микросервисов. А именно: Приложение двенадцати факторов хранит конфигурацию в переменных окружения.