Установка#
Конфигурирование при автоматизированной установке#
Для автоматизированной установки компонента STLR с использованием инструмента Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT), далее — CDJE,
предоставляются конфигурационные файлы в формате .conf.
Если определенные интеграции не требуются, соответствующие параметры могут быть опущены.
Набор доступных конфигураций может варьироваться в зависимости от конкретной поставки.
В случае установки версии, не предполагающей использование инструмента CDJE,
конфигурационные параметры содержатся в файлах values.yaml, которые располагаются в каталогах helm charts по пути ./helm/application/STRL-*/values.yaml.
Общий список файлов конфигураций (если предполагается установка через CDJE) выглядит следующим образом:
Файл |
Описание |
|---|---|
stlr.all.conf |
Общие настройки сервисов STLR |
stlr.backend.conf |
Настройки для STLR-backend |
stlr.frontend.conf |
Настройки для STLR-frontend |
stlr.fluent-bit-sidecar.all.conf |
Настройки, которые используются для интеграции с компонентом LOGA |
stlr.istio.all.conf |
Общие настройки для Istio. Включают в себя настройки для интеграции с компонентами COTE |
stlr.ott-sidecar.all.conf |
Настройки, которые используются для интеграции с компонентом OTTS |
stlr.vault.all.conf |
Настройки для системы управления секретами |
Примечание:
*
LOGA — компонент Журналирование (LOGA) продукта Platform V Monitor (OPM), далее — LOGA;
COTE — компонент Единый коллектор телеметрии (COTE) продукта Platform V Monitor (OPM) далее — COTE;
AUTH — компонент IAM Proxy продукта (AUTH) продукта Platform V IAM SE (IAM) далее — AUTH;
OTTS — компонент One-Time Password (OTP) / OTT (OTTS) продукта Platform V Backend (#BD) далее — OTTS.
Общие настройки для компонента STLR#
Расположение на среде – репозиторий настройки компонента, файл stlr.all.conf.
Наименование параметра в файле конфигурирования |
Описание |
Глобальные параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
stlr.ose.poddisruptionbudget.apiVersion |
Версия API в манифестах PodDisruptionBudget |
policy/v1 |
|
stlr.k8s.deploy.enabled |
Параметр, отвечающий за включение развертывания STLR в K8S |
true |
|
stlr.istio.waiting.start |
Параметр, отвечающий за включение ожидание получения секретов из хранилища |
true |
|
stlr.ose.deployment.spec.template.spec.containers.default.imagePullPolicy |
Параметр, отвечающий за политику пуллинга образов |
Always |
|
stlr.registry-db.ssl.enabled |
Параметр, отвечающий за обращение к БД с SSL |
true |
|
stlr.auth.type |
Тип аутентификации |
IAM |
При установке с помощью компонента Deploy Tools дополнительно с параметром stlr.k8s.deploy.enabled необходимо проверить настройку overrides в файле multiCluster.json в common-репозитории.
Для установки в DropApp/K8S:
"overrides": []
Для установки в OpenShift (опционально):
"overrides": ["openshift"]
Настройки для STLR-backend#
Местоположение настроек — репозиторий настроек компонента, файл stlr.backend.conf.
Наименование параметра в файле конфигурирования |
Описание |
Глобальные параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
stlr.backend.ingress.ose.vs.spec.http.retries.attempts |
Количество повторов входящих запросов, если приложение вернуло ошибку 5хх |
1 |
|
stlr.backend.ingress.ose.vs.spec.http.timeout |
Общее максимальное время ожидания выполнения входящего запроса |
30s |
|
stlr.backend.ingress.ose.vs.spec.http.retries.perTryTimeout |
Максимальное время ожидания выполнения одной попытки для входящего запроса |
2s |
|
Настройки работы в контейнеризированной среде (dc) |
|||
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.requests.cpu |
Стартовый объем ресурсов ЦП |
1280m |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.requests.memory |
Стартовый объем ресурсов оперативной памяти |
1200Mi |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.limits.cpu |
Лимит ресурсов ЦП |
2560m |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.limits.memory |
Лимит ресурсов оперативной памяти |
2400Mi |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
256Mi |
|
stlr.backend.ose.deployment.spec.replicas |
Количество активных pods |
2 |
|
stlr.backend.ose.deployment.spec.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
|
2 |
stlr.backend.ose.deployment.spec.template.spec.terminationGracePeriodSeconds |
Максимальное время ожидания завершения активных запросов перед завершением работы pod, в секундах |
60 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.livenessProbe.failureThreshold |
Количество неуспешных проверок liveness-пробы pod для перезагрузки |
5 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.livenessProbe.initialDelaySeconds |
Задержка перед первой проверкой liveness-пробой, в секундах |
60 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.livenessProbe.periodSeconds |
Интервал между liveness-пробами, в секундах |
10 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.livenessProbe.successThreshold |
Максимальное время ожидания результата liveness-пробы, в секундах |
1 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.livenessProbe.timeoutSeconds |
Количество успешных liveness-проб для ввода pod в балансировку |
2 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
5 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.readinessProbe.initialDelaySeconds |
Задержка перед первой проверкой readiness-пробой, в секундах |
30 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.readinessProbe.periodSeconds |
Интервал между readiness-пробами, в секундах |
2 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.readinessProbe.successThreshold |
Максимальное время ожидания результата readiness-пробы, в секундах |
1 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.readinessProbe.timeoutSeconds |
Количество успешных readiness-проб для ввода pod в балансировку |
2 |
|
stlr.backend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyCPU |
Стартовые ресурсы ЦП для Istio-sidecar |
200m |
|
stlr.backend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyMemory |
Стартовые ресурсы оперативной памяти для Istio-sidecar |
256Mi |
|
stlr.backend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyCPULimit |
Максимальные ресурсы ЦП для Istio-sidecar |
300m |
|
stlr.backend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyMemoryLimit |
Максимальное ресурсы оперативной памяти для Istio-sidecar |
256Mi |
|
stlr.backend.ose.deployment.metadata.annotations.sidecar.istio.io.prestopSleepEnvoyDuration |
Задержка перед началом завершения Istio-sidecar, в секундах |
35 |
|
Параметры стратегии развертывания |
|||
stlr.backend.ose.deployment.spec.strategy.rollingParams.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления |
|
0% |
stlr.backend.ose.deployment.spec.strategy.rollingParams.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
|
100% |
stlr.backend.ose.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
|
stlr.backend.ose.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
|
stlr-backend-unver |
Параметры circuit breaker |
|||
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.http.http1MaxPendingRequests |
Максимальное количество запросов к приложению, ожидающих выполнения |
0 |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.http.maxRequestsPerConnection |
Максимальное количество запросов в пределах одного соединения, где «0» — нет ограничений |
0 |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.tcp.maxConnections |
Максимальное количество HTTP/TCP подключений к приложению |
1024 |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.baseEjectionTime |
Базовое время для вывода из балансировки при срабатывании механизма circuit breaker |
30s |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.consecutive5xxErrors |
Количество 5хх ошибок, после которых будет осуществлен вывод из балансировки. Значение «0» отключит механизм вывода |
5 |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.interval |
Интервал опроса состояния приложения |
10s |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.maxEjectionPercent |
Максимальный процент реплик, которые могут быть выведены из балансировки |
10 |
|
stlr.backend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.minHealthPercent |
Минимальный порог жизнеспособных реплик для работы механизма circuit breaker. Если количество жизнеспособных реплик упадет ниже порога, механизм circuit breaker будет отключен |
10 |
|
PodDisruptionBudget, минимальное количество доступных pods |
|||
stlr.backend.ose.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
|
50% |
securityContext уровня POD |
|||
stlr.backend.ose.deployment.spec.template.spec.securityContext.fsGroup |
Группа владения для подключаемых томов |
10001 |
|
stlr.backend.ose.deployment.spec.template.spec.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
stlr.backend.ose.deployment.spec.template.spec.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
securityContext контейнера stlr-backend |
|||
stlr.backend.ose.deployment.spec.template.spec.containers.backend.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.backend.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
securityContext контейнера fluent-bit-sidecar |
|||
stlr.backend.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
stlr.backend.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
Параметры работы сервиса |
|||
stlr.backend.node.mode |
Режим запуска сервиса (по умолчанию production) |
production (development) |
|
stlr.backend.app.port |
Выбор сетевого порта запуска сервиса |
8080 |
|
stlr.backend.audit.message.write.local |
Режим работы аудита |
false |
|
Параметры подключения к БД |
|||
stlr.backend.datasource.db-url |
Ссылка на БД в формате |
|
jdbc:postgresql://host:5432/styler |
stlr.backend.datasource.schema |
Параметр, отвечающий за имя схемы БД (по умолчанию stlr) |
styler |
|
stlr.backend.datasource.create.table |
Переключатель для включения загрузки таблиц в БД при первой установке (по умолчанию false) |
false |
|
stlr.backend.datasource.pool.size |
Параметр, отвечающий за количество соединений с БД |
20 |
|
Параметры подключения к IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
|||
stlr.backend.iam.keycloak.realm |
Наименование Realm в IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
PlatformAuth |
|
stlr.backend.iam.keycloak.url |
URL хоста IAM Proxy(AUTH)/KeyCloak.SE (KCSE) c внутренним портом |
|
http://host:7070/auth |
stlr.backend.iam.keycloak.baseurl |
Внешний URL хоста IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
|
https://host |
Если в инсталляции не будет настроена интеграция с системой управления секретами, то необходимо сконфигурировать клиентские сертификаты для БД и Keycloak.
Создайте kind Secrets c именами stlr-secret-db-cert.unver, secret-stlr.unver, stlr-secret-kc-cert.unver и определите:
в
stlr-secret-db-cert.unver— tls.crt и tls.key;в
secret-stlr.unver— DB_USERNAME и DB_PASSWORD;в
stlr-secret-kc-cert.unver— tls.crt, tls.key, ca.crt.
Настройки для STLR-Frontend#
Расположение на среде — репозиторий настройки компонента, файл stlr.frontend.conf.
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
Параметры подключения к IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
|||
stlr.frontend.iam.keycloak.clientid |
ID Клиента IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
null |
|
stlr.frontend.iam.keycloak.realm |
Наименование Realm |
PlatformAuth |
|
stlr.frontend.iam.keycloak.url |
URL хоста IAM Proxy(AUTH)/KeyCloak.SE (KCSE) |
|
http://host:7070/auth |
stlr.frontend.ingress.ose.vs.spec.http.retries.attempts |
Количество повторов входящих запросов, если приложение вернуло ошибку 5хх и источник запроса размещен за ingress-контроллером |
1 |
|
stlr.frontend.ingress.ose.vs.spec.http.timeout |
Общее максимальное время ожидания выполнения входящего запроса, источник которого размещен за ingress-контроллером |
30s |
|
stlr.frontend.ingress.ose.vs.spec.http.retries.perTryTimeout |
Максимальное время ожидания выполнения одной попытки для входящего внешнего запроса |
2s |
|
dc |
|||
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.requests.cpu |
Стартовый объем ресурсов ЦП |
400m |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.requests.memory |
Стартовый объем ресурсов оперативной памяти |
512Mi |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.limits.cpu |
Лимит ресурсов ЦП |
600m |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.limits.memory |
Лимит ресурсов оперативной памяти |
768Mi |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
256Mi |
|
stlr.frontend.ose.deployment.spec.replicas |
Количество активных pods |
2 |
|
stlr.frontend.ose.deployment.spec.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
|
2 |
stlr.frontend.ose.deployment.spec.template.spec.terminationGracePeriodSeconds |
Максимальное время ожидания завершения активных запросов перед завершением работы pod, в секундах |
30 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.livenessProbe.failureThreshold |
Количество неуспешных проверок liveness-пробы pod для перезагрузки |
3 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.livenessProbe.initialDelaySeconds |
Задержка перед первой проверкой liveness-пробой, в секундах |
20 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.livenessProbe.periodSeconds |
Интервал между liveness-пробами, в секундах |
1 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.livenessProbe.timeoutSeconds |
Максимальное время ожидания результата liveness-пробы, в секундах |
1 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.livenessProbe.successThreshold |
Количество успешных liveness-проб для ввода pod в балансировку |
1 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
3 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.readinessProbe.initialDelaySeconds |
Задержка перед первой проверкой readiness-пробой, в секундах |
20 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.readinessProbe.periodSeconds |
Интервал между readiness-пробами, в секундах |
5 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.readinessProbe.timeoutSeconds |
Максимальное время ожидания результата readiness-пробы, в секундах |
5 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.readinessProbe.successThreshold |
Количество успешных readiness-проб для ввода pod в балансировку |
1 |
|
stlr.frontend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyCPU |
Стартовые ресурсы ЦП для Istio-sidecar |
200m |
|
stlr.frontend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyMemory |
Стартовые ресурсы оперативной памяти для Istio-sidecar |
256Mi |
|
stlr.frontend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyCPULimit |
Максимальные ресурсы ЦП для Istio-sidecar |
300m |
|
stlr.frontend.ose.deployment.metadata.annotations.sidecar.istio.io.proxyMemoryLimit |
Максимальное ресурсы оперативной памяти для Istio-sidecar |
256Mi |
|
stlr.frontend.ose.deployment.metadata.annotations.sidecar.istio.io.prestopSleepEnvoyDuration |
Задержка перед началом завершения Istio-sidecar, в секундах |
35 |
|
Параметры стратегии развертывания |
|||
stlr.frontend.ose.deployment.spec.strategy.rollingParams.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления |
|
0% |
stlr.frontend.ose.deployment.spec.strategy.rollingParams.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
|
100% |
stlr.frontend.ose.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
|
stlr.frontend.ose.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
|
stlr-frontend-unver |
Параметры circuit breaker |
|||
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.http.http1MaxPendingRequests |
Максимальное количество запросов к приложению, ожидающих выполнения |
0 |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.http.maxRequestsPerConnection |
Максимальное количество запросов в пределах одного соединения, где «0» — нет ограничений |
0 |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.connectionPool.tcp.maxConnections |
Максимальное количество HTTP/TCP подключений к приложению |
1024 |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.baseEjectionTime |
Базовое время для вывода из балансировки при срабатывании механизма circuit breaker |
30s |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.consecutive5xxErrors |
Количество 5хх ошибок, после которых будет осуществлен вывод из балансировки. Значение «0» отключит механизм вывода |
5 |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.interval |
Интервал опроса состояния приложения |
10s |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.maxEjectionPercent |
Максимальный процент реплик, которые могут быть выведены из балансировки |
10 |
|
stlr.frontend.ose.istio.ingress.dsr.spec.trafficPolicy.outlierDetection.minHealthPercent |
Минимальный порог жизнеспособных реплик для работы механизма circuit breaker. Если количество жизнеспособных реплик упадет ниже порога, механизм circuit breaker будет отключен |
10 |
|
PodDisruptionBudget, минимальное количество доступных pods |
|||
stlr.frontend.ose.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
|
50% |
securityContext уровня POD |
|||
stlr.frontend.ose.deployment.spec.template.spec.securityContext.fsGroup |
Группа владения для подключаемых томов |
10001 |
|
stlr.frontend.ose.deployment.spec.template.spec.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
stlr.frontend.ose.deployment.spec.template.spec.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
securityContext контейнера stlr-frontend |
|||
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
stlr.frontend.ose.deployment.spec.template.spec.containers.frontend.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
Конфигурирование при ручной установке#
Общий список файлов конфигураций (если предполагается установка через утилиту Helm):
./helm/application/strl-backend/values.yaml — настройки для Styler BH;
./helm/application/strl-frontend/values.yaml — настройки для Styler PL.
Примечание: Возможно потребуется изменение значений настроек.
Параметры для Helm charts STRL-backend#
Путь к параметрам: репозиторий настроек компонента, файл values.yaml, расположенный в директории helm/application/stlr-backend.
Наименование параметра в файле конфигурирования |
Описание |
Пример значения или значение по умолчанию |
|---|---|---|
distrib.release.version |
Определитель версионирования (по умолчанию unver) |
unver |
nodeMode |
Параметр для управления режима старта сервиса |
production/development |
keycloak.enabled |
Параметр для включения интеграции с Keycloak |
true |
keycloak.url |
URL сервиса Keycloak |
https://host:port/auth |
keycloak.realm |
Имя Realm сервиса Keycloak |
PlatformAuth |
keycloak.ssl.enabled |
Параметр для включения SSL до сервиса Keycloak |
true |
keycloak.ssl.path |
Путь до сертификатов для интеграции с сервисом Keycloak |
/mnt/certs/kc |
db.ssl.enabled |
Параметр, отвечающий за включение использования SSL при подключении к БД |
true |
db.host |
Адрес хоста БД |
10.10.0.95 |
db.port |
Порт БД |
5432 |
db.dbname |
Наименование БД |
styler |
db.schema |
Наименование схемы БД |
styler |
db.datasource.createTable |
Параметр для включения создания таблиц при старте сервиса |
true |
db.datasource.poolsize |
Параметр, отвечающий за количество соединений с БД |
10 |
db.path.config |
Параметр, отвечающий за путь до файла конфигурации подключения к БД |
/tmp/db/db-config.json |
db.path.secret |
Параметр, отвечающий за путь до файлов с логин/паролем для БД |
/mnt/secrets |
audit.local.enabled |
Параметр, отвечающий за включения записи логов аудита на файловую систему контейнера |
true |
audit.host |
Адрес хоста аудита |
audit.domain.sbt |
audit.port |
Порт хоста аудита |
80 |
audit.path |
Путь до файла событий аудита |
/tmp/audit |
path.log |
Путь до логов сервиса |
/var/log |
ingress.ingressAnnotation |
Включает набор аннотаций, определяющий тип ingress-контроллера |
|
spec.rules.host |
URL сервиса в kind ingress |
stlr.apps.k8s.domain.sbt |
backend.image |
Ccылка на образ docker |
domain/path/stlr-backen:1.0.0 |
backend.poddisruptionbudget.apiVersion |
Версия API в манифесте PodDisruptionBudget |
policy/v1 |
backend.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
50% |
backend.replicas |
Количество активных pods |
1 |
backend.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
2 |
backend.terminationGracePeriodSeconds |
Максимальное время ожидания завершения активных запросов перед завершением работы pod, в секундах |
30 |
backend.strategy.rollingParams.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного, во время обновления |
50% |
backend.strategy.rollingParams.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
50% |
backend.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
backend.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
stlr-backend |
backend.podSecurityContext.fsGroup |
Группа владения для подключаемых томов |
1001 |
backend.podSecurityContext.runAsGroup |
GID, используемый для запуска на pod |
1001 |
backend.podSecurityContext.runAsUser |
UID, используемый для запуска на pod |
1001 |
backend.podSecurityContext.seccompProfile.type |
Определения профиля безопасности на pod |
RuntimeDefault |
backend.containers.imagePullPolicy |
Определяет порядок работы с образами |
Always |
backend.containers.livenessProbe.failureThreshold |
Количество неуспешных проверок liveness-пробы pod для перезагрузки |
30 |
backend.containers.livenessProbe.initialDelaySeconds |
Задержка перед первой проверкой liveness-пробой, в секундах |
1 |
backend.containers.livenessProbe.periodSeconds |
Интервал между liveness-пробами, в секундах |
2 |
backend.containers.livenessProbe.successThreshold |
Количество успешных liveness-проб для ввода pod в балансировку |
1 |
backend.containers.livenessProbe.timeoutSeconds |
Максимальное время ожидания результата liveness-пробы, в секундах |
3 |
backend.containers.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
30 |
backend.containers.readinessProbe.initialDelaySeconds |
Задержка перед первой проверкой readiness-пробой, в секундах |
1 |
backend.containers.readinessProbe.periodSeconds |
Интервал между readiness-пробами, в секундах |
2 |
backend.containers.readinessProbe.successThreshold |
Количество успешных readiness-проб для ввода pod в балансировку |
1 |
backend.containers.readinessProbe.timeoutSeconds |
Максимальное время ожидания результата readiness-пробы, в секундах |
3 |
backend.containers.limits.cpu |
Лимит ресурсов ЦП |
1 |
backend.containers.limits.memory |
Лимит ресурсов оперативной памяти |
600Mi |
backend.containers.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
256Mi |
backend.containers.requests.cpu |
Стартовый объем ресурсов ЦП |
500m |
backend.containers.requests.memory |
Стартовый объем ресурсов оперативной памяти |
600Mi |
backend.containers.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
backend.containers.securityContext.allowPrivilegeEscalation |
Возможность получения более высоких привилегий в сравнении с родительским процессом |
false |
backend.containers.securityContext.capabilities.drop |
Параметры разрешения на уровне ядра |
- ALL |
backend.containers.securityContext.privileged |
Управления доступом к файловой системе контейнера |
false |
backend.containers.securityContext.readOnlyRootFilesystem |
Управление режимом readOnly файловой системы контейнера |
true |
backend.containers.securityContext.runAsNonRoot |
Управление привилегиями root в контейнере |
true |
backend.containers.securityContext_k8s.runAsGroup |
GID, используемый для запуска контейнера |
1001 |
backend.containers.securityContext_k8s.runAsUser |
UID, используемый для запуска контейнера |
1001 |
backend.containers.securityContext_k8s.seccompProfile.type |
Определения профиля безопасности на уровне контейнера |
RuntimeDefault |
Параметры для Helm charts STRL-frontend#
Путь к параметрам: репозиторий настроек компонента, файл values.yaml, расположенный в директории helm/application/stlr-frontend.
Наименование параметра в файле конфигурирования |
Описание |
Пример значения или значение по умолчанию |
|---|---|---|
distrib.release.version |
Определитель версионирования (по умолчанию unver) |
unver |
keycloak.enabled |
Параметр для включения интеграции с Keycloak |
true |
keycloak.url |
URL сервиса Keycloak |
https://host:port/auth |
keycloak.realm |
Имя Realm сервиса Keycloak |
PlatformAuth |
keycloak.ssl.enabled |
Параметр для включения SSL до сервиса Keycloak |
true |
keycloak.ssl.path |
Путь до сертификатов для интеграции с сервисом Keycloak |
/mnt/certs/kc |
frontend.image |
Ccылка на образ docker |
domain/path/stlr-frontend:1.0.0 |
frontend.poddisruptionbudget.apiVersion |
Версия API в манифесте PodDisruptionBudget |
policy/v1 |
frontend.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
50% |
frontend.replicas |
Количество активных pods |
1 |
frontend.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
2 |
frontend.terminationGracePeriodSeconds |
Максимальное время ожидания завершения активных запросов перед завершением работы pod, в секундах |
30 |
frontend.strategy.rollingParams.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного, во время обновления |
50% |
frontend.strategy.rollingParams.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
50% |
frontend.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
frontend.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
stlr-frontend |
frontend.podSecurityContext.fsGroup |
Группа владения для подключаемых томов |
1001 |
frontend.podSecurityContext.runAsGroup |
GID, используемый для запуска на pod |
1001 |
frontend.podSecurityContext.runAsUser |
UID, используемый для запуска на pod |
1001 |
frontend.podSecurityContext.seccompProfile.type |
Определения профиля безопасности на pod |
RuntimeDefault |
frontend.containers.imagePullPolicy |
Определяет порядок работы с образами |
Always |
frontend.containers.livenessProbe.failureThreshold |
Количество неуспешных проверок liveness-пробы pod для перезагрузки |
30 |
frontend.containers.livenessProbe.initialDelaySeconds |
Задержка перед первой проверкой liveness-пробой, в секундах |
1 |
frontend.containers.livenessProbe.periodSeconds |
Интервал между liveness-пробами, в секундах |
2 |
frontend.containers.livenessProbe.successThreshold |
Количество успешных liveness-проб для ввода pod в балансировку |
1 |
frontend.containers.livenessProbe.timeoutSeconds |
Максимальное время ожидания результата liveness-пробы, в секундах |
3 |
frontend.containers.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
30 |
frontend.containers.readinessProbe.initialDelaySeconds |
Задержка перед первой проверкой readiness-пробой, в секундах |
1 |
frontend.containers.readinessProbe.periodSeconds |
Интервал между readiness-пробами, в секундах |
2 |
frontend.containers.readinessProbe.successThreshold |
Количество успешных readiness-проб для ввода pod в балансировку |
1 |
frontend.containers.readinessProbe.timeoutSeconds |
Максимальное время ожидания результата readiness-пробы, в секундах |
3 |
frontend.containers.limits.cpu |
Лимит ресурсов ЦП |
1 |
frontend.containers.limits.memory |
Лимит ресурсов оперативной памяти |
600Mi |
frontend.containers.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
256Mi |
frontend.containers.requests.cpu |
Стартовый объем ресурсов ЦП |
500m |
frontend.containers.requests.memory |
Стартовый объем ресурсов оперативной памяти |
600Mi |
frontend.containers.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
frontend.containers.securityContext.allowPrivilegeEscalation |
Возможность получения более высоких привилегий в сравнении с родительским процессом |
false |
frontend.containers.securityContext.capabilities.drop |
Параметры разрешения на уровне ядра |
- ALL |
frontend.containers.securityContext.privileged |
Управления доступом к файловой системе контейнера |
false |
frontend.containers.securityContext.readOnlyRootFilesystem |
Управление режимом readOnly файловой системы контейнера |
true |
frontend.containers.securityContext.runAsNonRoot |
Управление привилегиями root в контейнере |
true |
frontend.containers.securityContext_k8s.runAsGroup |
GID, используемый для запуска контейнера |
1001 |
frontend.containers.securityContext_k8s.runAsUser |
UID, используемый для запуска контейнера |
1001 |
frontend.containers.securityContext_k8s.seccompProfile.type |
Определения профиля безопасности на уровне контейнера |
RuntimeDefault |
Интеграции#
Дополнительные опциональные сервисы позволят получить более полный спектр возможностей компонента STLR*:
Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (OPM) — для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения;
Журналирование (LOGA) продукта Platform V Monitor (OPM) — для хранения лог-файлов;
Единый коллектор телеметрии (COTE) продукта Platform V Monitor (OPM) — для регистрации и хранения событий информационной безопасности;
IAM Proxy (AUTH) или KeyCloak.SE (KCSE) продукта Platform V IAM SE (IAM) или Keycloak — для управления аутентификацией и авторизацией пользователей ;
One-Time Password (OTP) / OTT (OTTS) продукта Platform V Backend (#BD) — для контроля межсервисных взаимодействий на прикладном уровне с использованием токенов.
Примечание:
*Решение о необходимости установки указанных сервисов принимается пользователем. Компонент STLR способен функционировать независимо от этих сервисов. Данные сервисы являются опциональными.
Потребитель во время подключения компонента STLR подключает вышеуказанные компоненты в свой проект согласно их собственным инструкциям по подключению. Интеграция с сервисами журналирования, мониторинга, аудита, авторизации и аутентификации, не являющимися продуктами Platform V, выполняется согласно их документации.
Далее будет описаны особенности интеграции с указанными сервисами.
Настройка интеграции с компонентом IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)#
Рекомендуемая к установке и протестированная в интеграции с STLR версия компонента AUTH указана в разделе Системное программное обеспечение. Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Для настройки интеграции с компонентом AUTH необходимо задать значения параметрам, перечисленным в разделе ниже.
Настройки переменных окружения на сервере#
IAM_URL — адрес до развернутого IAM-сервера;
IAM_REALM — название realm;
IAM_CERT_PATH (при работе через SSL) — путь до сертификата;
IAM_KEY_PATH (при работе через SSL) — путь до ключа;
IAM_CA_PATH (при работе через SSL) — путь до сертификата удостоверяющего центра;
IAM_ENCRYPTION_ALGORITHM (необязательный параметр) — алгоритм шифрования токена, по умолчанию
RS256.
Настройки для конфигурации#
Расположение на среде — репозиторий настройки компонента, файл stlr.istio.all.conf.
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
IAM Proxy |
|||
stlr.platform.iam.keycloak.host |
Хост подключения к AUTH |
|
vm-fstd-ui-iam-216.vdc01.ui.dev.sbt |
stlr.platform.iam.keycloak.port |
Порт подключения к AUTH |
|
8443 |
stlr.platform.iam.keycloak.protocol |
Протокол подключения к AUTH |
|
https |
stlr.platform.iam.keycloak.tls.enabled |
Переключатель использования протокола TLS |
true |
|
Параметры для интеграции с KeyCloak.SE (KCSE) |
|||
stlr.platform.iam.keycloak.egress.ose.vs.spec.http.retries.attempts |
Количество повторных запросов в случае ошибки |
10 |
|
stlr.platform.iam.keycloak.egress.ose.vs.spec.http.retries.perTryTimeout |
Максимальное время ожидания одной попытки |
2s |
|
stlr.platform.iam.keycloak.egress.ose.vs.spec.http.timeout |
Общее максимальное время ожидания выполнения запроса |
5s |
Для отображения ссылки на UI-компонента STLR в AUTH необходимо добавить junction-конфигурацию в RDS.
Пример значений конфигурации:
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/applyJctRequestFilter=
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/junctionPoint=/stlr
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/junctionName=STLR
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/indexUrl=/stlr
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/authorizeByRoleTemplate=
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/sslCommonName=*
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/transparent=true
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/https=true
rds-server@ZoneConfig[Core]/JunctionConfig[STLR-frontend]/serverAddresses={ui_host:port};
Также необходимо указать фильтр к запросам junction в значение настройки applyJctRequestFilter.
Настройка интеграции с Keycloak#
Рекомендуемая к установке и протестированная в интеграции с STLR версия Keycloak указана в разделе Системное программное обеспечение. Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Для корректной работы интеграции необходимо настроить переменные окружения
Переменные окружения на backend#
KC_URL — адрес до развернутого Keycloak-сервера;
KC_REALM — название realm;
KC_CERT_PATH (при работе через SSL) — путь до сертификата;
KC_KEY_PATH (при работе через SSL) — путь до ключа;
KC_CA_PATH (при работе через SSL) — путь до сертификата удостоверяющего центра;
KC_ENCRYPTION_ALGORITHM (необязательный параметр) — алгоритм шифрования токена, по умолчанию
RS256.
Переменные окружения на frontend#
Frontend приложения получает переменные окружения через location ~*/stlr/env. Пример ответа следующий:
{
data: {
env: {
KC_URL: 'http://localhost:8180',
KC_REALM: 'myrealm',
KC_CLIENT_ID: 'myclient',
},
},
success: true,
}
, где:
KC_URL — адрес до развернутого Keycloak-сервера;
KC_REALM — названием realm;
KC_CLIENT_ID — идентификатор клиента.
Настройка интеграции с иными сервисами аутентификации#
При интеграции компонента STLR с сервисом аутентификации, не являющимся продуктом Platform V IAM SE (IAM), должны выполняться определенные требования.
Сервис должен:
работать как proxy, стоящий перед namespace STLR;
осуществлять аутентификацию пользователя, взаимодействуя с провайдером аутентификации;
подставлять JWT-токен в заголовке
authorizationв форматеBearer <token>. JWT-токен в payload должен содержать полеemailс уникальным именем пользователя.
Для корректной работы logout необходимо изменить ConfigMap stlr-frontend-default-conf-unver.
Location ~*/stlr/logoutUrl должен возвращать в поле data URL страницы, на который компонент STLR будет производить
редирект для выхода из учетной записи пользователя.
Пример ответа:
{
data: "/openid-connect-auth/logout",
success: true,
}
Настройка интеграции с системой управления секретами#
HashiCorp Vault используется для управления следующими секретами:
сертификатами для обработки входящих и исходящих запросов с mTLS (ingress / egress);
сертификатами для mTLS подключения к БД;
учетными данными для подключения к БД;
сертификатами для mTLS подключения к OTT.
Потребители
Единица развертывания |
Контейнер |
Используемые секреты |
Engine секретов в Vault |
Обновление при изменении |
|---|---|---|---|---|
ingress |
istio-proxy |
Серверный сертификат |
|
да |
Сертификаты доверенных УЦ |
|
да |
||
ott-sidecar |
Клиентский сертификат OTTS |
|
да |
|
Сертификаты доверенных УЦ |
|
да |
||
fluent-bit-sidecar |
Клиентский сертификат |
|
нет |
|
Сертификаты доверенных УЦ |
|
нет |
||
egress |
istio-proxy |
Клиентский сертификат |
|
да |
Сертификаты доверенных УЦ |
|
да |
||
ott-sidecar |
Клиентский сертификат OTTS |
|
нет |
|
Сертификаты доверенных УЦ |
|
да |
||
strl-backend |
strl-backend |
Клиентский сертификат для подключения к БД |
|
да |
Имя пользователя и пароль от схемы БД |
|
да |
||
fluent-bit-sidecar |
Не использует |
|||
istio-proxy |
Не использует |
|||
strl-frontend |
strl-frontend |
Не использует |
||
fluent-bit-sidecar |
Не использует |
|||
istio-proxy |
Не использует |
В случае интеграции с HashiCorp Vault потребуется:
установленный и настроенный HashiCorp Vault;
установленный и настроенный HashiCorp Vault Agent Injector в среде контейнеризации (Platform V DropApp (K8S) / Kubernetes / Red Hat OpenShift — опционально);
получить необходимые привилегии для управления в HashiCorp Vault;
подготовить секреты в зависимости от engine;
настроить возможность аутентификации Vault Agent из namespace STLR среды контейнеризации (Platform V DropApp (K8S) / Kubernetes / Red Hat OpenShift — опционально);
внести изменения в конфигурацию STLR для настройки параметров интеграции;
если ранее был установлен STLR без интеграции с системой управления секретами, то перед установкой необходимо очистить namespace от ранее созданных секретов.
Примечание. Для удаления секретов из namespace можно использовать playbook OPENSHIFT_DEL_RES Security job компонента Deploy Tools (CDJE). Необходимо настроить файл openshift_del_res.conf на удаление секретов из проекта STLR, пример:
openshift_del_res.project.1.cluster = none openshift_del_res.project.1.projects = project_STLR # удаление secrets openshift_del_res.delete.projects.secrets = onПодробнее о работе и настройке job читайте в документации компонента Deploy Tools (CDJE).
Настройки для конфигурации#
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные или внутренние параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
Файл stlr.all.conf |
|||
stlr.vault.agent.enabled |
Переключатель интеграции с HashiCorp Vault |
true |
|
Настройки для подключения к HashiCorp Vault - файл stlr.istio.all.conf |
|||
stlr.vault.host |
Хост хранилища секретов |
|
secman-dzo.solution.sbt |
stlr.vault.port |
Порт хранилища секретов |
|
8443 |
stlr.vault.protocol |
Протокол хранилища секретов |
|
|
stlr.vault.egress.gw.port |
Egress gateway порт для обращения в хранилище секретов |
8550 |
|
Настройки vault-agent- файл stlr.vault.all.conf |
|||
stlr.vault.tenant |
Имя ресурса проекта (тенант) / пространство секретов |
|
DEV_DZO |
stlr.vault.role |
Имя роли для доступа к секретам |
|
role-ga-secman-uifw |
stlr.vault.client-max-retries |
Количество повторных попыток при возникновении ошибок |
2 |
|
stlr.vault.log-level |
Уровень детализации журнала агента |
info |
|
stlr.vault.log-format |
Форматирование журнала |
standart |
|
stlr.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-inject-custom-listener |
Хост:порт используемый для экспорта метрик |
0.0.0.0:8100 |
|
stlr.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-inject-custom-listener-port |
Порт используемый для экспорта метрик |
8100 |
|
stlr.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-telemetry-prometheus_retention_time |
Продолжительность удержания метрик |
5m |
|
Секреты |
|||
stlr.vault.secret.pki.baseEngineMountPath |
Базовый путь engine PKI. Требуется указать значение в соответствии с конфигурацией стенда |
||
stlr.vault.secret.kv.baseEngineMountPath |
Базовый путь engine KV Secrets Engine. Требуется указать значение в соответствии с конфигурацией стенда |
A/IFT/SK/CORE/STLR/ |
|
stlr.vault.secret.rootCertsPath |
Полный путь к хранилищу KV с доверенными сертификатами. Требуется указать значение в соответствии с конфигурацией стенда |
A/IFT/SK/CORE/STLR/KV/truststore |
|
stlr.vault.secret.truststore.pem |
Ключ доверенных сертификатов PEM |
truststore_pem |
|
stlr.ose.configmap.certificate.client.cn |
CN клиентского сертификата. Требуется указать значение в соответствии с конфигурацией стенда |
client-egress |
|
stlr.ose.configmap.certificate.server.cn |
CN серверного сертификата |
|
stlr-unver.apps.dap.dev.sbt.ru |
stlr.ose.configmap.certificate.ott.cn |
CN сертификата для OTT |
stlr |
|
stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.name |
Имя/путь engine PKI |
PKI/ |
|
stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.client.role |
Роль для выпуска клиентских сертификатов. Требуется указать значение в соответствии с конфигурацией стенда |
role-ga-secman-uifw |
|
stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.server.role |
Роль для выпуска серверных сертификатов. Требуется указать значение в соответствии с конфигурацией стенда |
role-ga-secman-uifw |
|
stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.ott.role |
Роль для выпуска сертификатов OTT. Требуется указать значение в соответствии с конфигурацией стенда |
role-ga-secman-uifw |
|
stlr.vault.secret.egress.certs.path |
Путь к сертификатам egress |
PKI/fetch/role-ga-secman-uifw common_name=client-egress format=pem |
|
stlr.vault.secret.ingress.certs.path |
Путь к сертификатам ingress |
PKI/fetch/role-ga-secman-uifw common_name=client-egress format=pem |
|
stlr.vault.secret.ott.certs.path |
Полный путь до секрета с сертификатом для OTT |
PKI/fetch/role-ga-secman-uifw common_name=stlr-ift3 format=pem private_key_format=pkcs8 |
|
stlr.vault.secret.db.postgres.certs.path |
Путь к сертификатам для подключения к БД PostgreSQL |
PKI/fetch/role-ga-secman-uifw common_name=client-egress format=pem private_key_format=pkcs8 |
|
stlr.vault.secret.db.postgres.credentials.path |
Путь к учетным данным для подключения к БД PostgreSQL |
A/IFT/SB/CORE/STLR/KV/db/creds |
|
stlr.vault.secret.db.postgres.credentials.userProperty |
Имя свойства учетных данных, описывающего пользователя для БД |
DB_USERNAME |
|
stlr.vault.secret.db.postgres.credentials.passwordProperty |
Имя свойства учетных данных, описывающего пароль для БД |
DB_PASSWORD |
|
stlr.vault.secret.kafka.cacert |
KV движок $__vault{kv:path/to/secret:secret_name:key_name} |
|
|
stlr.vault.secret.kafka.pki.path |
Путь к секрету kafka |
|
|
stlr.vault.secret.kafka.sslcert |
Полный путь до сертификата SSL |
|
|
stlr.vault.secret.kafka.sslkey |
Полный путь до приватного ключа SSL |
|
|
Файл stlr.istio.all.conf |
|||
stlr.ose.istio.(egress\ingress).deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-cpu |
Запрашиваемый объем ресурсов ЦП для IGEG |
50m |
|
stlr.ose.istio.(egress\ingress).deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-mem |
Запрашиваемый объем ресурсов оперативной памяти для IGEG |
64Mi |
|
stlr.ose.istio.(egress\ingress).deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-cpu |
Лимит ресурсов ЦП для IGEG |
100m |
|
stlr.ose.istio.(egress\ingress).deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-mem |
Лимит ресурсов оперативной памяти для IGEG |
128Mi |
|
Сбор метрик IGEG |
|||
stlr.ose.istio.prometheus.io.path |
Путь конечной точки сбора метрик |
/stats/prometheus |
|
stlr.ose.istio.prometheus.io.port |
Порт, на котором доступна точка сбора метрик |
15090 |
|
stlr.ose.istio.prometheus.io.scrape |
Включение автоматического сбора метрик |
true |
|
Сбор метрик HashiCorp Vault |
|||
stlr.ose.istio.vault.agent-inject-custom-listener |
Настройка адреса и порта для прослушивания агентом Vault |
0.0.0.0:8101 |
|
stlr.ose.istio.vault.agent-telemetry-prometheus_retention_time |
Время хранения телеметрии Prometheus агентов Vault |
5m |
|
stlr.ose.istio.vault.prometheus.io.path |
Путь для сбора метрик Prometheus |
/agent/v1/metrics |
|
stlr.ose.istio.vault.prometheus.io.port |
Порт для сбора метрик Prometheus |
|
|
stlr.ose.istio.vault.prometheus.io.scrape |
Переключатель автоматической сборки метрик Prometheus с агента Vault |
true |
|
Файл stlr.backend.conf |
|||
stlr.backend.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-cpu |
Запрашиваемый объем ресурсов ЦП |
50m |
|
stlr.backend.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-mem |
Запрашиваемый объем ресурсов оперативной памяти |
64Mi |
|
stlr.backend.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-cpu |
Лимит ресурсов ЦП |
100m |
|
stlr.backend.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-mem |
Лимит ресурсов оперативной памяти |
128Mi |
Для выпуска сертификатов с использованием engine PKI, путь к сертификатам задается в виде <pki_path>/issue/<role> <parameters>, где:
pki_path– путь до engine PKI;role– имя роли;parameters– список параметров разделенные пробелом, указываются парой ключ=значение.
Примеры:
stlr.vault.secret.ingress.certs.path=pki/issue/stlr common_name=<hostname> format=pem ttl=12h
stlr.vault.secret.db.postgres.certs.path=pki/issue/stlr common_name=<имя пользователя> format=pem
В STLR поддерживается конфигурация engine секретов kv и pki, но по умолчанию поставляется конфигурация для engine pki.
Чтобы изменить engine в конфигурации необходимо для каждого path параметра секрета сменить формат pki на kv.
Например:
stlr.vault.secret.ott.certs.path={{ lookup('custom_vars', 'stlr.vault.secret.pki.baseEngineMountPath') }}{{ lookup('custom_vars', 'stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.name') }}fetch/{{ lookup('custom_vars', 'stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.ott.role') common_name={{ lookup('custom_vars', 'stlr.ose.configmap.certificate.ott.cn') }} format=pem private_key_format=pkcs8
изменить на:
stlr.vault.secret.ott.certs.path={{ lookup('custom_vars', 'stlr.vault.secret.kv.baseEngineMountPath') }}KV/istio/ott
Требования и рекомендации при использовании engine секретов: kv, pki, database#
Не рекомендован к использованию engine Database Engine (database).
Использование KV Engine (kv)#
Хранение сертификатов
При использовании KV для хранения сертификатов, секрет должен содержать следующие ключи:
Ключ |
Описание |
|---|---|
|
Cертификаты доверенных УЦ |
|
Cертификат |
|
Cертификат издателя |
|
Приватный ключ |
Сертификаты должны быть представлены в формате PEM.
Пример содержимого секрета с сертификатами:
{
"ca_chain": [
"-----BEGIN CERTIFICATE-----\nMIIEjjCCA...\n-----END CERTIFICATE-----",
"-----BEGIN CERTIFICATE-----\nMIIDMjCCA...\n-----END CERTIFICATE-----"
],
"certificate": "-----BEGIN CERTIFICATE-----\nMIIFszCC...\n-----END CERTIFICATE-----",
"issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIEjjCCA...\n-----END CERTIFICATE-----",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBA...\n-----END PRIVATE KEY-----"
}
Хранение учетной записи БД
При использовании KV для хранения учетной записи БД, секрет должен содержать следующие ключи:
Ключ |
Описание |
|---|---|
|
Имя пользователя |
|
Пароль |
Пример содержимого секрета с учетной записью:
{
"DB_USERNAME": "styler",
"DB_PASSWORD": "password"
}
Примечание. По умолчанию Vault Agent с периодичностью в 5 минут запрашивает секрет. Изменить поведение можно добавив специальный ключ
ttl– время жизни секрета, тогда Vault Agent будет запрашивать его при достижении85%от указанногоttl. Пример значения:10.5(s|m|h|d), гдеs– секунды,m– минуты,h– часы,d– дни, дробная часть опциональна. Если не указана единица измерения времени, то значение интерпретируется в секундах.
Автоматизация применения секретов#
В STLR реализован механизм автоматического обновления секретов, без перезапуска и без недоступности приложений. Во время работы приложения (runtime) происходит отслеживание изменения в файлах на файловой системе и по факту изменений выполняется перезапуск ресурсов приложения.
Аутентификации по ТУЗ#
Для успешного обновления secret ТУЗ для подключения к СУБД требуется одновременное обновление ТУЗ в экземпляре СУБД, Secret Management System и в приложении. Ошибки аутентификации могут появиться для новых соединений, которые создает пул со старым secret (но когда в экземпляр СУБД уже обновился ТУЗ), либо с новым secret (но когда экземпляр СУБД еще не обновил ТУЗ). Чтобы исключить такие ошибки, рекомендуется обеспечить период отсрочки (grace period) для отключаемого ТУЗ. Для этого нужно выполнить следующие шаги:
Ротация секрета на стороне Secret Management System типа логин/пароль, используемого для аутентификации в СУБД, производится администраторами путем замены ТУЗ в KV Engine:
Создаются две ТУЗ с пересекающимися сроками действия пароля (grace period - пересечение сроков действия паролей, когда действуют обе ТУЗ. Используется для плавной замены ТУЗ).
В KV Secrets Engine указываются логин, пароль и срок действия (TTL) первой ТУЗ.
При наступлении grace period в KV Secrets Engine указываются логин, пароль и срок действия (TTL) второй ТУЗ (в этот момент могут использоваться обе ТУЗ).
Далее ТУЗ меняются с предварительной сменой пароля.
Для смены пароля ТУЗ можно настроить использование статических ролей Database Secrets Engine:
Для каждой ТУЗ создается статическая роль.
Для роли настраивается политика генерации паролей.
Для смены пароля ТУЗ выполняется операция ротации, которая генерирует новый пароль и обновляет его в СУБД для ТУЗ.
После выполнения операции ротации логин, новый пароль и срок действия пароля (TTL) ТУЗ указываются в KV Secrets Engine.
Примечание.
Для исключения проблем при обновлении secret ТУЗ СУБД рекомендуется отказаться от аутентификации через ТУЗ и перейти на аутентификацию по сертификату.
При наступлении grace period в KV Secrets Engine указываются логин, пароль и срок действия (TTL) второй ТУЗ (в этот момент могут использоваться обе ТУЗ).
Далее ТУЗ меняются с предварительной сменой пароля.
Для смены пароля ТУЗ можно настроить использование статических ролей Database Secrets Engine:
Для каждой ТУЗ создается статическая роль.
Для роли настраивается политика генерации паролей.
Для смены пароля ТУЗ выполняется операция ротации, которая генерирует новый пароль и обновляет его в СУБД для ТУЗ.
После выполнения операции ротации логин, новый пароль и срок действия пароля (TTL) ТУЗ указываются в KV Secrets Engine.
Примечание.
Для исключения проблем при обновлении secret ТУЗ СУБД рекомендуется отказаться от аутентификации через ТУЗ и перейти на аутентификацию по сертификату. Для исключения проблем при обновлении secret ТУЗ СУБД рекомендуется отказаться от аутентификации через ТУЗ и перейти на аутентификацию по сертификату.
Настройка интеграции с компонентом для защиты от несанкционированного доступа прикладных сервисов, размещаемых в namespace#
Совместно с сервисами компонента STLR происходит установка istio-proxy для защиты сервиса от несанкционированного доступа внутри namespace.
Рекомендуемая к установке и протестированная в интеграции с STLR версия компонента IGEG указана в разделе «Системное программное обеспечение».
Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Расположение на среде - репозиторий настройки компонента, файл stlr.istio.all.conf.
Для настройки интеграции необходимо задать значения следующим параметрам:
Общие настройки#
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные или внутренние параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
stlr.ose.istio.mtls.mode.strict |
Признак, указывающий на включение mTLS внутри namespace при использовании PeerAuthentication |
true |
|
Параметры логирования envoy |
|||
stlr.ose.istio.envoy.logging.level |
Уровень логирования сервиса |
|
info |
stlr.ose.istio.envoy.component.logging.level |
Уровень логирования компонента |
misc:error |
|
stlr.ose.istio.log_rotate_max_size |
Максимальное размер файла лога |
10 |
|
stlr.ose.istio.log_rotate_max_backups |
Максимальное количество файлов ротации |
3 |
|
stlr.ose.istio.log_rotate_max_age |
Признак ротации — выполнять ротацию журналов, если они старше заданного значения |
1 |
|
stlr.ose.istio.pilot-agent.logging.stdout.enabled |
Признак вывода логов в stdout |
true |
|
stlr.ose.istio.pilot-agent.logging.level |
Уровень логирования pilot-agent |
info |
|
stlr.ingress.class |
Класс ingress контроллера |
nginx |
|
Параметры подключения ресурсов Control Plane |
|||
stlr.ose.istio.control-plane-project |
Параметр, отвечающий за имя namespace в котором развернута control plane |
|
sbt-syn-cp-02 |
stlr.ose.istio.control-plane-istiod-service |
Имя сервиса istiod |
|
istiod-basic |
stlr.ose.istio.control-plane-istiod-port |
Порт сервиса istiod |
|
15012 |
stlr.ose.istio.control-plane-jaeger-service |
Имя сервиса jaeger-service |
|
jaeger-collector |
stlr.ose.istio.control-plane-jaeger-port |
Порт сервиса jaeger-service |
|
9411 |
Параметры подключения к Kafka LOGA |
|||
stlr.ose.istio.egress.logger.kafka.servers |
Перечень серверов Kafka для интеграции с LOGA |
|
kafka_host_1:ip_1:9093:TCP:9116:TCP;kafka_host_2:ip_2:9093:TCP:9117:TCP |
stlr.ose.istio.egress.logger.kafka.ssl.enabled |
Признак, отвечающий за включение SSL до серверов Kafka LOGA |
|
SSL |
Параметры подключения к БД |
|||
stlr.ose.istio.egress.node.postgres.servers |
Список серверов БД |
|
db_host_1:db_ip_1:5432:TCP:15432:TCP |
stlr.ose.istio.ingress.route.spec.host.https.appFQDN |
FQDN для обращения к сервису |
|
stlr-unver.apps.dap.dev.sbt.ru |
stlr.ose.istio.ingress.route.spec.host.https-healthcheck.appFQDN |
Доменный адрес приложения для проверки его работоспособности через HTTPS |
|
|
stlr.ose.istio.ingress.route.spec.host.https-healthcheck.enabled |
Признак необходимости развертывать отдельный route для healthcheck |
true |
|
Параметры селектора Ingress |
|||
agent.ose.istio.all.common.ingressAppSelector |
Имя селектор для сервиса ingress gateway |
|
stlr-ingress-unver-namespace-name |
agent.ose.istio.all.common.ingressIstioSelector |
Имя селектор для сервиса ingress gateway |
|
stlr-ingress-unver-namespace-name |
Параметры селектора Egress |
|||
agent.ose.istio.all.common.egressAppSelector |
Имя селектор для сервиса egress gateway |
|
stlr-egress-unver-namespace-name |
agent.ose.istio.all.common.egressIstioSelector |
Имя селектор для сервиса egress gateway |
|
stlr-egress-unver-namespace-name |
stlr.ose.istio.ingress.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
|
50% |
stlr.ose.istio.egress.poddisruptionbudget.spec.minAvailable |
Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля |
|
50% |
Параметры Ingress pod |
|||
stlr.ose.istio.ingress.common.internal-port |
Порт сервиса IGEG для работы с внешними запросами к сервису |
11443 |
|
stlr.ose.istio.ingress.common.internal-healthcheck-port |
Порт для внутренних проверок доступности |
11444 |
|
stlr.ose.istio.ingress.deployment.spec.replicas |
Количество активных pods |
|
2 |
stlr.ose.istio.ingress.deployment.spec.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
|
2 |
stlr.ose.istio.ingress.deployment.spec.strategy.rollingUpdate.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления |
|
0% |
stlr.ose.istio.ingress.deployment.spec.strategy.rollingUpdate.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
|
100% |
stlr.ose.istio.ingress.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
|
stlr-ingress-unver |
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.istio.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
5 |
|
Параметры Egress pod |
|||
stlr.ose.istio.egress.deployment.spec.revisionHistoryLimit |
Количество старых ReplicaSet, хранящихся в среде |
|
2 |
stlr.ose.istio.egress.deployment.spec.replicas |
Количество активных pods |
2 |
|
stlr.ose.istio.egress.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key |
Ключ, на основе которого определяется, на какие узлы модуль может быть распределен |
app |
|
stlr.ose.istio.egress.deployment.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.value |
Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен |
|
stlr-egress-unver |
stlr.ose.istio.egress.deployment.spec.strategy.rollingUpdate.maxSurge |
Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления |
|
0% |
stlr.ose.istio.egress.deployment.spec.strategy.rollingUpdate.maxUnavailable |
Максимально допустимое количество pods, недоступное во время обновления |
|
100% |
stlr.ose.istio.egress.common.internal-port |
Внутренний порт для маршрутизации запросов к сторонним сервисам |
|
7070 |
stlr.ose.istio.ingress.envoy_filter.regex_match.client.cn |
Regrex в котором задаются CN для валидации запросов через envoy filter |
|
.* |
stlr.ose.istio.egress.deployment.spec.template.spec.containers.istio.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
5 |
|
Параметры ресурсов CPU и MEM для istio-proxy ingress |
|||
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.limits.cpu |
Стартовые ресурсы ЦП для sidecar |
450m |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.limits.memory |
Стартовые ресурсы оперативной памяти для sidecar |
800Mi |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
2048Mi |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.requests.cpu |
Максимальные ресурсы ЦП для sidecar |
350m |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.requests.memory |
Максимальные ресурсы оперативной памяти для sidecar |
600Mi |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
128Mi |
|
Параметры ресурсов CPU и MEM для istio-proxy egress |
|||
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.limits.cpu |
Стартовые ресурсы ЦП для sidecar |
400m |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.limits.memory |
Стартовые ресурсы оперативной памяти для sidecar |
512Mi |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
2048Mi |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.requests.cpu |
Максимальные ресурсы ЦП для sidecar |
200m |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.requests.memory |
Максимальные ресурсы оперативной памяти для sidecar |
256Mi |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
128Mi |
|
securityContext контейнера istio-proxy ingress |
|||
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.istio-proxy.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.istio-proxy.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
securityContext контейнера istio-proxy egress |
|||
stlr.ose.istio.egress.deployment.spec.template.spec.containers.istio-proxy.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.istio-proxy.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
securityContext pod istio-proxy ingress |
|||
stlr.ose.istio.ingress.deployment.spec.template.spec.securityContext.fsGroup |
Группа владения для подключаемых томов |
10001 |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
securityContext pod istio-proxy egress |
|||
stlr.ose.istio.egress.deployment.spec.template.spec.securityContext.fsGroup |
Группа владения для подключаемых томов |
10001 |
|
stlr.ose.istio.egress.deployment.spec.template.spec.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.egress.deployment.spec.template.spec.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
securityContext fluent-bit-sidecar ingress |
|||
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.ingress.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
securityContext fluent-bit-sidecar egress |
|||
stlr.ose.istio.egress.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
stlr.ose.istio.egress.deployment.spec.template.spec.containers.fluent-bit-sidecar.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
Параметры ресурсов CPU и MEM для vault-sidecar ingress |
|||
stlr.ose.istio.ingress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-cpu |
Лимит ресурсов ЦП для vault-agent ingress pod |
100m |
|
stlr.ose.istio.ingress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-mem |
Лимит ресурсов оперативной памяти для vault-agent ingress pod |
128Mi |
|
stlr.ose.istio.ingress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-cpu |
Запрашиваемый объем ресурсов ЦП для vault-agent ingress pod |
50m |
|
stlr.ose.istio.ingress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-mem |
Лимит ресурсов оперативной памяти для vault-agent ingress pod |
64Mi |
|
Параметры ресурсов CPU и MEM для vault-sidecar egress |
|||
stlr.ose.istio.egress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-cpu |
Лимит ресурсов ЦП для vault-agent egress pod |
100m |
|
stlr.ose.istio.egress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-mem |
Лимит ресурсов оперативной памяти для vault-agent egress pod |
128Mi |
|
stlr.ose.istio.egress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-cpu |
Запрашиваемый объем ресурсов ЦП для vault-agent egress pod |
50m |
|
stlr.ose.istio.egress.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-mem |
Лимит ресурсов оперативной памяти для vault-agent egress pod |
64Mi |
Настройка интеграции с компонентом Журналирование (LOGA) продукта Platform V Monitor (ORM)#
Совместно с сервисами компонента STLR происходит установка fluent-bit-sidecar для сбора журналов из каждого сервиса. Рекомендуемая к установке и протестированная в интеграции с STLR версия компонента Журналирование (LOGA) указана в разделе Системное программное обеспечение. Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Для настройки интеграции с компонентом LOGA необходимо задать значения параметрам, перечисленным в разделе ниже.
Настройки для конфигурации в окружение Platform V Backend#
Расположение на среде — репозиторий настройки компонента, файл stlr.fluent-bit-sidecar.all.conf.
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные или внутренние параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
Параметры ресурсов CPU и MEM для fluent-bit-sidecar |
|||
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.limits.cpu |
Стартовые ресурсы ЦП для sidecar |
200m |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.limits.memory |
Стартовые ресурсы оперативной памяти для sidecar |
512Mi |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
512Mi |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.requests.cpu |
Максимальные ресурсы ЦП для sidecar |
200m |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.requests.memory |
Максимальные ресурсы оперативной памяти для sidecar |
512Mi |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
|
Параметры подключения к Apache Kafka |
|||
fluent-bit-sidecar.kafka.bootstrap.servers |
Серверы Apache Kafka для подключения |
|
kafka_host_1:9093,kafka_host_2:9093 |
fluent-bit-sidecar.kafka.topic |
Topic Apache Kafka для подключения |
|
loga.ms.dev |
fluent-bit-sidecar.kafka.security.protocol |
Протокол подключения |
|
SSL |
Параметры логирования |
|||
fluent-bit-sidecar.ose.configmap.log.level |
Уровень журналирования fluent-bit |
info |
|
fluent-bit-sidecar.ose.configmap.stdout.enabled |
Переключатель вывода логов Istio в stdout |
false |
|
fluent-bit-sidecar.ose.configmap.stdout.format |
Формат вывода логов Istio в stdout |
json |
|
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.ports.containerPort |
Порт диагностического HTTP-сервера |
9081 |
|
fluent-bit-sidecar.ose.configmap.management.server.port |
Порт для служебных запросов получения состояния работы приложения |
8082 |
|
Сбор метрик fluent-bit-sidecar |
|||
fluent-bit-sidecar.prometheus.io.path |
Путь для сбора метрик Prometheus |
/fluent-controller/metrics/prometheus |
|
fluent-bit-sidecar.prometheus.io.port |
Динамический порт для доступа к метрикам |
|
|
fluent-bit-sidecar.prometheus.io.scrape |
Переключатель автоматического сбора метрик Prometheus |
true |
|
Сбор метрик fluent-bit-sidecar в IGEG |
|||
fluent-bit-sidecar.igeg.prometheus.io.path |
Путь для сбора метрик Prometheus |
/fluent-controller/metrics/prometheus |
|
fluent-bit-sidecar.igeg.prometheus.io.port |
Динамический порт для доступа к метрикам |
|
|
fluent-bit-sidecar.igeg.prometheus.io.scrape |
Переключатель автоматического сбора метрик Prometheus |
true |
|
Настройка диагностического http сервера fluent-bit |
|||
fluent-bit-sidecar.ose.configmap.fluent-controller.http.port |
Порт HTTP интерфейса контроллера |
8082 |
|
fluent-bit-sidecar.ose.configmap.fluent-controller.igeg.http.port |
Специальный порт HTTP интерфейса для определённой конфигурации Fluent Controller (IGEG) |
8888 |
|
fluent-bit-sidecar.ose.configmap.rdkafka.enable.ssl.certificate.verification |
Переключатель SSL-проверки сертификата Kafka брокера |
false |
|
fluent-bit-sidecar.ose.configmap.rdkafka.queue.buffering.max.kbytes |
Максимальный размер буферизируемых сообщений Kafka в килобайтах |
5120 |
|
fluent-bit-sidecar.ose.configmap.rdkafka.sticky.partitioning.linger.ms |
Задержка отправки пакетов при sticky partitioning Kafka |
4000 |
|
Перезагрузка fluent-bit при изменении конфигурации |
|||
fluent-bit-sidecar.ose.configmap.conf.reload.enabled |
Переключатель перезагрузки fluent-bit при изменении конфигурации |
true |
|
Интеграция fluent-bit через fluent-controller с vault для получения и обновления секретов |
|||
fluent-bit-sidecar.ose.configmap.vault.enabled |
Флаг включения интеграции с хранилищем секретов Vault |
|
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.uri |
Адрес URI подключения к Vault |
|
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.namespace |
Пространство имен метода автоматической аутентификации Vault |
|
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.authentication |
Способ аутентификации в Vault |
kubernetes |
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.config.role |
Роль для аутентификации в Vault |
|
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.mount_path |
Путь монтирования метода аутентификации Vault |
|
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.maxAttempts |
Количество попыток подключения к Vault |
10 |
|
fluent-bit-sidecar.ose.configmap.fluent-controller.vault.certificates.ttl |
Срок жизни выданных сертификатов Vault |
30d |
|
fluent-bit-sidecar.ose.configmap.fluent-controller.secman.ssl.enabled |
Переключатель поддержки SSL/TLS в управлении безопасностью |
true |
Настройка интеграции с компонентом One-Time Password (OTP) / OTT (OTTS) продукта Platform V One-Time-Token (OTT)#
Для аутентификации и авторизации межсервисных взаимодействий необходима интеграция с компонентом OTTS.
Совместно с сервисами компонента STLR происходит установка ott-sidecar для аутентификации и авторизации при межсервисных взаимодействиях каждого сервиса.
Рекомендуемая к установке и протестированная в интеграции с STLR версия компонента OTTS указана в разделе Системное программное обеспечение.
Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Расположение на среде — репозиторий настройки компонента, файл stlr.ott-sidecar.all.conf.
Для настройки интеграции с компонентом OTTS необходимо задать значения параметрам, перечисленным в разделе ниже.
Общие настройки#
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные или внутренние параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
stlr.ott.sidecar.deploy |
Признак, указывающий на включение интеграции с компонентом OTTS. Если сервис ранее был установлен с OTTS, чтобы отключить интеграцию, необходимо установить данный признак в «false» и удалить конфигурации OTTS из проекта (Kubernetes, OpenShift (опционально)) |
|
true |
stlr.istio.all.conf параметры для конфигурации IGEG для обращения ОТТ в сервис аудита |
|||
stlr.platform.ott.audit.host |
Адрес хоста для интеграции с сервисом аудита |
|
ift3-std-mtls-audit2-proxy.apps.ocp.ift-01.solution.sbt |
stlr.platform.ott.audit.port |
Порт хоста для интеграции с сервисом аудита |
|
443 |
stlr.platform.ott.audit.protocol |
Протокол для интеграции с сервисом аудита |
|
HTTPS |
ott-sidecar.log.level |
Уровень логирования сервиса |
warn |
|
ott-sidecar.root.log.level |
Корневой уровень логирования |
error |
|
Параметры ресурсов CPU и MEM для istio-egress |
|||
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.cpu |
Стартовые ресурсы ЦП для sidecar |
550m |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.memory |
Стартовые ресурсы оперативной памяти для sidecar |
1024Mi |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
1Gi |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.cpu |
Максимальные ресурсы ЦП для sidecar |
300m |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.memory |
Максимальные ресурсы оперативной памяти для sidecar |
512Mi |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
|
securityContext контейнера ott-sidecar |
|||
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
ott-sidecar.ose.istio.egress.deployment.spec.template.spec.containers.ott-sidecar.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
Параметры ресурсов CPU и MEM для istio-ingress |
|||
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.cpu |
Стартовые ресурсы ЦП для sidecar |
1200m |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.memory |
Стартовые ресурсы оперативной памяти для sidecar |
2048Mi |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.limits.ephemeral-storage |
Лимит для ephemeral-storage, задается в байтах |
1Gi |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.cpu |
Максимальные ресурсы ЦП для sidecar |
700m |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.memory |
Максимальные ресурсы оперативной памяти для sidecar |
1024Mi |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.resources.requests.ephemeral-storage |
Стартовый объем ephemeral-storage, задается в байтах |
256Mi |
|
securityContext контейнера ott-sidecar |
|||
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.securityContext.runAsUser |
UID, используемый для запуска контейнера |
10001 |
|
ott-sidecar.ose.istio.ingress.deployment.spec.template.spec.containers.ott-sidecar.securityContext.runAsGroup |
GID, используемый для запуска контейнера |
10001 |
|
Параметры readinessProbe |
|||
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.readinessProbe.failureThreshold |
Количество неуспешных readiness-проб для вывода pod из балансировки |
30 |
|
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.readinessProbe.initialDelaySeconds |
Задержка перед первой проверкой readiness-пробой, в секундах |
3 |
|
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.readinessProbe.periodSeconds |
Интервал между readiness-пробами, в секундах |
1 |
|
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.readinessProbe.successThreshold |
Количество успешных readiness-проб для ввода pod в балансировку |
1 |
|
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.readinessProbe.timeoutSeconds |
Максимальное время ожидания результата readiness-пробы, в секундах |
3 |
|
Параметры One-Time Password (OTP) / OTT |
|||
ott-sidecar.ose.configmap.application.attribute.id |
Атрибут контекста авторизации, в котором передается идентификатор приложения/namespace в One-Time Password (OTP) / OTT |
urn:sbrf:names:pprb:1.0:module:id |
|
ott-sidecar.ose.configmap.client.mmt.compatibility.mode |
Режим совместимости с ММТ 3-го поколения. |
false |
|
ott-sidecar.ose.configmap.client.mmt.action.attrid |
Идентификатор действия в ММТ 3 |
urn:sbrf:names:pprb:1.0:action:id |
|
ott-sidecar.ose.configmap.client.mmt.resource.attrid |
Идентификатор ресурса в ММТ 3 |
urn:sbrf:names:pprb:1.0:api:interface:fullname |
|
ott-sidecar.ose.configmap.client.default.realm |
Realm авторизации по умолчанию для обычных токенов |
mmt |
|
ott-sidecar.ose.configmap.module.id |
Идентификатор приложения в OTTS с учетом регистра |
stlr |
|
ott-sidecar.ose.configmap.egress.oper.mode |
Режим работы фильтра OTTS в egress контроллере |
sign |
|
ott-sidecar.ose.configmap.ingress.oper.mode |
Режим работы фильтра OTTS в ingress контроллере |
validate |
|
ott-sidecar.ose.configmap.authz.realm |
Realm авторизации для получения аварийных токенов |
ott |
|
ott-sidecar.ose.configmap.hosts |
Адреса серверов OTTS |
|
ott-service.otts-std-ift3.ingress.apps.ocp.ift-01.solution.sbt |
ott-sidecar.ose.configmap.url |
URL к OTTS |
|
https://stub-host:stub-port/ott-service/rest/token |
ott-sidecar.ose.configmap.anonymous.requests.enabled |
Признак, указывающий на разрешение анонимных запросов. Если „true“, то проверка токена не проводится |
true |
|
ott-sidecar.ose.configmap.audit.enabled |
Включение/отключение отправки событий аудита. |
true |
|
ott-sidecar.ose.configmap.egw.audit2-moduleid |
Идентификатор модуля для поиска событий ott-sidecar установленного в egress |
stlr-ott-egress |
|
ott-sidecar.ose.configmap.hotreload.delay.max |
Верхняя граница ожидания перед обновлением secrets |
5 |
|
ott-sidecar.ose.configmap.hotreload.delay.min |
Нижняя граница ожидания перед обновлением secrets, мс |
1 |
|
ott-sidecar.ose.configmap.hotreload.enabled |
Включение/отключение использования hotreload |
true |
|
ott-sidecar.ose.configmap.hotreload.reaction.strategy |
Стратегия обновления |
safe |
|
ott-sidecar.ose.configmap.hotreload.retry.read.attempts |
Количество попыток обновления secrets |
5 |
|
ott-sidecar.ose.configmap.hotreload.secret.limit.window |
Интервал после обновления, в течение которого приложение ожидает его завершения после обновления secrets, мс |
4 |
|
ott-sidecar.ose.configmap.hotreload.secret.refreshing.window |
Если в течение данного интервала файл с секретами поменяется несколько раз, то запустится процедура обновления секретов, мс |
3 |
|
ott-sidecar.ose.configmap.hotreload.sleep.index |
Коэффициент, который определяет продолжительность времени ожидания приложения - REFRESHING_WINDOW * SLEEP_INDEX |
10 |
|
ott-sidecar.ose.configmap.http.port |
Порт для readiness-пробы |
8085 |
|
ott-sidecar.ose.configmap.igw.audit2-moduleid |
Идентификатор модуля для поиска событий ott-sidecar установленного в ingress |
stlr-ott-ingress |
|
ott-sidecar.ose.configmap.ott.client.billing.account |
Идентификатор инсталляции платформы для метрики биллинга TokenRequestCount на сервере |
platformv:stlr:1 |
|
ott-sidecar.ose.configmap.service.client.trusted.crt.rate |
Период обновления кеша сертификатов серверов OTT, в секундах (при подключении к OTT серверу 4.3.1+) |
30 |
|
ott-sidecar.ose.istio.egress.audit-gw-port |
Внутренний порт для сервиса аудита |
9194 |
|
ott-sidecar.ose.istio.egress.audt-context_path_without_ott |
Контекст обращения к сервису аудита с пода ingress |
|
/push/project/ms-audt/pipeline/audit-pipe-client-egress |
ott-sidecar.ose.istio.ingress.audt-context_path_without_ott |
Контекст обращения к сервису аудита с пода egress |
|
/push/project/ms-audt/pipeline/audit-pipe-client-egress |
ott-sidecar.prometheus.io.scrape |
Переключатель сбора метрик unimon-agent |
false |
|
ott-sidecar.ssl.ose.keyStore.ott.certAlias |
Алиас клиентского сертификата |
|
stlr |
ott-sidecar.ose.configmap.egress.authz.version |
Версия механизма авторизации egress |
3.0 |
|
ott-sidecar.ose.configmap.ingress.authz.version |
Версия механизма авторизации ingress |
3.0 |
|
ott-sidecar.ose.configmap.inbound-max-msg-size |
Максимальный размер передаваемого сообщения, указывается в Мб |
4 |
|
ott-sidecar.ose.configmap.service.tls.crt.hard.validation |
Переключатель. Если „false“, то при наличии в трастовом хранилище OTT Sidecar истекших сертификатов не прерывается работа |
false |
|
ott-sidecar.ose.configmap.start-wait-millis |
Время, которое должен ждать sidecar перед запуском (миллисекунды) |
0 |
|
Параметры включения авторизации на провайдере |
|||
ott-sidecar.ose.configmap.egress.authz.provider.mode.enable |
Переключатель режима авторизации egress |
false |
|
ott-sidecar.ose.configmap.ingress.authz.provider.mode.enable |
Переключатель режима авторизации ingress |
false |
Если в инсталляции не будет настроена интеграция с системой управления секретами, то необходимо сконфигурировать сертификаты для mTLS с OTT.
Следует создать kind Secret c именем stlr-secret-ott-certs, определить в нем сертификаты.
Наименование сертификата в секрете |
Описание параметра |
|---|---|
Клиентский сертификат One-Time Password (OTP) / OTT |
|
ott-service-client.crt |
Сертификат OTTS |
ott-service-client.key |
Ключ от сертификата OTTS |
Доверенные сертификаты One-Time Password (OTP) / OTT |
|
root.crt |
Корневой сертификат удостоверяющего центра |
Настройка интеграции с компонентом Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (ORM)#
В данном руководстве не описывается процесс установки агента Объединенный мониторинг Unimon (MONA), так как используется pull-модель. Дистрибутив STLR не содержит в себе средства тиражирования метрик. Дистрибутив Объединенный мониторинг Unimon (MONA) поставляется отдельно. Потребитель оставляет за собой право выбрать любой способ установки, предложенный компонентом Deploy tools (CDJE). Подробнее о вариантах установки описано в документе «Руководство по установке» компонента Объединенный мониторинг Unimon (MONA). Рекомендуемая к установке и протестированная в интеграции с STLR версия указана в разделе Системное программное обеспечение.
Настройка интеграции с компонентом Единый коллектор телеметрии (COTE) продукта Platform V Monitor (OPM)#
Рекомендуемая к установке и протестированная в интеграции с STLR версия компонента COTE указана в разделе Системное программное обеспечение. Файлы конфигурирования расположены в дистрибутиве, подробнее в разделе «Состав дистрибутива».
Для настройки интеграции с компонентом COTE необходимо задать значения параметрам, перечисленным в разделе ниже.
Настройки для конфигурации#
Расположение на среде — репозиторий настройки компонента, файл stlr.istio.all.conf
Наименование параметра в файле конфигурирования |
Описание параметра |
Глобальные или внутренние параметры |
Пример значения или значение по умолчанию |
|---|---|---|---|
stlr.platform.audit.host |
Host подключения к компоненту COTE |
|
ott.telemetry-collector-push-cpvm.apps.ocp.ift-01om.solution.sbt |
stlr.platform.audit.port |
Port подключения к компоненту COTE |
443 |
|
stlr.platform.audit.protocol |
Протокол подключения к компоненту COTE |
HTTPS |
|
stlr.platform.audit.egress.ose.vs.spec.http.retries.attempts |
Количество повторных запросов в случае ошибки |
10 |
|
stlr.platform.audit.egress.ose.vs.spec.http.retries.perTryTimeout |
Максимальное время ожидания одной попытки |
2s |
|
stlr.platform.audit.egress.ose.vs.spec.http.timeout |
Общее максимальное время ожидания выполнения запроса |
5s |
|
stlr.platform.audit.context_path |
Контекст для обращения к компоненту COTE |
|
/push/project/ms-audt/split-by-ott/v2 |
Состав дистрибутива#
Дистрибутив компонента STLR представляет собой несколько ZIP-архивов:
архив с конфигурациями:
Файл / директория |
Описание |
|---|---|
|
Содержит параметры приложения и подключаемых сервисов. Часто заполняется глобальными параметрами, зависящими от окружения |
|
Содержит набор конфигураций (helm charts), которые используются для развертывания в (Platform V DropApp (K8S) / Kubernetes / Red Hat OpenShift — опционально) |
|
Файл, описывающий значения переменных компонента, используемых утилитой миграции (включает в себя настраиваемые параметры и переключатели) |
|
Файл с метаописанием процесса развертывания Jenkins CD |
|
Файл с метаописанием процесса сборки бинарного дистрибутива Jenkins CI |
|
Файл с метаописанием процесса сборки конфигурационного дистрибутива Jenkins CI |
архив с бинарными файлами:
Директория |
Описание |
|---|---|
|
Содержит PL приложения |
|
Содержит BH приложения |
|
Содержит служебные файлы для сборки/пересборки образов |
Примечание: Для данной установки может возникнуть необходимость корректировки параметров настроек.
Более подробно процесс конфигурирования описан в документе «Руководство по системному администрированию».
Ручная установка#
Подготовка дистрибутива компонента к развертыванию#
Распаковка#
Распакуйте дистрибутив продукта.
В распакованном архиве распакуйте архив с набором скриптов Delivery tool lite ( stlr-scripts-***-distrib.zip), далее — DTL.
Подготовка DTL#
В корневой директории с дистрибутивом экспортируйте путь до скриптов в переменную:
export PYTHONPATH=/path-to/delivery-tool-lite
Авторизуйтесь в хранилище образов:
docker login your-repository -u username
Сгенерируйте
build_config.jsonc описанием образов через скрипт без параметров:
python3 /path-to/delivery-tool-lite/src/scripts/build_product.py --dryrun
Проставьте теги для образов контейнеров (поле
tags), как указано в примере ниже:
{
"stlr-backend:<Хеш образа контейнера>": {
"image_name": "stlr-backend",
"tags": [
"<тег>"
],
"build": {
"build_args": {},
"context": "stlr-bin-<версия дистрибутива>-distrib/package",
"registries": []
},
"push": {
"registries": []
},
"image_path": ""
},
"stlr-frontend:<Хеш образа контейнера>": {
"image_name": "stlr-frontend",
"tags": [
"тег"
],
"build": {
"build_args": {},
"context": "stlr-bin-<версия дистрибутива-distrib/package",
"registries": []
},
"push": {
"registries": []
},
"image_path": ""
}
},
"registries_pull": [],
"registries_push": []
}
Запуск DTL#
Запустите скрипт
build_product.pyc параметрами:
--config_path— сгенерированный ранее файл конфигурацииbuild_config.jsonс описанием образов;--registry— корень репозитория образов;--user— имя пользователя для авторизации в репозитории образов;--password— пароль пользователя;--push_images— флаг для указания того, что образы будут отправляться в репозитории;--registry_path— путь до конкретной точки хранения образов относительно корня.
python3 /path-to/delivery-tool-lite/src/scripts/build_product.py --config_path 'build_config.json' --registry 'your_registry' --user 'login' --password 'pass' --push_images 'true' --registry_path 'your_registry_path'
После отработки скрипта проверьте в файле
report_info.jsonпорядок изменения хешей образов и дополнительную информацию:
cat report_info.json
В файле report_info.json (поле file в блоке images_autosubstitution)
можно увидеть, что произошла замена хешей самих deployment.yaml.
Если необходимо получить только образы локально, запустите скрипт только с файлом конфигурации:
python3 /path-to/delivery-tool-lite/src/scripts/build_product.py --config_path 'build_config.json'
Затем проверьте образы:
docker images
Подготовка и запуск установки в кластер оркестрации#
Получите архив с конфигурацией продукта. При работе скрипта DTL была создана папка owned, куда были скопированы и распакованы архивы bin и conf.
В соответствии с инфраструктурой, в которой разворачивается компонент, укажите данные в файлах
values.yamlдля Helm-чартов:
Для STLR-backend (файл конфигурации — /owned/stlr-conf-***-distrib/package/conf/helm/application/stlr-backend/values.yaml):
в блоке #Common укажите данные репозитория:
registry (корень репозитория образов);
registry_path_stlr (путь до точки хранения образов относительно корня).
в блокe #ConfigMap укажите данные для подключения к БД:
HOST(FQDN или IP-адрес сервера баз данных);
PORT (порт подключения к БД);
dbname (имя БД);
schema (схема БД). `
в блоке #Ingress укажите адрес для доступа в UI:
spec.rules.host: адрес для доступа в UI.
Для STLR-frontend (файл конфигурации — /owned/stlr-conf-***-distrib/package/conf/helm/application/stlr-frontend/values.yaml):
в блоке #Common:
registry (корень репозитория образов);
registry_path_stlr (путь до точки хранения образов относительно корня).
Убедитесь, что вход в нужный кластер и namespace настроены.
Если в инсталляции не настроена интеграция с системой управления секретами, то необходимо сконфигурировать клиентские сертификаты для БД(опционально) и указать секрет с логином/паролем от БД.
Создайте kind Secrets c именами stlr-secret-db-cert.unver и secret-stlr.unver. Определите:
в stlr-secret-db-cert.unver — tls.crt и tls.key;
в secret-stlr.unver — DB_USERNAME и DB_PASSWORD.
В папке
/owned/stlr-conf-***-distrib/package/conf/helm/application/запустите команды:
helm install stlr-backend имя_релиза или --generate-name
helm install stlr-frontend имя_релиза или --generate-name
Автоматизированная установка с использованием программного продукта Platform V DevOps Tools (DOT)#
Для работы с STLR необходимо выполнить ряд подготовительных действий, включая подготовку КТС. Подготовка КТС требует получения кластера БД и namespace Kubernetes / Platform V DropApp (K8S) / Red Hat OpenShift (опционально).
Перед развертыванием STLR необходимо выполнить установку сервисов и инфраструктурных компонентов Platform V. Для этого следует следовать инструкциям по установке, предоставленным для каждого конкретного сервиса или инфраструктурного компонента.
Подготовка#
Создание репозитория конфигураций#
Создайте репозиторий для миграции и хранения конфигураций компонента STLR. Репозиторий создается в той же проектной области, где находится common-репозиторий продукта DOT.
Common-репозиторий — git-репозиторий глобальных настроек (переменных), которые используются всеми компонентами Platform V в рамках блока/контура.
Имя репозитория хранения конфигураций компонента рекомендуется формировать по маске \<PREFIX\>_\<CHANNEL\>_\<FPI_NAME\>_\<ENVIR\>\[_\<REPO_BLOCK_ID\>\], где:
PREFIX— префикс;CHANNEL— сегмент или инсталляция;FPI_NAME— stlr (должно совпадать со значением параметра fpi_name в subsystem.json репозитория глобальных параметров — common);ENVIR— окружение, тип стенда (например: dev, st, ift, nt, psi и т. п.);REPO_BLOCK_ID— блок/контур (например: b1, sb_sk и т. п.), в случае блочной структуры хранения конфигурации.
Значение параметров определяются в соответствии с конфигурацией DOT.
В созданном репозитории создайте ветку \<BRANCH_NAME\> , где «BRANCH_NAME» — наименование ветки репозитория.
Для развертывания компонента необходимо наличие 3-х репозиториев:
common – репозиторий глобальных параметров (может быть общим для стенда);
репозиторий настройки компонента STLR;
репозиторий скриптов pipeline компонента CDJE.
Примечание: У ТУЗ (технологическая учетная запись), которая используется для развертывания, должны быть права на запись во все три указанных репозитория.
Конфигурация common-репозитория#
Для установки компонента STLR необходимо внести информацию в общий репозиторий стенда, добавив специфичные для компонента параметры или изменив текущие настройки.
Для этого выполните следующие действия:
В файл
subsystems.jsonдобавьте блок настроек для возможности установки STLR инструментами CDJE. Ниже приведен пример минимальной конфигурации для указанной версии компонента CDJE.
Примечание: Дополнительные сведения о версиях смотрите в разделе «Системные требования». Если используется другая версия компонента CDJE, то для получения актуального набора параметров следует обратиться к документации компонента CDJE.
{
"STLR": { // наименование компонента
"nexus_host": "<заполнить>", // HOST nexus-репозитория
"nexusPathToArtifact": "<заполнить>", // путь до артефакта
"nexus_repo": "<заполнить>", // наименование Nexus-репозитория
"groupId": "<заполнить>",
"artifactId": "<заполнить>", // идентификатор maven-артефакта
"fpType": "bts", // тип компонента
"fpi_name": "stlr", // идентификатор компонента
"serviceName": "stlr",
"strict": "true",
"versionFilter": "D-01", // регулярное выражения для фильтрации версий артефактов
"repoFullName": "<заполнить>", // репозиторий конфигурации
"fpi_name_ose": "<заполнить>", // наименование созданного namespace
"registryPath": "<заполнить>", // базовый путь до каталога с образами STLR
}
}
Примечание: Чтобы отобразить запись в поле подсистемы Job Deploy в Jenkins, после добавления в репозиторий требуется провести реконфигурацию задачи Deploy путем запуска без выбора параметров.
В common-репозиторий добавьте конфигурации подключения к базе данных STLR в файле
installer/system/efs/config/parameters/_global.jdbc.conf. Измените наименование как в конфигурации, так и в common-репозитории.
node.stlr_postgres.url=<URL подключения к БД Postgres>
node.stlr_postgres.servers= <Параметры для postgres (dns:ip:external_port:external_protocol:internal_port:internal_protocol;...;...)>
В common-репозиторий в файл
ansible/common.conf.ymlдобавьте путь до реестра образов контейнеров:
registry: "<адрес docker registry>"
registry_path: "{{ fpConfig.registryPath }}"
В common-репозиторий в файл
environment.jsonдобавьте сценарии HELM_DEPLOY и HELM_UNDEPLOY:
{
"playbooks_fpi": {
"HELM_DEPLOY": {
"id": 97
},
"HELM_UNDEPLOY": {
"id": 98
}
}
}
Настройка необходимых утилит Helm и kubectl производится в файле
environment.json
{
"<Секция стенда>": {
"initToolList": {
"kubectl": {
"tool": "kubectl_v1.18"
},
"helm": {
"tool": "helm-v3.8.0"
}
}
}
}
Более подробная информация о конфигурировании компонента представлена в документе «Руководство по системному администрированию».
Создание и настройка секретов и сертификатов#
STLR поддерживает два метода хранения секретов и сертификатов:
в хранилище системы управления секретами;
в контейнеризированной среде.
При использовании контейнеризированной среды требуется выпуск и конфигурирование:
сертификатов SSL для взаимодействия с базой данных;
сертификатов mTLS;
сертификатов для OTTS.
Перед установкой STLR выпустите следующие сертификаты:
Сертификаты для OTTS. Для взаимодействия с компонентом OTTS выпустите сертификаты для инсталляции, где будет производиться установка STLR. Более подробная информация о OTT-сертификатах приведена в руководстве по установке компонента OTTS продукта Platform V Backend.
Сертификаты mTLS. Если в стандартной конфигурации STLR настроен mTLS, необходимо выпустить egress- и ingress-сертификаты для блока/контура, где будет производиться установка STLR.
Сертификаты для SSL-взаимодействия с базой данных. Если в стандартной конфигурации STLR используется SSL-взаимодействие с базой данных, необходимо проверить наличие сгенерированных серверных сертификатов в директории
/home/postgres/ssl. При их отсутствии следует сгенерировать серверные сертификаты. Также необходимо сгенерировать клиентский сертификат с использованием корневых сертификатов и, при необходимости, осуществить его подписание в удостоверяющем центре. Корневой и клиентский сертификаты должны быть помещены в защищенное хранилище сертификатов, а их параметры — переданы в соответствующие конфигурации STLR.
Создание namespace в среде контейнеризации#
Создайте namespace в кластере Kubernetes / Platform V DropApp (K8S) / Red Hat OpenShift (опционально), который будет служить средой для создания объектов, необходимых для работы STLR. Требования к ресурсам для данного namespace описаны в разделе «Требования к ресурсам среды контейнеризации». После создания namespace, при необходимости, его можно подключить к продукту SSM.
Создание пользователя и схемы БД#
Для создания пользователя и схемы в базе данных выполните скрипт, используя один из приведенных ниже примеров (в зависимости от окружения).
Пример:
create user stlr with encrypted password '<пароль>';
create schema stlr;
grant connect on database <DB_NAME> to stlr;
grant all on schema stlr to stlr;
alter user stlr VALID UNTIL 'INFINITY';
grant usage on schema stlr to stlr;
В указанных примерах параметр DB_NAME представляет собой имя базы данных.
Примечание: Рекомендуемое значение параметра для базы данных —
max_connection=200;
Выполнение установки#
Для установки STLR необходимо выполните следующие действия при запуске Job-развертывания:
Установите параметры сборки:
SUBSYSTEM: STLR;
COMPONENTS: Основная ФП STLR;
DISTRIB_VERSION: <выбрать версию дистрибутива>;
OSE_CLUSTERS: <выбрать кластер K8S или OSE>;
Репозиторий/ветка с настройками ФП: <основная ветка конфигурации в соответствии с настройками STLR>;
PARAMS (набор playbook): <из таблицы ниже>.
Название |
Описание |
|---|---|
MIGRATION_FP_CONF |
Миграция конфигурационных файлов |
HELM_DEPLOY |
Установка helm релиза |
Набор возможных сценариев зависит от конфигурации инструментов STLR.
Запустите сборку, нажав кнопку Build.
После завершения выполнения сборки проверьте, что в логах отсутствуют ошибки.