ELMA365 On-Premises / Настройка параметров переносимых сервисов через ConfigMap

Настройка параметров переносимых сервисов через ConfigMap

Лимиты и параметры развёртывания микросервисов из переносимых сервисов в модулях можно задавать с помощью ConfigMap. Это позволяет ограничивать выделяемые ресурсы, определять количество экземпляров микросервисов, которые разворачиваются в Kubernetes, а также настраивать их автомасштабирование.

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

ConfigMap используется:

  • для тонкой настройки развёртывания микросервиса — можно задать значения параметров, недоступных при редактировании переносимого сервиса в модуле;
  • для изменения настроек без редактирования модуля — полезно для платных модулей. Например, можно задать количество экземпляров микросервиса, поскольку параметр в ConfigMap приоритетнее, чем значение, установленное разработчиком при создании модуля.

Настройка ConfigMap состоит из трёх этапов:

  1. Включить использование ConfigMap.
  2. Создать файл ConfigMap.
  3. Задать параметры в ConfigMap.

Шаг 1. Включить использование ConfigMap

Чтобы для настройки переносимых сервисов применялся ConfigMap, нужно включить переменную окружения ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER для сервиса babysitter. Для этого:

  1. Выполните команду:

kubectl edit deployments babysitter

  1. В открывшемся редакторе перейдите к блоку spec.template.spec.containers.env и измените значение переменной на true:

- name: ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER
  value: 'true'

  1. Сохраните изменения.

Шаг 2. Создать файл ConfigMap

Параметры ConfigMap устанавливаются в файле cfg.yaml. Его нужно создать в namespace, в котором размещаются переносимые сервисы, по умолчанию — elma365-applets. Для этого используйте команду:

kubectl apply -f cfg.yaml -n elma365-applets

Добавится файл, в котором настроен ConfigMap с именем elma365-babysitter-config. Для корректной работы рекомендуем не изменять заданное имя.

Теперь вы можете редактировать ConfigMap. Чтобы вернуться к параметрам по умолчанию и начать настройку заново, удалите файл cfg.yaml и повторно примените команду для его создания.

Шаг 3. Задать параметры в ConfigMap

Чтобы изменить настройки:

  1. Откройте файл ConfigMap для редактирования, используя команду:

kubectl edit configmap elma365-babysitter-config -n elma365-applets

Где:

  • elma365-babysitter-config — название ConfigMap в файле cfg.yaml;
  • elma365-applets — namespace, в котором размещаются переносимые сервисы.
  1. В открывшемся файле задайте:
    • глобальные параметры — применяются по умолчанию к переносимым сервисам во всех модулях. Задаются в блоке global;
    • параметры для определённого сервиса — для их настройки добавьте блок с именем сервиса, сформированным по шаблону: {company}.ext_{id}.{unique_name}, где:
      • company — код компании ELMA365. Можно получить из её URL‑адреса;
      • id — идентификатор модуля, в котором настроен переносимый сервис. Можно скопировать из URL‑адреса модуля в ELMA365;
      • unique_name — уникальное имя переносимого сервиса из настроек модуля.

Пример содержания ConfigMap

Доступные параметры:

  1. Ресурсы (resources):
    • requests — ресурсы памяти и CPU, которые нужно выделить для микросервиса;
    • limits — максимальные значения выделяемых ресурсов.

Подробнее о возможных значениях этих параметров читайте в официальной документации Kubernetes.

начало примера

Пример

resources:
  requests:
    memory: "512Mi"
    cpu: "500m"
  limits:
    memory: "2048Mi"
    cpu: "1000m"

конец примера

 

  1. Количество экземпляров (replicaCount) — сколько подов запустить для микросервиса. Доступные значения: 0–32к.

начало примера

Пример

replicaCount: 4

конец примера

  1. Автомасштабирование (autoscaling):
    • enabled — включает автомасштабирование;
    • minReplicas — минимальное количество экземпляров микросервиса. Доступные значения: 0–32к;
    • maxReplicas — максимальное количество экземпляров. Доступные значения: 0–32к;
    • targetMemoryUtilizationPercentage — желаемое использование памяти в процентах. Доступные значения: 0–100;
    • targetCPUUtilizationPercentage — желаемое использование ресурсов CPU в процентах. Доступные значения: 0–100.

начало примера

Пример

autoscaling:
  enabled: true
  minReplicas: 1
  maxReplicas: 9
  targetMemoryUtilizationPercentage: 80
  targetCPUUtilizationPercentage: 80

конец примера

  1. После внесения изменений примените их с помощью команды с указанием namespace, в котором размещаются переносимые сервисы:

kubectl apply -f cfg.yaml -n elma365-applets

Параметры применятся автоматически, так как сервис babysitter отслеживает изменения в ConfigMap. Все микросервисы, для которых изменились настройки, перезапустятся.