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

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

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

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

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

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

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

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

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

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

  1. Создайте резервную копию файла values-elma365.yaml, заполненного при установке ELMA365. Это требуется перед редактированием, так как некорректная настройка параметров может привести к сбоям в работе приложения ELMA365.
  2. В конфигурационном файле values-elma365.yaml включите параметры:

global:
...
# Включение переносимых сервисов
    managedServices:
        enabled: true
...
# Использование ConfigMap
        watchableConfigMap:
          enabled: true

  1. Обновите приложение ELMA365 с помощью команды:

helm upgrade elma365 ./elma365 -f values-elma365.yaml --timeout=30m

После этого автоматически создастся файл, в котором хранятся параметры ConfigMap. Он добавится в namespace, где размещаются переносимые сервисы, по умолчанию — elma365-applets. В файле преднастроен ConfigMap с именем elma365-babysitter-config. Для корректной работы рекомендуем не изменять заданное имя.

Теперь вы можете задать параметры в ConfigMap.

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

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

Где elma365-appletsnamespace для размещения переносимых сервисов.

 

Шаг 2. Задать параметры в 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. Выбор узлов для размещения подов (nodeSelector) — настройте размещение подов микросервисов на определённых узлах кластера с помощью специальных меток.

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

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

Пример

nodeSelector:
  role: elma365
  disk: ssd

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

  1. Разрешения для размещения подов (tolerations) — установите для подов микросервисов разрешения (tolerations), чтобы они могли размещаться на узлах с соответствующими ограничениями (taints).

Подробнее об инструментах taints и tolerations читайте в официальной документации Kubernetes.

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

Пример

tolerations:
  - effect: NoSchedule
    key: dedicated
    operator: Equal
    value: monitoring

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

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

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

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