Лимиты и параметры развёртывания микросервисов из переносимых сервисов в модулях можно задавать с помощью ConfigMap — ресурса Kubernetes для работы с конфигурационными данными. Это позволяет:
- ограничить выделяемые ресурсы;
- определить количество экземпляров микросервисов, которые разворачиваются в Kubernetes;
- включить их автомасштабирование;
- настроить распределение подов микросервисов по узлам кластера;
- передать секреты Kubernetes в переносимые сервисы.
Вы можете задать глобальные настройки для переносимых сервисов, созданных во всех модулях системы, а также указать индивидуальные настройки для определённого сервиса.
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, в котором размещаются переносимые сервисы.
- В открывшемся файле задайте:
company— код компании ELMA365. Можно получить из её URL‑адреса;id— идентификатор модуля, в котором настроен переносимый сервис. Можно скопировать из URL‑адреса модуля в ELMA365;unique_name— уникальное имя переносимого сервиса из настроек модуля.
Обратите внимание, значения параметров из блока определённого переносимого сервиса имеют приоритет над значениями глобальных параметров. Если параметр на уровне переносимого сервиса не задан, используется значение из блока global.
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
конец примера
- Получение секретов Kubernetes (secretMappings) — если в переносимый сервис требуется передать чувствительную информацию, например строку подключения к базе данных, сначала сохраните такую информацию в секрете Kubernetes, а затем в параметре secretMappings задайте правило его получения. Подробнее читайте в статье «Передать секреты Kubernetes в переносимые сервисы через ConfigMap».
- После внесения изменений примените их с помощью команды с указанием
namespace, в котором размещаются переносимые сервисы:
kubectl apply -f cfg.yaml -n elma365-applets
Параметры применятся автоматически, так как сервис babysitter отслеживает изменения в ConfigMap. Все микросервисы, для которых изменились настройки, перезапустятся.