Подключение профиля 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: 
          - 9444
    
  • list_plugin_services
    Описываем плагины из профиля. см плагины
    Плагины так же являются сервисами SOWA, но плагины имеют отдельные исполняемые файлы, поэтому запускаются в качестве SideCar. Формат описания аналогичный:

    list_plugin_services: 
      - full_name: service_rabbitmq_proxy_in1
        id_name: in1
        listen_ports: # если не нужно прослушивать порты, оставляем поле пустым
    

    В данном случае, помимо kind: Service и kind: Ingress будет создан SideCar для основного контейнера.