Подключение профиля SOWA#
Конфигурационный файл профиля для SOWA создается в качестве объекта kind: ConfigMap и монтируется к поду SOWA.
Дополнительные файлы ресурсов, что могут потребоваться для работы профиля, так же создаются в виде объектов kind: ConfigMap.
Монтирование файла профиля и ресурсов#
Пользователю необходимо самостоятельно создать объекты kind: ConfigMap с yaml файлом профиля SOWA.
Файл профиля должен быть в отдельной ConfigMap.
Название yaml-файла внутри ConfigMap должно совпадать с названием ConfigMap. Например:
kind: ConfigMap apiVersion: v1 metadata: name: sowa-hw-profile data: sowa-hw-profile.yaml:
Далее укажите название созданной ConfigMap в values.yaml Helm-чарта SOWA:
configmaps:
profile_config_cm: "sowa-hw-profile"
Конфиг файл профиля будет примонтирован к поду SOWA, по пути /sowa/profiles/, имя файла внутри контейнера всегда будет compiled_config_profile.yaml.
Дополнительные файлы ресурсов#
Аналогично профилю, пользователь создает ConfigMap, с любым количеством файлов внутри и указывает название в values.yaml Helm-чарта SOWA.
Внутри пода SOWA, все ресурсы будут примонтированы в стандартное расположение /sowa/profile_storage/custom/<profilename>/.
Важно! Каждая такая ConfigMap будет примонтирована в поддиректории. Это нужно учитывать при использовании ресурсов в конфиге профиля.
Блок переменных для пользовательских ресурсов:
configmaps:
other_resources_cm:
# Имя объекта ConfigMap
- name_cp: ""
# (Опционально) Имя поддиректории, в которую будет смонтирован ConfigMap, иначе совпадает с именем ConfigMap
mount_dir_alias: ""
# (Опционально) Файл из конфигмапы, если необходимо примонтировать не все содержимое а только один файл
mount_sub_path: ""
Переменная configmaps.other_resources_cm принимает список, поэтому объектов ConfigMap может быть несколько, плюс каждая ConfigMap может содержать несколько файлов внутри себя.
Образец подключения дополнительных ресурсов#
Пользовательский ConfigMap (создается пользователем самостоятельно):
kind: ConfigMap
apiVersion: v1
metadata:
name: sowa-other-resources
data:
resource_file1.yaml: |
param1: value1
param2: value2
resource_file2.txt: |
Simple text..
Заполняем переменные в values.yaml SOWA:
configmaps:
other_resources_cm:
# Так смонтируются все файлы в папку "/sowa/profile_storage/custom/<profilename>/sowa-other-resources"
- name_cp: "sowa-other-resources"
# Так смонтируются все файлы в папку "/sowa/profile_storage/custom/<profilename>/main_res"
- name_cp: "sowa-other-resources"
mount_dir_alias: "main_res"
# Так смонтируется один файл в папку "/sowa/profile_storage/custom/<profilename>/main_res"
- name_cp: "sowa-other-resources"
mount_dir_alias: "main_res"
mount_sub_path: "resource_file1.yaml"
После чего, в конфиг файле профиля SOWA, можно ссылаться на данные ресурсы:
service_rabbitmq_proxy:
- id: 1
conf: main_res/resource_file1.yaml
Файлы с чувствительными данными, они же «секреты», подключаются иначе, см раздел Работа с секретами.
Альтернативный способ подключения профиля и ресурсов#
Существует более простой способ подключения всех необходимых ресурсов, подходящий для быстрого запуска в целях тестирования и отладки.
Внутри директории Helm chart SOWA, необходимо создать папку input_profile, в ней разместить yaml-файл с профилем (compiled_config_profile.yaml) и zip архив с ресурсами (profile_resources.zip). Названия должны быть точно такие.
Во время деплоя будет создан и примонтирован ConfigMap с профилем, а все файлы ресурсов распакуются в корень /sowa/profile_storage/custom/<profilename>/, без создания подпапок.
Этот способ не конфликтует с монтированием доп ресурсов через configmaps.other_resources_cm.
При деплое, архив с ресурсами передается через объект kind: Secret.
Образец директории Helm-чарта:
helm
└── application
└── sowa
├── Chart.yaml
├── values.yaml
├── input_profile
│ ├── compiled_config_profile.yaml
│ └── profile_resources.zip
└── templates
Образец архива с ресурсами профиля:
profile_resources.zip
├── file.txt
├── credentials.json
└── certs_dir
└── cert.pem
Описание профиля в values.yaml#
Помимо монтирования непосредственно файла с профилем, в values.yaml SOWA необходимо заполнить несколько переменных, связанных с й конфигурацией профиля.
Заполняем на основании профиля SOWA, например если в профиле отсутствуют плагины то переменную
list_plugin_servicesоставляем пустой.
profile_name
Имя профиля (аналогично параметруprofileиз файла конфигурации профиля).list_sys_services
Описываем сервисы типаservice_static,service_main_proxyиservice_http_proxy, если они есть в профиле. см типы сервисов
На основании этого будут созданыkind: Serviceиkind: Ingress. Образец заполнения:list_sys_services: - full_name: service_hello_world id_name: hw-svc listen_ports: - 9444list_plugin_services
Описываем плагины из профиля. см плагины
Плагины так же являются сервисами SOWA, но плагины имеют отдельные исполняемые файлы, поэтому запускаются в качестве SideCar. Формат описания аналогичный:list_plugin_services: - full_name: service_rabbitmq_proxy_in1 id_name: in1 listen_ports: # если не нужно прослушивать порты, оставляем поле пустымВ данном случае, помимо
kind: Serviceиkind: Ingressбудет создан SideCar для основного контейнера.