Установка#

Конфигурирование при автоматизированной установке#

Для автоматизированной установки компонента 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* и AUTH *

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, хранящихся в среде

{{ lookup('custom_vars', 'global.revisionHistoryLimit', default='2') }}

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, которое может быть развернуто сверх запланированного во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxSurge') }}

0%

stlr.backend.ose.deployment.spec.strategy.rollingParams.maxUnavailable

Максимально допустимое количество pods, недоступное во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxUnavailable') }}

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-{{ lookup('custom_vars', 'distrib.release.version') }}

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

Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля

{{ lookup('custom_vars', 'global.poddisruptionbudget.minAvailable', default='50%') }}

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://vm-uifw-ui-psql-297.vdc01.ui.dev.sbt:5432/styler

{{ lookup('custom_vars', 'node.stlr_postgres.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://{{ lookup('custom_vars', 'global.platform.iam.jwks.core.host') }}:{{ lookup('custom_vars', 'global.ose.platform.egress.http.port') }}/auth

http://host:7070/auth

stlr.backend.iam.keycloak.baseurl

Внешний URL хоста IAM Proxy(AUTH)/KeyCloak.SE (KCSE)

https://{{ lookup('custom_vars', 'global.platform.iam.jwks.core.host') }}

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://{{ lookup('custom_vars', 'global.platform.iam.jwks.core.host') }}:{{ lookup('custom_vars', 'global.ose.platform.egress.http.port') }}/auth

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, хранящихся в среде

{{ lookup('custom_vars', 'global.revisionHistoryLimit', default='2') }}

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, которое может быть развернуто сверх запланированного во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxSurge') }}

0%

stlr.frontend.ose.deployment.spec.strategy.rollingParams.maxUnavailable

Максимально допустимое количество pods, недоступное во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxUnavailable') }}

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-{{ lookup('custom_vars', 'distrib.release.version') }}

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

Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля

{{ lookup('custom_vars', 'global.poddisruptionbudget.minAvailable', default='50%') }}

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

{{ lookup('custom_vars', 'global.platform.iam.jwks.core.host') }}

vm-fstd-ui-iam-216.vdc01.ui.dev.sbt

stlr.platform.iam.keycloak.port

Порт подключения к AUTH

{{ lookup('custom_vars', 'global.platform.iam.jwks.core.port') }}

8443

stlr.platform.iam.keycloak.protocol

Протокол подключения к AUTH

{{ lookup('custom_vars', 'global.platform.iam.jwks.core.protocol') }}

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

Серверный сертификат

pki

да

Сертификаты доверенных УЦ

kv

да

ott-sidecar

Клиентский сертификат OTTS

pki

да

Сертификаты доверенных УЦ

kv

да

fluent-bit-sidecar

Клиентский сертификат

pki

нет

Сертификаты доверенных УЦ

kv

нет

egress

istio-proxy

Клиентский сертификат

pki

да

Сертификаты доверенных УЦ

kv

да

ott-sidecar

Клиентский сертификат OTTS

pki

нет

Сертификаты доверенных УЦ

kv

да

strl-backend

strl-backend

Клиентский сертификат для подключения к БД

pki

да

Имя пользователя и пароль от схемы БД

kv

да

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

Хост хранилища секретов

{{ lookup('custom_vars', 'global.platform.secret.host') }}

secman-dzo.solution.sbt

stlr.vault.port

Порт хранилища секретов

{{ lookup('custom_vars', 'global.platform.secret.port') }}

8443

stlr.vault.protocol

Протокол хранилища секретов

{{ lookup('custom_vars', 'global.platform.secret.port', default='443') }}

stlr.vault.egress.gw.port

Egress gateway порт для обращения в хранилище секретов

8550

Настройки vault-agent- файл stlr.vault.all.conf

stlr.vault.tenant

Имя ресурса проекта (тенант) / пространство секретов

{{ lookup('custom_vars', 'global.platform.secret.tenant') }}

DEV_DZO

stlr.vault.role

Имя роли для доступа к секретам

{{ lookup('custom_vars', 'global.platform.secret.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 серверного сертификата

{{ lookup('custom_vars', 'stlr.ose.istio.ingress.route.spec.host.https.appFQDN') }}

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}

$__vault{kv:{{ lookup('custom_vars', 'stlr.vault.secret.rootCertsPath')  regex_replace('(.*)\\/(.+)$', '\\1:\\2') }}:{{ lookup('custom_vars', 'stlr.vault.secret.truststore.pem') }}}

stlr.vault.secret.kafka.pki.path

Путь к секрету kafka

{{ lookup('custom_vars', 'stlr.vault.secret.pki.baseEngineMountPath') }}{{ lookup('custom_vars', 'stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.name') }}

stlr.vault.secret.kafka.sslcert

Полный путь до сертификата SSL

{{ lookup('custom_vars', 'stlr.vault.secret.kafka.pki.path') }}:{{ lookup('custom_vars', 'stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.client.role') }}:{{ lookup('custom_vars', 'stlr.ose.configmap.certificate.client.cn') }}:certificate}

stlr.vault.secret.kafka.sslkey

Полный путь до приватного ключа SSL

{{ lookup('custom_vars', 'stlr.vault.secret.kafka.pki.path') }}:{{ lookup('custom_vars', 'stlr.ose.configmap.vault.hashicorp.com.secret.engine.pki.client.role') }}:{{ lookup('custom_vars', 'stlr.ose.configmap.certificate.client.cn') }}:private_key}

Файл 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

{{ (lookup('custom_vars', 'stlr.ose.istio.vault.agent-inject-custom-listener')string).split(':')[1] }}

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 для хранения сертификатов, секрет должен содержать следующие ключи:

Ключ

Описание

ca_chain

Cертификаты доверенных УЦ

certificate

Cертификат

issuing_ca

Cертификат издателя

private_key

Приватный ключ

Сертификаты должны быть представлены в формате 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

Имя пользователя

DB_PASSWORD

Пароль

Пример содержимого секрета с учетной записью:

{
    "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) для отключаемого ТУЗ. Для этого нужно выполнить следующие шаги:

  1. Ротация секрета на стороне Secret Management System типа логин/пароль, используемого для аутентификации в СУБД, производится администраторами путем замены ТУЗ в KV Engine:

    • Создаются две ТУЗ с пересекающимися сроками действия пароля (grace period - пересечение сроков действия паролей, когда действуют обе ТУЗ. Используется для плавной замены ТУЗ).

    • В KV Secrets Engine указываются логин, пароль и срок действия (TTL) первой ТУЗ.

  2. При наступлении grace period в KV Secrets Engine указываются логин, пароль и срок действия (TTL) второй ТУЗ (в этот момент могут использоваться обе ТУЗ).

  3. Далее ТУЗ меняются с предварительной сменой пароля.

  4. Для смены пароля ТУЗ можно настроить использование статических ролей Database Secrets Engine:

    • Для каждой ТУЗ создается статическая роль.

    • Для роли настраивается политика генерации паролей.

    • Для смены пароля ТУЗ выполняется операция ротации, которая генерирует новый пароль и обновляет его в СУБД для ТУЗ.

  5. После выполнения операции ротации логин, новый пароль и срок действия пароля (TTL) ТУЗ указываются в KV Secrets Engine.

Примечание.

Для исключения проблем при обновлении secret ТУЗ СУБД рекомендуется отказаться от аутентификации через ТУЗ и перейти на аутентификацию по сертификату.

  1. При наступлении grace period в KV Secrets Engine указываются логин, пароль и срок действия (TTL) второй ТУЗ (в этот момент могут использоваться обе ТУЗ).

  2. Далее ТУЗ меняются с предварительной сменой пароля.

  3. Для смены пароля ТУЗ можно настроить использование статических ролей Database Secrets Engine:

    • Для каждой ТУЗ создается статическая роль.

    • Для роли настраивается политика генерации паролей.

    • Для смены пароля ТУЗ выполняется операция ротации, которая генерирует новый пароль и обновляет его в СУБД для ТУЗ.

  4. После выполнения операции ротации логин, новый пароль и срок действия пароля (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

Уровень логирования сервиса

{{ lookup('custom_vars', 'global.platform.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

{{ lookup('custom_vars', 'global.multiClusters.openshiftControlPlaneProject') }}

sbt-syn-cp-02

stlr.ose.istio.control-plane-istiod-service

Имя сервиса istiod

{{ lookup('custom_vars', 'global.multiClusters.openshiftControlPlaneIstiodService') }}

istiod-basic

stlr.ose.istio.control-plane-istiod-port

Порт сервиса istiod

{{ lookup('custom_vars', 'global.multiClusters.openshiftControlPlaneIstiodPort') }}

15012

stlr.ose.istio.control-plane-jaeger-service

Имя сервиса jaeger-service

{{ lookup('custom_vars', 'global.multiClusters.openshiftControlPlaneJaegerService') }}

jaeger-collector

stlr.ose.istio.control-plane-jaeger-port

Порт сервиса jaeger-service

{{ lookup('custom_vars', 'global.multiClusters.openshiftControlPlaneJaegerPort') }}

9411

Параметры подключения к Kafka LOGA

stlr.ose.istio.egress.logger.kafka.servers

Перечень серверов Kafka для интеграции с LOGA

{{ lookup('custom_vars', 'global.platform.logger.kafka.servers') }}

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

{{ lookup('custom_vars', 'global.platform.logger.kafka.security.protocol') }}

SSL

Параметры подключения к БД

stlr.ose.istio.egress.node.postgres.servers

Список серверов БД

{{ lookup('custom_vars', 'node.stlr_postgres.servers') }}

db_host_1:db_ip_1:5432:TCP:15432:TCP

stlr.ose.istio.ingress.route.spec.host.https.appFQDN

FQDN для обращения к сервису

stlr-{{ lookup('custom_vars', 'distrib.release.version') }}-{{ lookup('custom_vars', 'global.multiClusters.openshiftNewRoute') }}

stlr-unver.apps.dap.dev.sbt.ru

stlr.ose.istio.ingress.route.spec.host.https-healthcheck.appFQDN

Доменный адрес приложения для проверки его работоспособности через HTTPS

healthcheck-stlr-{{ lookup('custom_vars', 'distrib.release.version') }}-{{ lookup('custom_vars', 'global.multiClusters.openshiftNewRoute') }}

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-{{ lookup('custom_vars', 'global.multiClusters.openshiftProjectName') }}

stlr-ingress-unver-namespace-name

agent.ose.istio.all.common.ingressIstioSelector

Имя селектор для сервиса ingress gateway

stlr-ingress-unver-{{ lookup('custom_vars', 'global.multiClusters.openshiftProjectName') }}

stlr-ingress-unver-namespace-name

Параметры селектора Egress

agent.ose.istio.all.common.egressAppSelector

Имя селектор для сервиса egress gateway

stlr-egress-unver-{{ lookup('custom_vars', 'global.multiClusters.openshiftProjectName') }}

stlr-egress-unver-namespace-name

agent.ose.istio.all.common.egressIstioSelector

Имя селектор для сервиса egress gateway

stlr-egress-unver-{{ lookup('custom_vars', 'global.multiClusters.openshiftProjectName') }}

stlr-egress-unver-namespace-name

stlr.ose.istio.ingress.poddisruptionbudget.spec.minAvailable

Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля

{{ lookup('custom_vars', 'global.poddisruptionbudget.minAvailable', default='50%') }}

50%

stlr.ose.istio.egress.poddisruptionbudget.spec.minAvailable

Количество модулей, которые все еще должны быть доступны после вытеснения модуля, учитывая отсутствие этого модуля

{{ lookup('custom_vars', 'global.poddisruptionbudget.minAvailable', default='50%') }}

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, хранящихся в среде

{{ lookup('custom_vars', 'global.revisionHistoryLimit', default='2') }}

2

stlr.ose.istio.ingress.deployment.spec.strategy.rollingUpdate.maxSurge

Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxSurge') }}

0%

stlr.ose.istio.ingress.deployment.spec.strategy.rollingUpdate.maxUnavailable

Максимально допустимое количество pods, недоступное во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxUnavailable') }}

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

Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен

{{ lookup('custom_vars', 'agent.ose.istio.all.common.ingressAppSelector', default='stlr-ingress-unver') }}

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, хранящихся в среде

{{ lookup('custom_vars', 'global.revisionHistoryLimit', default='2') }}

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

Значение по ключу, на основе которого определяется, на какие узлы модуль может быть распределен

{{ lookup('custom_vars', 'agent.ose.istio.all.common.egressAppSelector', default='stlr-egress-unver') }}

stlr-egress-unver

stlr.ose.istio.egress.deployment.spec.strategy.rollingUpdate.maxSurge

Максимально допустимое количество pods, которое может быть развернуто сверх запланированного во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxSurge') }}

0%

stlr.ose.istio.egress.deployment.spec.strategy.rollingUpdate.maxUnavailable

Максимально допустимое количество pods, недоступное во время обновления

{{ lookup('custom_vars', 'global.ufs.strategy.maxUnavailable') }}

100%

stlr.ose.istio.egress.common.internal-port

Внутренний порт для маршрутизации запросов к сторонним сервисам

{{ lookup('custom_vars', 'global.ose.platform.egress.http.port') }}

7070

stlr.ose.istio.ingress.envoy_filter.regex_match.client.cn

Regrex в котором задаются CN для валидации запросов через envoy filter

{{ lookup('custom_vars', 'global.ufs.istio.ingress.envoy_filter.regex_match.client.cn') }}

.*

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 для подключения

{{ lookup('custom_vars', 'global.platform.logger.kafka.bootstrap.servers') }}

kafka_host_1:9093,kafka_host_2:9093

fluent-bit-sidecar.kafka.topic

Topic Apache Kafka для подключения

{{ lookup('custom_vars', 'global.platform.logger.kafka.topic') }}

loga.ms.dev

fluent-bit-sidecar.kafka.security.protocol

Протокол подключения

{{ lookup('custom_vars', 'global.platform.logger.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

Динамический порт для доступа к метрикам

{{ lookup('custom_vars', 'fluent-bit-sidecar.ose.configmap.fluent-controller.http.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

Динамический порт для доступа к метрикам

{{ lookup('custom_vars', 'fluent-bit-sidecar.ose.configmap.fluent-controller.igeg.http.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

{{ lookup('custom_vars', 'stlr.vault.agent.enabled') }}

fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.uri

Адрес URI подключения к Vault

{{ lookup('custom_vars', 'global.platform.secret.protocol', default='https') }}://{{ lookup('custom_vars', 'global.platform.secret.host', default='') }}:{{ lookup('custom_vars', 'global.platform.secret.port', default='443') }}

fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.namespace

Пространство имен метода автоматической аутентификации Vault

{{ lookup('custom_vars', 'stlr.vault.tenant') }}

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

{{ lookup('custom_vars', 'stlr.vault.role') }}

fluent-bit-sidecar.ose.configmap.fluent-controller.vault.config.auto_auth.method.mount_path

Путь монтирования метода аутентификации Vault

{{ lookup('custom_vars', 'global.multiClusters.openshiftMountPath') }}

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 (опционально))

{{ lookup('custom_vars', 'global.ott.ose_deploy', default='false') }}`

true

stlr.istio.all.conf параметры для конфигурации IGEG для обращения ОТТ в сервис аудита

stlr.platform.ott.audit.host

Адрес хоста для интеграции с сервисом аудита

{{ lookup('custom_vars', 'global.ose.istio.audt.without_ott_host') }}

ift3-std-mtls-audit2-proxy.apps.ocp.ift-01.solution.sbt

stlr.platform.ott.audit.port

Порт хоста для интеграции с сервисом аудита

{{ lookup('custom_vars', 'global.ose.istio.audt.port') }}

443

stlr.platform.ott.audit.protocol

Протокол для интеграции с сервисом аудита

{{ lookup('custom_vars', 'global.ose.istio.audt.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

{{ lookup('custom_vars', 'global.ott.service.hosts') }}

ott-service.otts-std-ift3.ingress.apps.ocp.ift-01.solution.sbt

ott-sidecar.ose.configmap.url

URL к OTTS

{{ lookup('custom_vars', 'global.ott.service.url') }}

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

{{ lookup('custom_vars', 'global.platform.audt.context_path_without_ott') }}

/push/project/ms-audt/pipeline/audit-pipe-client-egress

ott-sidecar.ose.istio.ingress.audt-context_path_without_ott

Контекст обращения к сервису аудита с пода egress

{{ lookup('custom_vars', 'global.platform.audt.context_path_without_ott') }}

/push/project/ms-audt/pipeline/audit-pipe-client-egress

ott-sidecar.prometheus.io.scrape

Переключатель сбора метрик unimon-agent

false

ott-sidecar.ssl.ose.keyStore.ott.certAlias

Алиас клиентского сертификата

{{ lookup('custom_vars', 'ott-sidecar.ose.configmap.module.id') }}

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

{{ lookup('custom_vars', 'global.platform.audt.ott_host') }}

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

{{ lookup('custom_vars', 'global.platform.audt.context_path_with_ott')}}/v2

/push/project/ms-audt/split-by-ott/v2

Состав дистрибутива#

Дистрибутив компонента STLR представляет собой несколько ZIP-архивов:

  • архив с конфигурациями:

Файл / директория

Описание

./config/parameters

Содержит параметры приложения и подключаемых сервисов. Часто заполняется глобальными параметрами, зависящими от окружения

./helm

Содержит набор конфигураций (helm charts), которые используются для развертывания в (Platform V DropApp (K8S) / Kubernetes / Red Hat OpenShift — опционально)

./custom_property.conf.yml

Файл, описывающий значения переменных компонента, используемых утилитой миграции (включает в себя настраиваемые параметры и переключатели)

./distrib.yml

Файл с метаописанием процесса развертывания Jenkins CD

./pipeline-binaries.yml

Файл с метаописанием процесса сборки бинарного дистрибутива Jenkins CI

./pipeline-configs.yml

Файл с метаописанием процесса сборки конфигурационного дистрибутива Jenkins CI

  • архив с бинарными файлами:

Директория

Описание

./package/pl

Содержит PL приложения

./package/bh

Содержит BH приложения

./package/docker/

Содержит служебные файлы для сборки/пересборки образов

Примечание: Для данной установки может возникнуть необходимость корректировки параметров настроек.

Более подробно процесс конфигурирования описан в документе «Руководство по системному администрированию».

Ручная установка#

Подготовка дистрибутива компонента к развертыванию#

Распаковка#

  1. Распакуйте дистрибутив продукта.

  2. В распакованном архиве распакуйте архив с набором скриптов Delivery tool lite ( stlr-scripts-***-distrib.zip), далее — DTL.

Подготовка DTL#

  1. В корневой директории с дистрибутивом экспортируйте путь до скриптов в переменную:

export PYTHONPATH=/path-to/delivery-tool-lite
  1. Авторизуйтесь в хранилище образов:

docker login your-repository -u username
  1. Сгенерируйте build_config.json c описанием образов через скрипт без параметров:

python3 /path-to/delivery-tool-lite/src/scripts/build_product.py --dryrun
  1. Проставьте теги для образов контейнеров (поле 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#

  1. Запустите скрипт build_product.py c параметрами:

  • --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'
  1. После отработки скрипта проверьте в файле report_info.json порядок изменения хешей образов и дополнительную информацию:

cat report_info.json

В файле report_info.json (поле file в блоке images_autosubstitution) можно увидеть, что произошла замена хешей самих deployment.yaml.

  1. Если необходимо получить только образы локально, запустите скрипт только с файлом конфигурации:

python3 /path-to/delivery-tool-lite/src/scripts/build_product.py --config_path 'build_config.json'

Затем проверьте образы:

docker images

Подготовка и запуск установки в кластер оркестрации#

  1. Получите архив с конфигурацией продукта. При работе скрипта DTL была создана папка owned, куда были скопированы и распакованы архивы bin и conf.

  2. В соответствии с инфраструктурой, в которой разворачивается компонент, укажите данные в файлах 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 (путь до точки хранения образов относительно корня).

  1. Убедитесь, что вход в нужный кластер и namespace настроены.

  2. Если в инсталляции не настроена интеграция с системой управления секретами, то необходимо сконфигурировать клиентские сертификаты для БД(опционально) и указать секрет с логином/паролем от БД.

Создайте 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.

  1. В папке /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 необходимо внести информацию в общий репозиторий стенда, добавив специфичные для компонента параметры или изменив текущие настройки.

Для этого выполните следующие действия:

  1. В файл 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 путем запуска без выбора параметров.

  1. В 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;...;...)>
  1. В common-репозиторий в файл ansible/common.conf.yml добавьте путь до реестра образов контейнеров:

registry: "<адрес docker registry>"
registry_path: "{{ fpConfig.registryPath }}"
  1. В common-репозиторий в файл environment.json добавьте сценарии HELM_DEPLOY и HELM_UNDEPLOY:

{
  "playbooks_fpi": {
  	"HELM_DEPLOY": {
	  "id": 97
  	},
  	"HELM_UNDEPLOY": {
	  "id": 98
  	}
  }
}
  1. Настройка необходимых утилит Helm и kubectl производится в файле environment.json

{
  "<Секция стенда>": {
    "initToolList": {
      "kubectl": {
        "tool": "kubectl_v1.18"
      },
      "helm": {
        "tool": "helm-v3.8.0"
      }
    }
  }
}

Более подробная информация о конфигурировании компонента представлена в документе «Руководство по системному администрированию».

Создание и настройка секретов и сертификатов#

STLR поддерживает два метода хранения секретов и сертификатов:

  • в хранилище системы управления секретами;

  • в контейнеризированной среде.

При использовании контейнеризированной среды требуется выпуск и конфигурирование:

  • сертификатов SSL для взаимодействия с базой данных;

  • сертификатов mTLS;

  • сертификатов для OTTS.

Перед установкой STLR выпустите следующие сертификаты:

  1. Сертификаты для OTTS. Для взаимодействия с компонентом OTTS выпустите сертификаты для инсталляции, где будет производиться установка STLR. Более подробная информация о OTT-сертификатах приведена в руководстве по установке компонента OTTS продукта Platform V Backend.

  2. Сертификаты mTLS. Если в стандартной конфигурации STLR настроен mTLS, необходимо выпустить egress- и ingress-сертификаты для блока/контура, где будет производиться установка STLR.

  3. Сертификаты для 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-развертывания:

  1. Установите параметры сборки:

    • SUBSYSTEM: STLR;

    • COMPONENTS: Основная ФП STLR;

    • DISTRIB_VERSION: <выбрать версию дистрибутива>;

    • OSE_CLUSTERS: <выбрать кластер K8S или OSE>;

    • Репозиторий/ветка с настройками ФП: <основная ветка конфигурации в соответствии с настройками STLR>;

    • PARAMS (набор playbook): <из таблицы ниже>.

Название

Описание

MIGRATION_FP_CONF

Миграция конфигурационных файлов

HELM_DEPLOY

Установка helm релиза

Набор возможных сценариев зависит от конфигурации инструментов STLR.

  1. Запустите сборку, нажав кнопку Build.

После завершения выполнения сборки проверьте, что в логах отсутствуют ошибки.