Лимиты и параметры развёртывания микросервисов из переносимых сервисов в модулях можно задавать с помощью ConfigMap. Это позволяет ограничивать выделяемые ресурсы, определять количество экземпляров микросервисов, которые разворачиваются в Kubernetes, а также настраивать их автомасштабирование.
Вы можете задать глобальные настройки для переносимых сервисов, настроенных во всех модулях системы, а также указать индивидуальные настройки для определённого сервиса.
ConfigMap используется:
- для тонкой настройки развёртывания микросервиса — можно задать значения параметров, недоступных при редактировании переносимого сервиса в модуле;
- для изменения настроек без редактирования модуля — полезно для платных модулей. Например, можно задать количество экземпляров микросервиса, поскольку параметр в ConfigMap приоритетнее, чем значение, установленное разработчиком при создании модуля.
Настройка ConfigMap состоит из трёх этапов:
Шаг 1. Включить использование ConfigMap
Чтобы для настройки переносимых сервисов применялся ConfigMap, нужно включить переменную окружения ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER
для сервиса babysitter. Для этого:
- Выполните команду:
kubectl edit deployments babysitter
- В открывшемся редакторе перейдите к блоку
spec.template.spec.containers.env
и измените значение переменной наtrue
:
- name: ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER
value: 'true'
- Сохраните изменения.
Шаг 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
Чтобы изменить настройки:
- Откройте файл 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
конец примера
- После внесения изменений примените их с помощью команды с указанием namespace, в котором размещаются переносимые сервисы:
kubectl apply -f cfg.yaml -n elma365-applets
Параметры применятся автоматически, так как сервис babysitter отслеживает изменения в ConfigMap. Все микросервисы, для которых изменились настройки, перезапустятся.