Лимиты и параметры развёртывания микросервисов из переносимых сервисов в модулях можно задавать с помощью ConfigMap. Это позволяет ограничить выделяемые ресурсы, определить количество экземпляров микросервисов, которые разворачиваются в Kubernetes, и включить их автомасштабирование. Кроме того, в ConfigMap можно настроить распределение подов микросервисов по узлам кластера.
Вы можете задать глобальные настройки для переносимых сервисов, созданных во всех модулях системы, а также указать индивидуальные настройки для определённого сервиса.
ConfigMap используется:
- для тонкой настройки развёртывания микросервиса — можно задать значения параметров, недоступных при редактировании переносимого сервиса в модуле;
- для изменения настроек без редактирования модуля — полезно для платных модулей. Например, можно задать количество экземпляров микросервиса, поскольку параметр в ConfigMap приоритетнее, чем значение, установленное разработчиком при создании модуля.
Настройка ConfigMap состоит из двух этапов:
Шаг 1. Включить использование ConfigMap
Чтобы для настройки переносимых сервисов применялся ConfigMap, нужно включить переменную окружения ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER
для сервиса babysitter. Для этого вносятся изменения в конфигурационный файл values-elma365.yaml
:
- Создайте резервную копию файла
values-elma365.yaml
, заполненного при установке ELMA365. Это требуется перед редактированием, так как некорректная настройка параметров может привести к сбоям в работе приложения ELMA365. - В конфигурационном файле
values-elma365.yaml
включите параметры:
global:
...
# Включение переносимых сервисов
managedServices:
enabled: true
...
# Использование ConfigMap
watchableConfigMap:
enabled: true
- Обновите приложение 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-applets
— namespace
для размещения переносимых сервисов.
Шаг 2. Задать параметры в ConfigMap
- Откройте файл ConfigMap для редактирования, используя команду:
kubectl edit configmap elma365-babysitter-config -n elma365-applets
Где:
elma365-babysitter-config
— название ConfigMap в файлеcfg.yaml
;elma365-applets
—namespace
, в котором размещаются переносимые сервисы.
- В открывшемся файле задайте:
- глобальные параметры — применяются по умолчанию к переносимым сервисам во всех модулях. Задаются в блоке
global
; - параметры для определённого сервиса — для их настройки добавьте блок с именем сервиса, сформированным по шаблону:
{company}.ext_{id}.{unique_name}
, где:
company
— код компании ELMA365. Можно получить из её URL‑адреса;id
— идентификатор модуля, в котором настроен переносимый сервис. Можно скопировать из URL‑адреса модуля в ELMA365;unique_name
— уникальное имя переносимого сервиса из настроек модуля.
apiVersion: v1 |
Доступные параметры:
- Ресурсы (
resources
):
requests
— ресурсы памяти и CPU, которые нужно выделить для микросервиса;limits
— максимальные значения выделяемых ресурсов.
Подробнее о возможных значениях этих параметров читайте в официальной документации Kubernetes.
начало примера
Пример
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2048Mi"
cpu: "1000m"
конец примера
- Количество экземпляров (
replicaCount
) — сколько подов запустить для микросервиса. Доступные значения: 0–32к.
начало примера
Пример
replicaCount: 4
конец примера
- Автомасштабирование (
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
конец примера
- Выбор узлов для размещения подов (
nodeSelector
) — настройте размещение подов микросервисов на определённых узлах кластера с помощью специальных меток.
Подробнее об использовании параметра читайте в официальной документации Kubernetes.
начало примера
Пример
nodeSelector:
role: elma365
disk: ssd
конец примера
- Разрешения для размещения подов (
tolerations
) — установите для подов микросервисов разрешения (tolerations), чтобы они могли размещаться на узлах с соответствующими ограничениями (taints).
Подробнее об инструментах taints и tolerations читайте в официальной документации Kubernetes.
начало примера
Пример
tolerations:
- effect: NoSchedule
key: dedicated
operator: Equal
value: monitoring
конец примера
- После внесения изменений примените их с помощью команды с указанием
namespace
, в котором размещаются переносимые сервисы:
kubectl apply -f cfg.yaml -n elma365-applets
Параметры применятся автоматически, так как сервис babysitter отслеживает изменения в ConfigMap. Все микросервисы, для которых изменились настройки, перезапустятся.