Установка#
Важно!
С версии 3.11 осуществлен переход на установку с помощью Helm Chart!
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
./bh/ratelimit |
Исполняемый файл RL Service |
./bh/rloperator |
Исполняемый файл RL Operator |
./bh/radish |
Исполняемый файл Quota Cache (Radish) |
./bh/radish_cli |
Исполняемый файл Quota Cache (Radish) |
Выбор способа установки#
В зависимости от способа развертывания сервиса воспользуйтесь одной из инструкций:
ручная установка сервиса;
автоматизированная установка сервиса с использованием Deploy Tools;
автоматизированная установка сервиса по агентской схеме с использованием Deploy Tools;
автоматизированная установка сервиса с использованием Synapse Installer.
Подготовка окружения#
Namespace, в который требуется установить компонент SRLS, должен быть подключен к Istio: убедиться, что в namespace существуют стандартные Config Map Istio с именем istio-ca-root-cert (если нет, то добавить).
Убедиться, что в namespace существует ServiceAccount c именем default (если нет, то добавить).
Для доступа к образам из среды контейнеризации к Docker-registry требуется создать ImagePullSecret (
<дистрибутив>/package/conf/helm/application/srls/templates/secrets/rls-image-pull-secret.yaml), для этого нужно подготовить JSON вида:
{"auths":{"registry.local.host.ru":{"username":"user","password":"pass","auth":"auth-b64","email":""}}}
Здесь:
user — учетная запись для доступа к registry.local.host.ru;
pass — пароль учетной записи;
auth-b64 — base64 от строки в формате user:pass.
Заполнить поле .dockerconfigjson получившимся JSON:
kind: Secret
apiVersion: v1
metadata:
name: rls-image-pull-secret
namespace: ${srls.namespace}
data:
.dockerconfigjson: >-
type: kubernetes.io/dockerconfigjson
Связать секрет rls-image-pull-secret с ServiceAccount, который используется для скачивания образов. Пример команды для Kubernetes:
kubectl secrets link default rls-image-pull-secret --for=pull -n <namespace>
Здесь namespace — уникальное имя пространства.
Пример команды для OpenShift:
oc secrets link default rls-image-pull-secret --for=pull
Создать или обновить артефакты CustomResourceDefinition в среде контейнеризации Kubernetes или Red Hat OpenShift (опционально).
Пользовательские ресурсы являются расширением API Kubernetes. Артефакт CustomResourceDefinition (сокращенно CRD) позволяет определять пользовательские ресурсы — указать тип и схему ресурса. Добавление артефакта CRD позволяет затем использовать новые пользовательские ресурсы.
В нашем случае:
для артефактов типа GlobalRateLimit необходимо добавить следующий CRD: артефакт CRD GRL.
для артефактов типа LocalRateLimit необходимо добавить следующий CRD: артефакт CRD LRL.
В некоторых случаях для добавления CRD администраторы требуют артефакт типа CRDProxy, где в поле data размещен непосредственно CRD, например, для артефактов типа GlobalRateLimit:
apiVersion: apps.firepaws.io/v1
kind: CRDProxy
metadata:
name: crdproxy-globalratelimits-ratelimit-service
namespace: ${srls.namespace}
serviceAccount:
- rate-limiter-service
data: |-
< содержимое нашего артефакта СRD GRL>
Выбор Key-Value хранилища#
Доступные варианты Key-Value хранилища:
Radish (поставляется в составе SRLS);
Redis (в составе SRLS поставляются только скрипты развертывания).
Централизованный вариант развертывания#
Сертификаты для Egress Gateway#
При интеграции с сервисом журналирования и/или установке SRLS в режиме NЦОД необходимо подготовить сертификаты для Egress Gateway (ca-root.pem, egress.key, egress.pem, kafka-ca.pem, kafka.key, kafka.pem), рекомендуемая утилита для генерации и выпуска сертификатов — OpenSSL.
Для хранения «чувствительной» информации с точки зрения безопасности целевым подходом является интеграция с Secret Management System.
Вариант установки с Secret Management System.
Добавить необходимые сертификаты в Key-Value хранилище. Структура секрета в хранилище в формате JSON:
{
"ca": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"crt": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"key": "-----BEGIN RSA PRIVATE KEY-----<...>-----END RSA PRIVATE KEY-----\n"
"ttl": "3m"
}
Ключи в хранилище должны соответствовать указанным:
Название ключа |
Описание |
|---|---|
ca |
Ключ для корневого сертификата (ca-root.pem, kafka-ca.pem) |
crt |
Ключ для серверного сертификата (egress.pem, kafka.pem) |
key |
Ключ для приватного ключа сертификата (egress.key, kafka.key) |
ttl |
Ключ для времени жизни секрета (определяет период обновления в реальном времени секрета в Pod) |
Вариант установки без Secret Management System.
Добавить в Kubernetes или Red Hat OpenShift (опционально) секрет egress-rloperator-secret.
Секрет может быть создан с помощью инструмента командной строки или через файл манифеста Secret.
Пример команды для Kubernetes:
kubectl create secret generic egress-rloperator-secret \
--from-file=ca-root.pem=ca-root.pem \
--from-file=egress.key=egress.key \
--from-file=egress.pem=egress.pem \
-n <namespace>
kubectl create secret generic egress-kafka-cert \
--from-file=ca-root.pem=kafka-ca.pem \
--from-file=egress.key=kafka.key \
--from-file=egress.pem=kafka.pem \
-n <namespace>
Здесь namespace — уникальное имя пространства.
Пример команды для OpenShift:
oc create secret generic egress-rloperator-secret \
--from-file=ca-root.pem=ca-root.pem \
--from-file=egress.key=egress.key \
--from-file=egress.pem=egress.pem
oc create secret generic egress-kafka-cert \
--from-file=ca-root.pem=kafka-ca.pem \
--from-file=egress.key=kafka.key \
--from-file=egress.pem=kafka.pem
Пример манифестов:
kind: Secret
apiVersion: v1
metadata:
name: egress-rloperator-secret
namespace: ${srls.namespace}
data:
ca-root.pem: >-
egress.key: >-
egress.pem: >-
type: Opaque
kind: Secret
apiVersion: v1
metadata:
name: egress-kafka-cert
namespace: ${srls.namespace}
data:
kafka-ca.pem: >-
kafka.key: >-
kafka.pem: >-
type: Opaque
Здесь поля ca-root.pem, egress.key, egress.pem, kafka-ca.pem, kafka.key, kafka.pem должны быть заполнены данными из соответствующих файлов в base64-кодировке.
Пример команды для получения данных в формате base64:
base64 -w 0 ca-root.pem
Сертификаты для Ingress Gateway#
При установке SRLS в режиме NЦОД необходимо подготовить сертификаты для Ingress Gateway (ca-root.pem, ingress.key, ingress.pem), рекомендуемая утилита для генерации и выпуска сертификатов — OpenSSL.
Для хранения «чувствительной» информации с точки зрения безопасности целевым подходом является интеграция с Secret Management System.
Вариант установки с Secret Management System.
Добавить необходимые сертификаты в Key-Value хранилище. Структура секрета в хранилище в формате JSON:
{
"ca": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"crt": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"key": "-----BEGIN RSA PRIVATE KEY-----<...>-----END RSA PRIVATE KEY-----\n"
"ttl": "3m"
}
Ключи в хранилище должны соответствовать указанным:
Название ключа |
Описание |
|---|---|
ca |
Ключ для корневого сертификата (ca-root.pem) |
crt |
Ключ для серверного сертификата (ingress.pem) |
key |
Ключ для приватного ключа сертификата (ingress.key) |
ttl |
Ключ для времени жизни секрета (определяет период обновления в реальном времени секрета в Pod) |
Вариант установки без Secret Management System.
Добавить в Kubernetes или Red Hat OpenShift (опционально) секрет ingress-rloperator-secret.
Секрет может быть создан с помощью инструмента командной строки или через файл манифеста Secret.
Пример команды для Kubernetes:
kubectl create secret generic ingress-rloperator-secret \
--from-file=ca-root.pem=ca-root.pem \
--from-file=ingress.key=ingress.key \
--from-file=ingress.pem=ingress.pem \
-n <namespace>
Здесь namespace — уникальное имя пространства.
Пример команды для OpenShift:
oc create secret generic ingress-rloperator-secret \
--from-file=ca-root.pem=ca-root.pem \
--from-file=ingress.key=ingress.key \
--from-file=ingress.pem=ingress.pem
Пример манифестов:
kind: Secret
apiVersion: v1
metadata:
name: ingress-rloperator-secret
namespace: ${srls.namespace}
data:
ca-root.pem: >-
egress.key: >-
egress.pem: >-
type: Opaque
Здесь поля ca-root.pem, ingress.key, ingress.pem должны быть заполнены данными из соответствующих файлов в base64-кодировке.
Пример команды для получения данных в формате base64:
base64 -w 0 ca-root.pem
Сертификаты для RL Service#
Если планируется использование шифрования трафика между граничным прокси и централизованным RL Service, то это может быть реализовано несколькими способами.
Использование Synapse Service Mesh/Istio для шифрования трафика#
При использовании механизма Synapse Service Mesh/Istio для шифрования трафика дополнительных действий не требуется — управлением сертификатов занимается контрольная панель Synapse Service Mesh/Istio.
Использование собственных сертификатов для шифрования трафика#
Важно! Целевым вариантом является использование сертификатов Synapse Service Mesh/Istio для шифрования трафика, поддержка собственных сертификатов для шифрования трафика планируется к удалению. При использовании собственных сертификатов не доступна функциональность белых списков (whitelist).
При использовании собственных сертификатов необходимо подготовить сертификаты для RL Service (ca-root.pem, server.key, server.pem). Рекомендуемая утилита для генерации и выпуска сертификатов — OpenSSL.
Для хранения «чувствительной» информации с точки зрения безопасности целевым подходом является интеграция с Secret Management System.
Вариант установки с Secret Management System.
Добавить необходимые сертификаты в Key-Value хранилище. Структура секрета в хранилище в формате JSON:
{
"ca": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"crt": "-----BEGIN CERTIFICATE-----<...>-----END CERTIFICATE-----\n",
"key": "-----BEGIN RSA PRIVATE KEY-----<...>-----END RSA PRIVATE KEY-----\n"
"ttl": "3m"
}
Ключи в хранилище должны соответствовать указанным:
Название ключа |
Описание |
|---|---|
ca |
Ключ для корневого сертификата (ca-root.pem) |
crt |
Ключ для серверного сертификата (server.pem) |
key |
Ключ для приватного ключа сертификата (server.key) |
ttl |
Ключ для времени жизни секрета (определяет период обновления в реальном времени секрета в Pod) |
Вариант установки без Secret Management System.
Добавить в Kubernetes или Red Hat OpenShift (опционально) секрет rate-limiter-secrets.
Секрет может быть создан с помощью инструмента командной строки или через файл манифеста Secret.
Пример команды для Kubernetes:
kubectl create secret generic rate-limiter-secrets \
--from-file=ca-root.pem=ca-root.pem \
--from-file=egress.key=server.key \
--from-file=egress.pem=server.pem \
-n <namespace>
Здесь namespace — уникальное имя пространства.
Пример команды для OpenShift:
oc create secret generic rate-limiter-secrets \
--from-file=ca-root.pem=ca-root.pem \
--from-file=egress.key=server.key \
--from-file=egress.pem=server.pem
Пример манифеста:
kind: Secret
apiVersion: v1
metadata:
name: rate-limiter-secrets
namespace: ${srls.namespace}
data:
ca-root.pem: >-
server.key: >-
server.pem: >-
type: Opaque
Здесь поля ca-root.pem, server.key, server.pem должны быть заполнены данными из соответствующих файлов в base64-кодировке.
Пример команды для получения данных в формате base64:
base64 -w 0 ca-root.pem
Ролевая модель централизованного варианта развертывания#
Для корректной работы компонента в централизованном варианте развертывания необходимо предоставление следующих прав на артефакты k8s:
Артефакт |
API группа |
Права |
Описание |
|---|---|---|---|
globalratelimits |
ratelimit.service |
- get |
Права предоставляются на уровне кластера K8s |
globalratelimits/status |
ratelimit.service |
- get |
Права предоставляются на уровне кластера K8s |
leases |
coordination.k8s.io |
- get |
Права предоставляются на уровне namespace, в котором развертывается централизованный SRLS |
events |
- create |
Права предоставляются на уровне namespace, в котором развертывается централизованный SRLS |
|
envoyfilters |
networking.istio.io |
- get |
Права предоставляются на уровне namespace, в котором развертывается прикладной дистрибутив; в артефакте RoleBinding необходимо указать ServiceAccount в namespace централизованного SRLS |
localratelimits |
ratelimit.service |
- get |
Права предоставляются на уровне кластера K8s |
- localratelimits/status |
ratelimit.service |
- get |
Права предоставляются на уровне кластера K8s |
Ниже приведены артефакты, необходимые для настройки прав доступа (актуальные артефакты доступны в <дистрибутив>/package/conf/other/operator-role):
ServiceAccount:
kind: ServiceAccount
apiVersion: v1
metadata:
name: rate-limiter-service
namespace: ${srls.namespace}
ClusterRole:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rate-limiter-service-operator
rules:
- verbs:
- get
- list
- watch
apiGroups:
- ratelimit.service
resources:
- localratelimits
- globalratelimits
- verbs:
- get
- list
- watch
- update
- patch
apiGroups:
- ratelimit.service
resources:
- localratelimits/status
- localratelimits/finalizers
- globalratelimits/status
- globalratelimits/finalizers
ClusterRoleBinding:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rloperator-crb-${srls.namespace}
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${srls.namespace}
roleRef:
kind: ClusterRole
name: rate-limiter-service-operator
apiGroup: rbac.authorization.k8s.io
Lease (если не создается в рамках установки через Deploy Tools):
apiVersion: coordination.k8s.io/v1
kind: Lease
metadata:
name: srls-operator-lock
namespace: ${srls.namespace}
labels:
app: rloperator
proj: synapse-rls
agent: srls
Role:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: srls-operator-role
namespace: ${srls.namespace}
rules:
- verbs:
- get
- update
- patch
apiGroups:
- 'coordination.k8s.io'
resources:
- leases
resourceNames:
- srls-operator-lock
- apiGroups:
- ""
resources:
- events
verbs:
- create
RoleBinding:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rloperator-rb
namespace: ${srls.namespace}
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${srls.namespace}
roleRef:
kind: Role
name: srls-operator-role
apiGroup: rbac.authorization.k8s.io
ClusterRole:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: srls-role
rules:
- verbs:
- get
- list
- watch
- create
- update
- patch
- delete
apiGroups:
- networking.istio.io
resources:
- envoyfilters
Артефакт, который необходимо создать команде сопровождения прикладного namespace для подключения к централизованному SRLS:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: srls-role-binding
namespace: ${namespace}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: srls-role
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${srls.namespace}
Сетевая видимость RL Service в рамках кластера#
Для обеспечения возможности подключения к Pod RL Service из других namespace необходимо создать артефакт (актуальный шаблон артефакта расположен в <дистрибутив>/package/conf/other/network-policy.yaml):
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: rlservice
namespace: ${rls-namespace}
spec:
podSelector:
matchLabels:
app: rls
proj: synapse-rls
ingress:
- ports:
- protocol: TCP
port: 8081
from:
- podSelector:
matchLabels:
srls: ratelimit
namespaceSelector: {}
policyTypes:
- Ingress
Артефакт разрешает входящий трафик в namespace централизованного SRLS к Pod RL Service по порту 8081 из других namespace, но только для Pod, у которых есть label srls: ratelimit. Данный подход позволяет сократить время на запрос к RL Service за счет прямого обращения, минуя Egress Gateway и Ingress Gateway.
Децентрализованный вариант развертывания#
Ролевая модель децентрализованного варианта развертывания#
Для корректной работы компонента в децентрализованном варианте развертывания необходимо предоставление следующих прав на артефакты k8s:
Артефакт |
API группа |
Права |
Описание |
|---|---|---|---|
globalratelimits |
ratelimit.service |
- get |
Права предоставляются на уровне прикладного namespace |
globalratelimits/status |
ratelimit.service |
- get |
Права предоставляются на уровне прикладного namespace |
leases |
coordination.k8s.io |
- get |
Права предоставляются на уровне прикладного namespace |
events |
- create |
Права предоставляются на уровне прикладного namespace |
|
envoyfilters |
networking.istio.io |
- get |
Права предоставляются на уровне прикладного namespace |
localratelimits |
ratelimit.service |
- get |
Права предоставляются на уровне прикладного namespace |
- localratelimits/status |
ratelimit.service |
- get |
Права предоставляются на уровне прикладного namespace |
Ниже приведены артефакты, необходимые для настройки прав доступа (актуальные артефакты доступны в <дистрибутив>/package/conf/other/operator-role):
ServiceAccount:
kind: ServiceAccount
apiVersion: v1
metadata:
name: rate-limiter-service
namespace: ${namespace}
Role с поддержкой автоматизированного создания артефакта EnvoyFilter: srls-decentr-operator-role.yaml.
Role без поддержки автоматизированного создания артефакта EnvoyFilter (опционально): srls-decentr-operator-role.yaml.
Lease (если не создается в рамках установки через Deploy Tools):
apiVersion: coordination.k8s.io/v1
kind: Lease
metadata:
name: srls-operator-lock
namespace: ${namespace}
labels:
app: rloperator
proj: synapse-rls
agent: srls
RoleBinding:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rloperator
namespace: ${namespace}
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${namespace}
roleRef:
kind: Role
name: srls-decentr-operator-role
apiGroup: rbac.authorization.k8s.io
Параметры установки#
Параметры шаблонизации расположены в <дистрибутив>/package/conf/helm/application/srls/values.yaml.
Название |
Описание |
Значение по умолчанию |
|---|---|---|
registry |
Ссылка до registry, если не задано администратором в настройках инструмента развертывания/распаковки |
docker-registy.mydomain.com |
registry_path_srls |
Базовый путь до каталога с образами, если не задано администратором в настройках инструмента развертывания/распаковки |
public |
srls.fluentBitSidecarEnabled |
Если |
False |
srls.logSenderEnabled |
Если |
False |
TENANT_CODE |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger, определяется в настройках инструмента развертывания/распаковки |
- |
srls.tlsEnabled |
Включить TLS-шифрование на RL Service |
False |
srls.tlsByIstio |
Значение |
false |
srls.peerAuthMode |
Определяет режим mTLS для Pod SRLS c sidecar Istio в рамках namespace. Возможные варианты: STRICT – включить, DISABLE – выключить шифрование. |
DISABLE |
srls.tenantCode |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger, если в настройках инструмента развертывания/распаковки не задан параметр TENANT_CODE |
SRLS |
srls.podDisruptionBudgetEnabled |
Если |
True |
srls.deployToK8s |
Для совместимости с Kubernetes и Platform V DropApp |
False |
srls.deployLease |
Разворачивать или нет артефакт Lease в составе дистрибутива |
False |
srls.vaultAgentEnabled |
Если |
True |
srls.vaultAgentNamespaceEnabled |
Поддержка пространств в хранилище Secret Management System |
False |
srls.secretEnabled |
Если |
False |
srls.deployAccount |
Если |
False |
srls.deployCentr |
Если |
False |
srls.deployDecentr |
Если |
True |
srls.deployWhitelistRLS |
Если |
False |
srls.deployLimits |
Если |
False |
srls.deployClusterFilter |
Если |
False |
srls.deployEndpointFilter |
Если |
False |
srls.multiDataCenterSyncEnabled |
Если |
false |
endpoints |
Если значение параметров srls.deployLimits и/или srls.deployEndpointFilter выставлено в |
|
bodySizesEntries |
Если значение параметра srls.deployLimits выставлено в |
Пример значения параметра endpoints:
[{"endpoint": "test-server2-endpoint:8080","name": "test service2","shortname": "server2","overall_limit": 100,"by_header": {"header": "synapse-consumerid","uri_prefixes": [{"uri_prefix": "/service","unit":"second","value": 5,"soft": {"step": 2,"value": 1},"anon_value": 10,"invokers": [{"header_value": "test-client-namespace2","name": "invoker_prefix_2","unit": "second","value": 10,"soft": {"step": 2,"value": 1}},{"header_value": "test-client-namespace1","name": "invoker_prefix_1","unit": "second","value": 5}]}]}},{"endpoint": "test-server-endpoint:8080","name": "test service","shortname": "server","overall_limit": -1,"by_header": {"header": "synapse-consumerid","unit": "minute","value": 5,"soft": {"step": 2,"value": 1},"anon_value": 10,"invokers": [{"header_value": "test-client-namespace2","name": "invoker2","unit": "second","value": 10,"soft": {"step": 2,"value": 1}},{"header_value": "test-client-namespace1","name": "invoker1","unit": "second","value": 5}]}},{"endpoint": "test-server3-endpoint:8080","name": "test service","shortname": "server","overall_limit": -1,"by_path": {"mask": "mask","unit": "second","quotas": {"flat": 7,"soft": {"step": 2,"value": 4}},"tenants": [{"name": "tenant1","resourceName": "rntenant1","unit": "second","quotas": {"soft": {"step": 1,"value": 2}}},{"name": "tenant2","resourceName": "rntenant2","unit": "second","quotas": {"flat": 1}}]}}]
Пример значения параметра bodySizesEntries:
[{"body_sizes_key": "size1", "body_sizes": [{"body_size":"5Ki", "value": 2}, {"body_size": "2M", "value": 5}]}, {"body_sizes_key": "size2", "body_sizes": [{"body_size": "100", invokers: [{"name": "invoker 1", "header_value": "invoker-1", "value": 15}]}]}]
Список стендозависимых параметров (указываются в конфигурации job) для установки и их описание представлены в таблице «Список и описание параметров». Стендозависимые параметры расположены в том же файле <дистрибутив>/package/conf/helm/application/srls/values.yaml.
Важно!
Названия стендозависимых параметров, начиная с версии компонента SRLS 4.2, отличаются от названий в предыдущих версиях.
Список и описание параметров:
Название |
Описание |
Пример |
Примечание |
|---|---|---|---|
srls.namespace |
Имя пространства, в котором разворачивается компонент SRLS |
synapse-dev-sandbox |
|
rls.backend |
Тип хранилища Key-Value для RL Service |
radish |
Возможные варианты: radish, redis |
rls.radishType |
Тип работы Radish |
scarecrow |
Для подключения к Radish с одной node нужно указать standalone |
rls.radishUrl |
Адрес подключения к Radish |
radish-0.radish.svc.cluster.local:2181,radish-1.radish.svc.cluster.local:2181,radish-2.radish.svc.cluster.local:2181 |
Для standalone развертывания Radish с режимом подключения standalone нужно указать один адрес |
rls.radishPoolMinSize |
Минимальное количество поддерживаемых соединений с Radish |
20 |
Если значение совпадает с |
rls.radishPoolMaxSize |
Максимальное количество поддерживаемых соединений с Radish |
100 |
При необходимости новые соединения создаются динамически. |
rls.radishPoolShrinkThresholdSeconds |
Интервал ожидания для закрытия динамически созданных соединений с Radish свыше минимального значения |
60 |
Единица измерения — секунды |
rls.radishPoolShrinkValue |
Количество динамически созданных соединений, закрываемых за одну итерацию |
1 |
|
rls.radishPoolTimeoutMillis |
Таймаут ожидания доступных соединений с Radish из пула, по истечении тайм-аута динамический пул создает новое соединение |
100 |
0 — ожидание не выполняется. |
rls.radishRetryCount |
Количество попыток повторной отправки запросов к Radish в случае сетевой ошибки |
3 |
0 — неограниченное количество попыток |
rls.radishRetryIntervalMillis |
Интервал ожидания между попытками повторной отправки запросов к Radish в случае ошибки |
50 |
Единица измерения — миллисекунды |
rls.radishWithKeepAlive |
Включение/отключение TCP keepalive |
true |
|
rls.radishKeepAlivePeriod |
Периодичность отправки keepalive запросов |
10 |
Значение указывается в секундах |
rls.radishPingEnabled |
Включение/отключение проверки соединений с Radish |
true |
|
rls.radishPingPeriodSeconds |
Периодичность проверки соединений с Radish |
10 |
Значение указывается в секундах |
rls.radishPingRecover |
Включение/отключение восстановления liveness-пробы после успешной проверки соединения с Radish |
false |
Если значение |
rls.redisUrl |
Адрес подключения к Redis |
mymaster,redis-sentinel-0.redis-sentinel:26379,redis-sentinel-1.redis-sentinel:26379,redis-sentinel-2.redis-sentinel:26379 |
Для standalone развертывания с Redis с режимом подключения SINGLE можно указать один адрес |
rls.redisType |
Тип работы Redis |
SENTINEL |
Для подключения к Redis с одной node нужно указать SINGLE |
rls.localCacheSizeInBytes |
Размер локального кеша |
524288 |
|
rls.logLevel |
Уровень логирования для RL Service |
info |
|
rls.logJsonValueSubsystem |
Значение по ключу logging.jsonKeySubsystem в событиях журналирования |
rlservice |
|
rls.tls.enable |
Включение/выключение шифрования TLS |
false |
Для использования TLS на основе сертификатов Synapse Service Mesh/Istio значение должно быть |
rls.tls.clientAuth |
Запрос и валидация сертификатов пользователей: none — не запрашивать; must — запрашивать; want — запрашивать и валидировать |
none |
|
rls.tls.version |
Минимальная версия протокола TLS |
TLSv1.2 |
|
rls.tls.cipherSuites |
Комбинация шифров для TLS |
||
rls.tls.certPath |
Путь до сертификатов в контейнере RL Service |
/cert |
|
rls.tls.cert.crt |
Имя файла сертификата в контейнере RL Service |
server.pem |
|
rls.tls.cert.key |
Имя файла с ключом сертификата в контейнере RL Service |
server.key |
|
rls.tls.cert.ca |
Имя файла CA сертификата в контейнере RL Service |
ca-root.pem |
|
rls.disableIstioDNSautoAllocate |
Включение/отключение модификации ответов от DNS-сервиса |
false |
Необходимо выставить значение |
whitelist.rls.namespaces |
Список namespace, которым разрешен доступ к RL Service (AuthorizationPolicy) |
srls.namespace |
Для разрешения доступа из namespace1 и namespace2 значение [«namespace1», «namespace2»] |
radish.serversList |
Полный список узлов кластера Radish |
radish-0.radish.svc.cluster.local:2181,radish-1.radish.svc.cluster.local:2181,radish-2.radish.svc.cluster.local:2181 |
|
radish.replication.flushThresholdSec |
Периодичность отправки данных репликации |
10 |
|
radish.replication.inMemoryBufSizeBytes |
Размер буфера в памяти в байтах, используется для накопления данных перед записью на диск |
4194304 |
|
radish.replication.maxFileSizeBytes |
Размер файла на диске в байтах, в случае превышения выполняется процедура снятия актуального слепка данных и удаление исторических данных на диске |
104857600 |
|
radish.logLevel |
Уровень логирования для Radish |
info |
|
radish.logJsonValueSubsystem |
Значение по ключу logging.jsonKeySubsystem в событиях журналирования |
radish |
|
radish.hosts |
Адреса для подключения к Radish |
- radish-0.radish.svc.cluster.local |
|
operator.envoyFilterGrpcTimeout |
Тайм-аут на обращение к сервису Rate Limit |
1s |
|
operator.multiDataCenterSync.failureThreshold |
Количество неудачных попыток синхронизации квот с ЦОД, после которых ЦОД считается недоступным, что приводит к перерасчету квот |
3 |
|
operator.multiDataCenterSync.intervalSeconds |
Периодичность отправки сообщений для синхронизации квот с ЦОД в секундах |
10 |
Чем меньше интервал, тем выше влияние на производительность и меньше время идентификации сбоя ЦОД |
operator.multiDataCenterSync.timeoutSeconds |
Тайм-аут отправки сообщений для синхронизации квот с ЦОД в секундах |
5 |
Значение должно быть меньше соответствующего интервала |
operator.multiDataCenterSync.retryCount |
Количество попыток повторной синхронизации квот с ЦОД в случае ошибки |
1 |
0 — повторных попыток не осуществляется |
operator.multiDataCenterSync.retryIntervalMillis |
Интервал ожидания между попытками повторной синхронизации квот с ЦОД в случае ошибки |
100 |
Единица измерения — миллисекунды |
operator.multiDataCenterSync.host |
Hostname RL Operator в текущем ЦОД |
rloperator.mynamespace.my.cluster |
|
operator.multiDataCenterSync.hosts |
Список hostname RL Operator во всех ЦОД, между которыми выполняется деление квот |
[rloperator.mynamespace.my.cluster, rloperator.othernamespace.other.cluster] |
Список обязательно должен содержать собственный hostname |
operator.multiDataCenterSync.port.pod |
Номер порта RL Operator, используемый для обработки синхронизации квот между ЦОД |
8085 |
|
operator.multiDataCenterSync.port.istioSidecar |
Номер порта istio-sidecar RL Operator для маршрутизации исходящего трафика на Egress Gateway при синхронизации квот между ЦОД |
8085 |
|
operator.multiDataCenterSync.port.ingress |
Номер порта Ingress Gateway для входящего трафика при синхронизации квот между ЦОД |
8443 |
|
operator.multiDataCenterSync.port.egress |
Номер порта Egress Gateway для исходящего трафика при синхронизации квот между ЦОД |
8443 |
|
operator.backend |
Тип хранилища Key-Value для RL Operator |
radish |
Возможные варианты: radish, redis |
operator.radishType |
Тип работы Radish |
scarecrow |
Для подключения к Radish с одной node нужно указать standalone |
operator.radishUrl |
Адрес подключения к Radish |
radish-0.radish.svc.cluster.local:2181,radish-1.radish.svc.cluster.local:2181,radish-2.radish.svc.cluster.local:2181 |
Для standalone развертывания Radish с режимом подключения standalone нужно указать один адрес |
operator.radishPoolSize |
Количество соединений к Radish |
1 |
|
operator.radishRetryCount |
Количество попыток повторной отправки запросов к Radish в случае сетевой ошибки |
3 |
0 — неограниченное количество попыток |
operator.radishRetryIntervalMillis |
Интервал ожидания между попытками повторной отправки запросов к Radish в случае ошибки |
50 |
Единица измерения — миллисекунды |
operator.radishWithKeepAlive |
Включение/отключение TCP keepalive |
true |
|
operator.radishKeepAlivePeriod |
Периодичность отправки keepalive запросов |
10 |
Значение указывается в секундах |
operator.redisType |
Тип работы Redis |
SENTINEL |
Для подключения к Redis с одной node нужно указать SINGLE |
operator.redisUrl |
Адрес подключения к Redis |
mymaster,redis-sentinel-0.redis-sentinel:26379,redis-sentinel-1.redis-sentinel:26379,redis-sentinel-2.redis-sentinel:26379 |
Для standalone развертывания с Redis с режимом подключения SINGLE можно указать один адрес |
operator.logLevel |
Уровень логирования RL Operator |
info |
|
operator.logJsonValueSubsystem |
Значение по ключу logging.jsonKeySubsystem в событиях журналирования |
rloperator |
|
global.common.poddisruptionbudget.minAvailable |
Глобальный параметр среды для PodDistributionBudget |
Параметр, который гарантирует, что как минимум столько реплик будет гарантировано доступны при работе Machine Config, при обновлении кластера OpenShift и других работах, требующих переезд Pod с одной node на другую |
|
operator.podDisruptionBudget.minAvailable |
Параметр среды для RL Operator PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
rls.podDisruptionBudget.minAvailable |
Параметр среды для RateLimiter PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
radish.podDisruptionBudget.minAvailable |
Параметр среды для Radish PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
redis.podDisruptionBudget.minAvailable |
Параметр среды для Redis PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
sentinel.podDisruptionBudget.minAvailable |
Параметр среды для Sentinel PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
egress.podDisruptionBudget.minAvailable |
Параметр среды для Egress Gateway PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
ingress.podDisruptionBudget.minAvailable |
Параметр среды для Ingress Gateway PodDistributionBudget |
1 |
Параметр задается в файле конфигурации values.yaml |
vaultAgent.authPathEnabled |
Включение пути для метода аутентификации «Kubernetes» для системы управления секретами Secret Management System |
false |
|
vaultAgent.authPath |
Путь для метода аутентификации «Kubernetes» для системы управления секретами Secret Management System |
auth/srls |
|
vaultAgent.role |
Роль в Secret Management System, получаемая при подключении к хранилищу |
role |
|
vaultAgent.namespace |
Пространство в хранилище Secret Management System |
CI01234567_CI76543210 |
Указывать, если в хранилище поддерживаются пространства имен. При этом должен быть задан параметр шаблонизации srls.vaultAgentNamespaceEnabled |
vaultAgent.fullPathToSecretKafka |
Полный путь до секрета в Secret Management System для Egress Gateway |
DEV/TEST/FS/KV/egress-kafka-cert |
|
vaultAgent.fullPathToRlsSecret |
Полный путь до секрета в Secret Management System для RL Service |
DEV/TEST/FS/KV/rls-secrets |
|
vaultAgent.host |
Host для Secret Management System |
secret.manager.ru |
|
vaultAgent.port |
Порт для Secret Management System |
8443 |
|
egress.tracingCollector |
Адрес подключения к сервису публикации данных о трассировке запросов |
jaeger-collector.test-devpub-controlplanev2.svc:9411 |
|
egress.vault.routeEnabled |
Добавление артефактов Istio для прохождения трафика Secret Management System через Egress |
true |
|
egress.vault.proxy.port |
Порт для сервиса Secret Management System на Egress |
8550 |
|
egress.istiodSvc |
Адрес подключения к istiod |
istiod-basic.synapse-smcp20-control-plane.svc:15012 |
|
k8sService.kubeApi.host |
Сервис Kubernetes |
Kubernetes.default.svc.cluster.local |
|
egress.kafka.updateBootstrapServersEnabled |
Если |
True |
|
egress.kafka.port |
Порт для конфигурации прохождения трафика Kafka через Egress |
19093 |
|
egress.kafka.proxy.port |
Порт для кластера Kafka |
9093 |
|
egress.kafka.proxy.resolution |
Resolution для конфигурации прохождения трафика Kafka через Egress |
DNS |
|
egress.kafka.bootstrap |
Список брокеров Kafka |
- host: kafka.test.com |
|
k8sService.kubeApi.port |
Порт сервиса Kubernetes |
443 |
|
egress.kubeIp |
IP-адрес сервиса Kubernetes |
||
egress.kubeapiPort |
Порт для сервиса Kubernetes на Egress |
4443 |
|
egress.selectors |
Селекторы Egress, установленного в прикладном namespace |
{«istio»:»egress-my_namespace»} |
|
ingress.selectors |
Селекторы Ingress, установленного в прикладном namespace |
{«istio»:»ingress-my_namespace»} |
|
ingress.balancer |
Тип Ingress Controller |
nginx |
Возможные значения: |
ingress.tracingCollector |
Адрес подключения к сервису публикации данных о трассировке запросов |
jaeger-collector.test-devpub-controlplanev2.svc:9411 |
|
ingress.istiodSvc |
Адрес подключения к istiod |
istiod-basic.synapse-smcp20-control-plane.svc:15012 |
|
fluentBit.bootstrapServers |
Список адресов брокеров Kafka для журналирования |
– в случае egress.kafka.updateBootstrapServersEnabled = false: |
|
fluentBit.topic |
Название топика для журналирования |
eventlog |
|
fluentBit.securityProtocol |
Конфигурация закрытого соединения с Kafka |
plaintext / ssl |
|
registry_path_loga |
Базовый путь до каталога с образами платформенного Logger |
public/efs |
|
fluentBit.sidecar.cpuLimit |
fluent-bit sidecar cpu limit |
200m |
|
fluentBit.sidecar.memLimit |
fluent-bit sidecar memory limit |
200Mi |
|
fluentBit.sidecar.cpuRequest |
fluent-bit sidecar cpu request |
100m |
|
fluentBit.sidecar.memRequest |
fluent-bit sidecar memory request |
100Mi |
|
fluentBit.sidecar.runAsUser |
fluent-bit sidecar securityContext runAsUser |
10001 |
Для k8s – 10001, для Openshift – идентификатор из допустимого сконфигурированного диапазона, например, 1001560000 (допустимый диапазон идентификаторов уточните у администраторов кластера Openshift) |
fluentBit.sidecar.runAsGroup |
fluent-bit sidecar securityContext runAsGroup |
10001 |
Для k8s – 10001, для Openshift – идентификатор из допустимого сконфигурированного диапазона, например, 1001560000 (допустимый диапазон идентификаторов уточните у администраторов кластера Openshift) |
vaultAgent.sidecar.cpuLimit |
Vault agent sidecar cpu limit |
100m |
|
vaultAgent.sidecar.cpuRequest |
Vault agent sidecar cpu request |
50m |
|
vaultAgent.sidecar.memRequest |
Vault agent sidecar memory request |
64Mi |
|
vaultAgent.sidecar.memLimit |
Vault agent sidecar memory limit |
128Mi |
|
operator.envoyFilterCreationMode |
Если выставлено значение |
synd |
|
registry_path_igeg |
Базовый путь до каталога компонента IGEG продукта Platform V Synapse Service Mesh |
public/efs |
|
egress.cert.ca |
Значение в base64-кодировке ca-root.pem для secret (egress-secrets) Egress Gateway |
||
egress.cert.crt |
Значение в base64-кодировке egress.pem для secret (egress-secrets) Egress Gateway |
||
egress.cert.key |
Значение в base64-кодировке egress.key для secret (egress-secrets) Egress Gateway |
||
egress.kafka.cert.ca |
Значение в base64-кодировке kafka-ca.pem для secret (egress-kafka-cert) Egress Gateway |
||
egress.kafka.cert.crt |
Значение в base64-кодировке kafka.pem для secret (egress-kafka-cert) Egress Gateway |
||
egress.kafka.cert.key |
Значение в base64-кодировке kafka.key для secret (egress-kafka-cert) Egress Gateway |
||
rls.cert.ca |
Значение в base64-кодировке ca-root.pem для secret (rate-limiter-secrets) RL Service |
||
rls.cert.crt |
Значение в base64-кодировке server.pem для secret (rate-limiter-secrets) RL Service |
||
rls.cert.key |
Значение в base64-кодировке server.key для secret (rate-limiter-secrets) RL Service |
||
operator.multiDataCenterSync.cert.ingress.mountPath |
Директория монтирования сертификатов для взаимодействия в рамках синхронизации квот между ЦОД на Ingress Gateway |
/var/rls/operator |
|
operator.multiDataCenterSync.cert.ingress.vaultSecretPath |
Полный путь до секрета в Secret Management System с сертификатами для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
DEV/TEST/KV/ingress-rloperator-secret |
|
operator.multiDataCenterSync.cert.ingress.ca.name |
Имя корневого сертификата (файла) удостоверяющего центра для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
ca-root.pem |
|
operator.multiDataCenterSync.cert.ingress.ca.content |
Содержимое корневого сертификата (файла) удостоверяющего центра для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
Значение должно быть закодировано в base64 |
|
operator.multiDataCenterSync.cert.ingress.crt.name |
Имя открытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
ingress.crt |
|
operator.multiDataCenterSync.cert.ingress.crt.content |
Содержимое открытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
Значение должно быть закодировано в base64 |
|
operator.multiDataCenterSync.cert.ingress.key.name |
Имя закрытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
ingress.key |
|
operator.multiDataCenterSync.cert.ingress.key.content |
Содержимое закрытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Ingress Gateway |
Значение должно быть закодировано в base64 |
|
operator.multiDataCenterSync.cert.egress.mountPath |
Директория монтирования сертификатов для взаимодействия в рамках синхронизации квот между ЦОД на Egress Gateway |
/var/rls/operator |
|
operator.multiDataCenterSync.cert.egress.vaultSecretPath |
Полный путь до секрета в Secret Management System с сертификатами для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
DEV/TEST/KV/egress-rloperator-secret |
|
operator.multiDataCenterSync.cert.egress.ca.name |
Имя корневого сертификата (файла) удостоверяющего центра для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
ca-root.pem |
|
operator.multiDataCenterSync.cert.egress.ca.content |
Содержимое корневого сертификата (файла) удостоверяющего центра для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
Значение должно быть закодировано в base64 |
|
operator.multiDataCenterSync.cert.egress.crt.name |
Имя открытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
egress.crt |
|
operator.multiDataCenterSync.cert.egress.crt.content |
Содержимое открытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
Значение должно быть закодировано в base64 |
|
operator.multiDataCenterSync.cert.egress.key.name |
Имя закрытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
egress.key |
|
operator.multiDataCenterSync.cert.egress.key.content |
Содержимое закрытого ключа (файла) для взаимодействия в рамках синхронизации квот между ЦОД для Egress Gateway |
Значение должно быть закодировано в base64 |
|
egress.fsGroup |
Идентификатор дополнительной группы для запуска Pod Egress |
10001 |
|
egress.runAsUser |
Идентификатор пользователя для запуска Pod Egress |
10001 |
|
egress.runAsGroup |
Идентификатор группы для запуска Pod Egress |
10001 |
|
ingress.fsGroup |
Идентификатор дополнительной группы для запуска Pod Ingress |
10001 |
|
ingress.runAsUser |
Идентификатор пользователя для запуска Pod Ingress |
10001 |
|
ingress.runAsGroup |
Идентификатор группы для запуска Pod Ingress |
10001 |
|
redis.fsGroup |
Идентификатор дополнительной группы для запуска Pod Redis и Sentinel |
10001 |
|
redis.runAsUser |
Идентификатор пользователя для запуска Pod Redis и Sentinel |
10001 |
|
redis.runAsGroup |
Идентификатор группы для запуска Pod Redis и Sentinel |
10001 |
|
vaultAgent.sidecar.runAsUser |
Идентификатор пользователя для запуска Vault agent sidecar |
10001 |
|
vaultAgent.sidecar.runAsGroup |
Идентификатор группы для запуска Vault agent sidecar |
10001 |
|
operator.fsGroup |
Идентификатор дополнительной группы для запуска Pod RL Operator |
10001 |
|
operator.runAsUser |
Идентификатор пользователя для запуска Pod RL Operator |
10001 |
|
operator.runAsGroup |
Идентификатор группы для запуска Pod RL Operator |
10001 |
|
rls.fsGroup |
Идентификатор дополнительной группы для запуска RL Service |
10001 |
|
rls.runAsUser |
Идентификатор пользователя для запуска Pod RL Service |
10001 |
|
rls.runAsGroup |
Идентификатор группы для запуска Pod RL Service |
10001 |
|
radish.fsGroup |
Идентификатор дополнительной группы для запуска Radish |
10001 |
|
radish.runAsUser |
Идентификатор пользователя для запуска Pod Radish |
10001 |
|
radish.runAsGroup |
Идентификатор группы для запуска Pod Radish |
10001 |
|
redis.hosts |
Адреса для подключения к Redis |
- redis-0.redis.svc.cluster.local |
|
redis.image |
Ссылка на образ с Redis 6 |
docker.registry.host/slo/container-8-ubi/redis-6@sha256:{ hash } |
|
sentinel.hosts |
Адреса для подключения к Sentinel |
- redis-sentinel-0.redis-sentinel.svc.cluster.local |
|
logging.senderType |
Тип отправки логов. Возможные варианты: kafka – в Kafka, rest – на endpoint LOGA logging.restEndpoint |
kafka |
|
logging.kafkaBootstrapServers |
Список адресов брокеров Kafka для журналирования |
– в случае egress.kafka.updateBootstrapServersEnabled = false: |
|
logging.kafkaTopic |
Топик Kafka для журналирования |
kafka |
|
logging.kafkaBrokerConfirmation |
Ожидание подтверждения от брокера Kafka |
false |
При значениях параметров srls.logSenderEnabled = true и egress.kafka.updateBootstrapServersEnabled = false необходимо указать значение false |
logging.restEndpoint |
Endpoint LOGA для журналирования |
http://localhost:10080/v1/events |
|
logging.tls.securityProtocol |
Протокол шифрования, варианты: ssl, plaintext |
plaintext |
|
logging.tls.version |
Минимальная версия протокола TLS для журналирования |
TLSv1.2 |
|
logging.tls.cipherSuites |
Комбинация шифров для TLS для журналирования |
||
logging.jsonKeyMessage |
Имя ключа для отображения сообщения события журналирования |
message |
|
logging.jsonKeyTimestamp |
Имя ключа для отображения времени возникновения события журналирования |
serverEventDatetime |
|
logging.jsonKeyLogLevel |
Имя ключа для отображения уровня события журналирования |
logLevel |
|
logging.jsonKeySubsystem |
Имя ключа для отображения кода подсистемы события журналирования |
subsystem |
|
rls.unconfiguredConsumers.loggingEnabled |
Включение логирования несконфигурированных потребителей |
false |
Включение опции приводит к деградации производительности, связанной с повышенным логированием. |
rls.unconfiguredConsumers.periodMinutes.logging |
Период вывода в лог (уровень Info) накопленных несконфигурированных потребителей |
5 |
Минимальное значение: 1 минута. |
rls.unconfiguredConsumers.periodMinutes.clearing |
Период очистки накопленных несконфигурированных потребителей |
200 |
Минимальное значение: 30 минут. |
rls.configManager.grpcHealth.intervalSeconds |
Период проверки соединения с RL Operator |
10 |
Значение указывается в секундах, нулевое и отрицательное значения отключают проверку |
rls.configManager.grpcHealth.timeoutSeconds |
Тайм-аут проверки соединения с RL Operator |
5 |
Значение указывается в секундах |
rls.configManager.grpcHealth.failureThreshold |
Количество последовательно проваленных попыток проверки соединения, после которых RL Service инициирует переподключение к RL Operator |
2 |
|
operator.localLimitsEnabled |
Включение/отключение функциональности локальных лимитов |
false |
Параметры числа реплик Pod:
Название |
Описание |
Значение по умолчанию |
|---|---|---|
egress.deployment.replicas |
Число реплик Egress Gateway |
2 |
ingress.deployment.replicas |
Число реплик Ingress Gateway |
2 |
operator.deployment.replicas |
Число реплик RL Operator |
2 |
rls.deployment.replicas |
Число реплик RL Service |
2 |
redis.deployment.replicas |
Число реплик Redis |
3 |
sentinel.deployment.replicas |
Число реплик Redis Sentinel |
3 |
radish.deployment.replicas |
Число реплик Radish |
2 |
Параметры лимитов и запросов ресурсов для Egress Gateway:
Название |
Значение по умолчанию |
|---|---|
egress.deployment.cpuLimit |
600m |
egress.deployment.memLimit |
900Mi |
egress.deployment.cpuRequest |
400m |
egress.deployment.memRequest |
700Mi |
Параметры readiness проб для Egress Gateway:
Название |
Значение по умолчанию |
|---|---|
egress.deployment.readinessProbe.periodSeconds |
2 |
egress.deployment.readinessProbe.failureThreshold |
30 |
Параметры лимитов и запросов ресурсов для Ingress Gateway:
Название |
Значение по умолчанию |
|---|---|
ingress.deployment.cpuLimit |
500m |
ingress.deployment.memLimit |
500Mi |
ingress.deployment.cpuRequest |
250m |
ingress.deployment.memRequest |
250Mi |
Параметры readiness проб для Ingress Gateway:
Название |
Значение по умолчанию |
|---|---|
ingress.deployment.readinessProbe.periodSeconds |
2 |
ingress.deployment.readinessProbe.failureThreshold |
30 |
Параметры лимитов и запросов ресурсов для RL Operator:
Название |
Значение по умолчанию |
|---|---|
operator.deployment.cpuLimit |
200m |
operator.deployment.memLimit |
200Mi |
operator.deployment.cpuRequest |
100m |
operator.deployment.memRequest |
100Mi |
Параметры readiness и liveness проб для RL Operator:
Название |
Значение по умолчанию |
|---|---|
operator.deployment.readinessProbe.periodSeconds |
10 |
operator.deployment.readinessProbe.failureThreshold |
3 |
operator.deployment.livenessProbe.periodSeconds |
10 |
operator.deployment.livenessProbe.failureThreshold |
3 |
Параметры лимитов и запросов ресурсов для Istio Sidecar RL Operator:
Название |
Значение по умолчанию |
|---|---|
operator.deployment.istio.cpuLimit |
100m |
operator.deployment.istio.memLimit |
200Mi |
operator.deployment.istio.cpuRequest |
50m |
operator.deployment.istio.memRequest |
100Mi |
Параметры лимитов и запросов ресурсов для RL Service:
Название |
Значение по умолчанию |
|---|---|
rls.deployment.cpuLimit |
500m |
rls.deployment.memLimit |
300Mi |
rls.deployment.cpuRequest |
250m |
rls.deployment.memRequest |
150Mi |
Параметры readiness и liveness проб для RL Service:
Название |
Значение по умолчанию |
|---|---|
rls.deployment.readinessProbe.periodSeconds |
10 |
rls.deployment.readinessProbe.failureThreshold |
3 |
rls.deployment.livenessProbe.periodSeconds |
2 |
rls.deployment.livenessProbe.failureThreshold |
1 |
Параметры лимитов и запросов ресурсов для Istio Sidecar RL Service (объем ресурсов зависит от потребителя, рекомендуется определять по результатам нагрузочного тестирования):
Название |
Значение по умолчанию |
|---|---|
rls.deployment.istio.cpuLimit |
300m |
rls.deployment.istio.memLimit |
500Mi |
rls.deployment.istio.cpuRequest |
200m |
rls.deployment.istio.memRequest |
300Mi |
Параметры лимитов и запросов ресурсов для Radish:
Название |
Значение по умолчанию |
|---|---|
radish.deployment.cpuLimit |
500m |
radish.deployment.memLimit |
300Mi |
radish.deployment.cpuRequest |
250m |
radish.deployment.memRequest |
150Mi |
Параметры readiness и liveness проб для Radish:
Название |
Значение по умолчанию |
|---|---|
radish.deployment.readinessProbe.periodSeconds |
10 |
radish.deployment.readinessProbe.failureThreshold |
3 |
radish.deployment.livenessProbe.periodSeconds |
10 |
radish.deployment.livenessProbe.failureThreshold |
1 |
Параметры лимитов и запросов ресурсов для Istio Sidecar Radish (объем ресурсов зависит от потребителя, рекомендуется определять по результатам нагрузочного тестирования):
Название |
Значение по умолчанию |
|---|---|
radish.deployment.istio.cpuLimit |
300m |
radish.deployment.istio.memLimit |
500Mi |
radish.deployment.istio.cpuRequest |
200m |
radish.deployment.istio.memRequest |
300Mi |
Параметры лимитов и запросов ресурсов для Redis:
Название |
Значение по умолчанию |
|---|---|
redis.deployment.cpuLimit |
300m |
redis.deployment.memLimit |
500Mi |
redis.deployment.cpuRequest |
150m |
redis.deployment.memRequest |
250Mi |
Параметры readiness и liveness проб для Redis:
Название |
Значение по умолчанию |
|---|---|
redis.deployment.readinessProbe.periodSeconds |
10 |
redis.deployment.readinessProbe.failureThreshold |
3 |
redis.deployment.livenessProbe.periodSeconds |
10 |
redis.deployment.livenessProbe.failureThreshold |
3 |
Параметры лимитов и запросов ресурсов для Redis Sentinel:
Название |
Значение по умолчанию |
|---|---|
sentinel.deployment.cpuLimit |
200m |
sentinel.deployment.memLimit |
200Mi |
sentinel.deployment.cpuRequest |
100m |
sentinel.deployment.memRequest |
100Mi |
Параметры readiness и liveness проб для Redis Sentinel:
Название |
Значение по умолчанию |
|---|---|
sentinel.deployment.readinessProbe.periodSeconds |
10 |
sentinel.deployment.readinessProbe.failureThreshold |
3 |
sentinel.deployment.livenessProbe.periodSeconds |
10 |
sentinel.deployment.livenessProbe.failureThreshold |
3 |
Параметры конфигурирования классов приоритетов:
Название |
Значение по умолчанию |
|---|---|
operator.deployment.priorityClassName |
Пустое значение |
rls.deployment.priorityClassName |
Пустое значение |
egress.deployment.priorityClassName |
Пустое значение |
ingress.deployment.priorityClassName |
Пустое значение |
radish.deployment.priorityClassName |
Пустое значение |
redis.deployment.priorityClassName |
Пустое значение |
sentinel.deployment.priorityClassName |
Пустое значение |
Параметры конфигурирования стратегии RollingUpdate:
Название |
Значение по умолчанию |
|---|---|
operator.deployment.maxUnavailable |
25% |
rls.deployment.maxUnavailable |
25% |
egress.deployment.maxUnavailable |
25% |
ingress.deployment.maxUnavailable |
25% |
operator.deployment.maxSurge |
25% |
rls.deployment.maxSurge |
25% |
egress.deployment.maxSurge |
25% |
ingress.deployment.maxSurge |
25% |
Параметры включения распределения Pod по разным Node среды исполнения:
Название |
Описание |
Значение по умолчанию |
|---|---|---|
rls.selfAntiAffinity.enabled |
Для rate-limiter-service |
true |
operator.selfAntiAffinity.enabled |
Для rloperator |
true |
egress.selfAntiAffinity.enabled |
Для egress |
true |
ingress.selfAntiAffinity.enabled |
Для ingress |
true |
radish.selfAntiAffinity.enabled |
Для Radish |
true |
redis.selfAntiAffinity.enabled |
Дл Redis |
true |
Параметры для настройки взаимодействия с компонентом SYND:
Название |
Описание |
Значение по умолчанию |
|---|---|---|
synd.grpcPort |
Значение порта для подключения SYND к RL Operator |
40002 |
synd.grpcTimeOutSec |
Тайм-аут (в секундах) на обращение к SYND |
1 |
synd.requestRate |
Период запроса (в секундах) компонентом SYND актуальной конфигурации у RL Operator |
5 |
Список параметров для настройки артефакта GlobalRateLimit при развертывании по агентской схеме.
Название |
Описание |
Пример значения |
|---|---|---|
limits.srlsConfig.name |
Название экземпляра артефакта GlobalRateLimit |
rate-limit-config |
limits.srlsConfig.namespace |
Идентификатор namespace |
«service-namespace» |
limits.istioCommon.selectorLabels |
Labels «istio» для определения Pod Ingress/Egress Gateway |
„{«istio»:»ingressIstioSelector»}“ |
limits.visibility |
Отвечает за область видимости данного CRD ( |
namespace |
limits.rlsService |
Host RL Service (должен быть указан Headless Service) |
rate-limiter-headless-service |
limits.rlsServerPort |
Значение порта для RL Service |
8081 |
limits.rlsNamespace |
Идентификатор namespace, в котором развернут SRLS |
«srls-namespace» |
limits.tlsEnabled |
Включение/отключение TLS |
False |
limits.tlsByIstio |
Значение |
false |
limits.cert.ca |
Расположение сертификата cert_ca в файловой системе Pod Ingress/Egress Gateway |
|
limits.cert.crt |
Расположение сертификата cert_crt в файловой системе Pod Ingress/Egress Gateway |
|
limits.cert.key |
Расположение сертификата cert_key в файловой системе Pod Ingress/Egress Gateway |
|
endpoints |
Секция endpoints артефакта GlobalRateLimit, описанного в подразделе «Формирование и применение артефакта GlobalRateLimit» раздела «Использование программного компонента» документа «Руководство прикладного разработчика» |
|
bodySizesEntries |
Секция body_sizes_entries артефакта GlobalRateLimit, описанного в подразделе «Формирование и применение артефакта GlobalRateLimit» раздела «Использование программного компонента» документа «Руководство прикладного разработчика» |
Значения по умолчанию, приведенные в двойных фигурных скобках, указывают на стандартные переменные Job CDJE DevTools.
Параметры установки, специфичные для выбранного варианта развертывания#
Централизованный вариант развертывания:
Название |
Значение |
|---|---|
srls.deployCentr |
|
srls.deployDecentr |
|
Централизованный вариант (c шифрованием TLS с помощью Synapse Service Mesh/Istio) развертывания:
Название |
Значение |
|---|---|
srls.tlsEnabled |
|
srls.tlsByIstio |
|
srls.peerAuthMode |
|
srls.deployCentr |
|
srls.deployDecentr |
|
rls.tls.enable |
|
Централизованный вариант (c шифрованием TLS с помощью собственных сертификатов) развертывания:
Название |
Значение |
|---|---|
srls.tlsEnabled |
|
srls.tlsByIstio |
|
srls.deployCentr |
|
srls.deployDecentr |
|
rls.tls.enable |
|
Централизованный вариант (без EnvoyFilter) развертывания:
Название |
Значение |
|---|---|
srls.deployCentr |
|
srls.deployDecentr |
|
operator.envoyFilterCreationMode |
|
Примечание! Не создавать артефакты ClusterRole
srls-roleи RoleBindingsrls-role-binding, указанные в подразделе «Ролевая модель централизованного варианта развертывания» раздела «Подготовка окружения» данного документа.
При необходимости включения TLS требуется дополнительно задать параметры
srls.tlsEnabled,srls.tlsByIstio,srls.peerAuthModeиrls.tls.enableв соответствии с выбранным вариантом реализации TLS.
Децентрализованный вариант развертывания:
Название |
Значение |
|---|---|
srls.deployCentr |
|
srls.deployDecentr |
|
Выбор Key-Value хранилища:
Название |
Значение по умолчанию |
Описание |
|---|---|---|
srls.deployRadish |
|
Будет выполнена установка Radish |
srls.deployRedis |
|
Будет выполнена установка Redis и Redis Sentinel |
Для отправки логов средствами, встроенными в RL Operator, RL Service и Radish (опционально), необходимо дополнительно установить параметр шаблонизации:
srls.logSenderEnabled: true
Установить значения у следующих стендозависимых параметров:
egress.kafka.updateBootstrapServersEnabled: true // true – обновление списка egress.kafka.bootstrap; false – фиксированный набор egress.kafka.bootstrap
egress.kafka.port: 19093
egress.kafka.proxy.port: 9093
egress.kafka.proxy.resolution: DNS
egress.kafka.bootstrap: // заполнить значение для используемого кластера kafka
- host: kafka.test.ru
port: 9093
ip: { IP_ADDRESS } // указать фактический IP адрес брокера
logging.senderType: kafka
logging.kafkaBootstrapServers: egress-kafka-rls-svc.<srls.namespace>.svc.cluster.local:19093
logging.kafkaTopic: rls_test_topic // установить свой топик для отправки
logging.tls.securityProtocol: plaintext
Выбор параметров пула соединений для RL Service#
При использовании Key-Value хранилища Radish соединения до сервера Radish хранятся в пуле для повторного использования. Переиспользование соединений позволяет повысить производительность SRLS, так как создание соединений является «дорогостоящей» операцией, особенно при использовании istio-sidecar (и особенно при включенном шифровании трафика между istio-sidecar). Пул соединений Radish может быть:
статический – количество соединений фиксированное, новые соединения создаются только при отказе открытых ранее соединений;
динамический – количество соединений может варьироваться от минимального до максимального значений, новые соединения создаются и сохраняются при необходимости, динамически созданные соединения закрываются с течением времени.
Использование пула большого размера позволяет снизить накладные расходы на отправку запросов, но увеличивает нагрузку на инфраструктуру (istio-sidecar на стороне RL Service и Radish), замедляет старт подов RL Service (ввиду необходимости создания большого количество соединений при запуске), замедляет процесс становления нового master (при выборе нового master все экземпляры RL Service пересоздают соединения). Динамический пул позволяет снизить накладные расходы во время более высокой нагрузки, но не испытывать негативных последствий большого количества соединений во время более низкой нагрузки.
Для использования статического пула значение параметра rls.radishPoolMaxSize не должно превышать значение параметра rls.radishPoolMinSize. Если же rls.radishPoolMaxSize превышает rls.radishPoolMinSize, то будет использован динамический пул. Добавление новых соединений в динамический пул происходит при необходимости использования соединения, когда в пуле нет доступных соединений. Поведение динамического пула можно описать следующим образом:
при создании пула открывается
rls.radishPoolMinSizeсоединений;если
rls.radishPoolMinSizeсоединений достаточно для обработки входящей нагрузки, то новые соединения не создаются;если при повышении нагрузки
rls.radishPoolMinSizeсоединений становится недостаточно (пул опустошается), то создаются новые соединения, но не более (rls.radishPoolMaxSize-rls.radishPoolMinSize) штук;после снижения нагрузки запускается механизм удаления динамически созданных соединений, со временем в пуле остается
rls.radishPoolMinSizeсоединений.
Динамически созданные соединения удаляются из пула с интервалом кратным rls.radishPoolShrinkThresholdSeconds секунд по rls.radishPoolShrinkValue штук за итерацию.
Выбор варианта установки EnvoyFilter для SRLS#
Варианты создания артефактов EnvoyFilter:
Автоматизированное создание компонентом RL Operator:
создание артефактов средствами Kubernetes;
применение конфигурации, созданной на основе артефактов EnvoyFilter, с использованием компонента SYND.
Ручное добавление:
самостоятельное создание артефактов;
развертывание артефактов с использованием Deploy Tools.
Выбор конкретного варианта зависит от значения стендозависимого параметра operator.envoyFilterCreationMode (см. раздел «Параметры установки» данного документа).
При выборе автоматизированного варианта артефакты EnvoyFilters создаются для версий Envoy 1.25 (Istio 1.17, SSM 3.9) и выше (версии ниже не поддерживаются)
Автоматизированное создание артефактов EnvoyFilter средствами Kubernetes#
Для автоматизированного создания артефактов EnvoyFilter в процессе обработки артефакта GlobalRateLimit средствами Kubernetes необходимо установить значение k8s стендозависимого параметра operator.envoyFilterCreationMode.
Применение конфигурации с использованием компонента SYND#
Для применения конфигурации с использованием компонента SYND необходимо установить значение synd стендозависимого параметра operator.envoyFilterCreationMode.
При выборе этого способа до установки SRLS должен быть установлен SYND, а также значение стендозависимого параметра
srls.peerAuthModeдолжно быть STRICT.
Применение конфигурации происходит не чаще заданного в артефакте DiscoveryExport периода (см. стендозависимый параметр
synd.requestRateв разделе «Параметры установки» данного документа).
Самостоятельное создание артефактов EnvoyFilter#
Если для стендозависимого параметра operator.envoyFilterCreationMode выставлено значение manual, то автоматическое создание артефактов EnvoyFilter отключено. В этом случае при установке необходимо выбрать соответствующий артефакт Role и создать необходимые для работы артефакты EnvoyFilter самостоятельно. Инструкция по созданию артефакта EnvoyFilter описана в подразделе «Конфигурирование артефактов среды контейнеризации и Istio для децентрализованного варианта развертывания» раздела Подключение и конфигурирование документа «Руководство прикладного разработчика».
Данный вариант работы с артефактами EnvoyFilter является вариантом по-умолчанию.
Развертывание артефактов EnvoyFilter с использованием Deploy Tools#
Если автоматическое создание артефактов EnvoyFilter отключено (для стендозависимого параметра operator.envoyFilterCreationMode установлено значение manual), можно так же воспользоваться развертыванием артефактов EnvoyFilter с использованием Deploy Tools. Для этого необходимо параметры в секции srls.* выставить в значение false, кроме параметров, указанных в таблице ниже.
Название |
Значение |
|---|---|
srls.deployClusterFilter |
|
srls.deployEndpointFilter |
|
Ограничение: текущая реализация шаблонов EnvoyFilter совместима с версиями Envoy 1.25 (Istio 1.17, SSM 3.9) и выше (версии ниже не поддерживаются).
Список параметров для настройки артефактов EnvoyFilter при развертывании по агентской схеме:
Название |
Описание |
Пример значения |
|---|---|---|
limits.srlsConfig.name |
Название экземпляра артефакта GlobalRateLimit |
rate-limit-config |
limits.srlsConfig.namespace |
Идентификатор namespace |
«service-namespace» |
limits.istioCommon.selectorLabels |
Labels «istio» для определения Pod Ingress/Egress Gateway |
„{«istio»:»ingressIstioSelector»}“ |
limits.visibility |
Отвечает за область видимости данного CRD ( |
namespace |
limits.rlsService |
Host RL Service (должен быть указан Headless Service) |
rate-limiter-headless-service |
limits.rlsServerPort |
Значение порта для SRLS |
8081 |
limits.rlsNamespace |
Идентификатор namespace, в котором развернут SRLS |
«srls-namespace» |
limits.tlsEnabled |
Включение/отключение TLS |
False |
limits.cert.ca |
Расположение сертификата cert_ca в файловой системе Pod Ingress/Egress Gateway |
|
limits.cert.crt |
Расположение сертификата cert_crt в файловой системе Pod Ingress/Egress Gateway |
|
limits.cert.key |
Расположение сертификата cert_key в файловой системе Pod Ingress/Egress Gateway |
|
endpoints |
Для корректного формирования артефактов EnvoyFilter и их наполнения в зависимости от требуемого вида идентификации потребителя (by_header, by_CN, bypath, by_size) или ресурса (by_prefix) необходимо заполнить поле |
После установки в namespace (limits.srlsConfig.namespace) появится:
EnvoyFilter «Cluster» с именем
{limits.srlsConfig.namespace}-rls-cluster;на каждый endpoint, указанный в поле
endpoints, EnvoyFilter «Endpoint» с именем{limits.srlsConfig.namespace}-{ednpoint.shortname}.
Ручная установка сервиса#
Перед установкой необходимо заполнить стендозависимые и связанные с шаблонизацией параметры. Описание параметров представлено в разделе «Параметры установки».
Разархивировать дистрибутив.
Открыть консоль и перейти в папку
package/conf/helm/application/srlsдистрибутива.Запустить установку в namespace командой:
helm upgrade srls .
Сборка образов для компонента SRLS из дистрибутива#
Разархивировать дистрибутив.
Открыть консоль и перейти в папку
package/дистрибутива.Собрать образы, выполнив команды:
docker build -f docker/operator/Dockerfile . -t {registry}/{registry_path}/srls/operator:{version}
docker build -f docker/rls/Dockerfile . -t {registry}/{registry_path}/srls/rls:{version}
docker build -f docker/radish/Dockerfile . -t {registry}/{registry_path}/srls/radish:{version}
docker build -f docker/redis/Dockerfile . -t {registry}/{registry_path}/srls/redis:{version}
docker build -f docker/sentinel/Dockerfile . -t {registry}/{registry_path}/srls/sentinel:{version}
Здесь:
registry– ссылка до registry;registry_path– базовый путь до каталога с образами;version– версия дистрибутива (например, 2.6).
Отправить образы в хранилище, выполнив команды:
docker push {registry}/{registry_path}/srls/operator:{tag}
docker push {registry}/{registry_path}/srls/rls:{tag}
docker push {registry}/{registry_path}/srls/radish:{tag}
docker push {registry}/{registry_path}/srls/redis{tag}
docker push {registry}/{registry_path}/srls/sentinel{tag}
Здесь:
registry– ссылка до registry;registry_path– базовый путь до каталога с образами;tag– тег собранного образа, например, версия дистрибутива.
Предварительная настройка Deploy Tools#
Важно!
Для корректной установки необходимо использовать компонент CDJE Deploy Tools продукта Platform V DevOps Tools (DOT) версии 1.3 и выше.
При обновлении на версию 3.11 в связи с переходом на установку при помощи Helm Chart для корректного обновления манифестов требуется удалить все ресурсы компонента SRLS из namespace (label
proj: synapse-rls) и запустить установку новой версии.
В файле environment.json в блоке playbooks_fpi должны присутствовать сценарии HELM_DEPLOY и HELM_UNDEPLOY. Если их нет, то необходимо добавить:
{
"playbooks_fpi": {
"HELM_DEPLOY": {
"id": 97
},
"HELM_UNDEPLOY": {
"id": 98
}
}
}
Автоматизированная установка сервиса с использованием Deploy Tools#
Важно!
Для корректной установки необходимо выполнить шаг «Предварительная настройка Deploy Tools», описанный выше.
Настроить Job (дистрибутив собран с поддержкой Deploy Tools).
Примечание — настройка заключается в указании для job параметров, описанных в разделе «Параметры установки» в таблицах «Параметры шаблонизации» и «Список и описание параметров».
Запустить миграцию конфигурационных файлов — набор сценариев MIGRATION_FP_CONF.
Скорректировать значения параметров шаблонизации и стендозависимых параметров.
Примечание — значение параметра srls.deployToK8s определяет платформу контейнеризации для запуска компонентов сервиса (для установки Kubernetes и Platform V DropApp значение
True).Запустить установку — сценарий HELM_DEPLOY.
Автоматизированная установка сервиса по агентской схеме с использованием Deploy Tools#
Важно!
Для корректной установки необходимо выполнить шаг «Предварительная настройка Deploy Tools», описанный выше.
Данный вариант развертывания позволяет одновременно с установкой дистрибутива бизнес-приложения или технологического сервиса произвести автоматическую установку компонента SRLS и создать артефакт GlobalRateLimit. Возможен вариант только с созданием артефакта GlobalRateLimit без установки компонента SRLS.
Настроить Job бизнес-приложения или технологического сервиса.
В схему справочника конфигураций развертывания (
subsystem.json) добавить секциюagentsдля определения конфигураций развертывания из дистрибутива SRLS:
{ ... "agents": { "SRLS_agent": { "groupId": "", "artifactId": "", "version": "", "fpi-name": "", "classifier": "", "packaging": "", ... } } }Запустить миграцию конфигурационных файлов, указав в поле параметров Job
COMPONENTSсконфигурированный агент — набор сценариев MIGRATION_FP_CONF.Настроечные параметры из дистрибутива SRLS будут подгружены в пространство конфигурирования бизнес-приложения или технологического сервиса.
Скорректировать значения параметров шаблонизации и стендозависимых параметров.
Для создания артефакта GlobalRateLimit необходимо выставить значение
Trueпараметра шаблонизации srls.deployLimits и заполнить параметры шаблонизации endpoints и bodySizesEntries в соответствии с разделом «Параметры установки» настоящего документа.Если требуется установить артефакты EnvoyFilter, необходимо настроить соответствующие параметры, описанные в разделе «Развертывание артефактов EnvoyFilter с использованием Deploy Tools» данного документа.
Если требуется установить дистрибутив в децентрализованном варианте развертывания SRLS, необходимо настроить соответствующие параметры, описанные в разделах «Параметры установки» и «Параметры установки, специфичные для выбранного варианта развертывания» настоящего документа.
Если установка не требуется, необходимо выставить значение
Falseпараметров шаблонизации srls.deployCentr, srls.deployDecentr.
Запустить установку бизнес-приложения или технологического сервиса, указав в поле параметров Job
COMPONENTSсконфигурированный агент — набор сценариев HELM_DEPLOY.
Автоматизированная установка сервиса с использованием Synapse Installer#
Скачать необходимую версию дистрибутива.
Получить из дистрибутива конфигурационный файл:
<дистрибутив>/package/conf/helm/application/srls/values.yaml.Поместить полученный в пункте выше файл в git-репозиторий со стендозависимыми параметрами.
Важно!
Для корректной установки файл должен быть помещен по следующему пути:
<git-репозиторий>/<namespace>/package/conf/helm/srls/values.yaml.Скорректировать значения параметров шаблонизации и стендозависимых параметров.
Примечание — значение параметра srls.deployToK8s определяет платформу контейнеризации для запуска компонентов сервиса (для установки Kubernetes и Platform V DropApp значение
True).Запустить job с указанием git-репозитория с параметрами и указанием места установки.
Сбор метрик с сервиса#
Для сбора метрик с помощью Unimon необходимо добавить в ConfigMap name: opm.unimon.unimon-agent.conf параметр unimon-agent.sidecar.istio.exclude.outbound.ports: '2112,8081'.
Для сбора метрик с помощью GATM необходимо добавить задание srls-pods в файл scrape.yml конфигурации ConfigMap.
Пример ConfigMap (<дистрибутив>/package/conf/other/configmaps/synapse-metrics-cm.yaml):
kind: ConfigMap
apiVersion: v1
metadata:
name: synapse-metrics-agent-scrapeconfig
namespace: ${srls.namespace}
data:
scrape.yml: |
global:
scrape_interval: 1m
scrape_timeout: 1m
external_labels:
cluster: apps.ocp.syn-dev.solution.test
scrape_configs:
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
job_name: srls-pods
scrape_interval: 15s //интервал сбора метрик с Pod компонентов SRLS
kubernetes_sd_configs:
- role: pod
namespaces:
own_namespace: true
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_metrics_synapse_sber_scrape]
action: keep
regex: true
- source_labels: [ __meta_kubernetes_pod_container_port_name]
action: keep
regex: metrics-(.+)
- source_labels: [__meta_kubernetes_pod_label_proj]
action: keep
regex: synapse-rls
- source_labels: [__meta_kubernetes_pod_annotation_metrics_synapse_sber_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_metrics_synapse_sber_port]
action: replace
regex: (.+):(?:\d+);(\d+)
replacement: ${1}:${2}
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
scheme: http
Более подробно о параметрах конфигурации смотрите в документации на соответствующий компонент.
Установка дашбордов в программном компоненте Indicator (INDA) программного продукта Platform V Monitor (OPM)#
В поставку дистрибутива входят следующие дашборды:
SRLS.json — метрики работы сервиса srl;
SRLS Go Metrics.json — метрики потребления ресурсов srl;
SRLS Operator.json – метрики работы оператора RL Operator;
SRLS Operator Go Metrics.json — метрики потребления ресурсов RL Operator;
SRLS Client Metrics.json – метрики для биллинга потребителей;
SRLS Radish.json — метрики работы Radish;
SRLS Radish Go Metrics.json — метрики потребления ресурсов Radish.
Место хранения:
Объединенный мониторинг Unimon — папка
package/conf/other/dashboard.Сбор и анализ метрик GATM — папка
package/conf/other/dashboard/GATM.
Для корректной работы дашбордов необходимо знать название таблицы в базе данных Druid, в которую осуществляется загрузка метрик от RL Service и RL Operator (узнать название таблицы можно у администраторов Platform V Monitor).
Для установки дашборда необходимо:
Выполнить вход в Indicator Platform V Monitor.
Перейти на вкладку «Dashboards» → «Manage» (1).
Нажать на кнопку «Import» (2).

Рисунок. Вкладка «Dashboards» компонента Indicator Platform V Monitor
Нажать на кнопку «Upload JSON file» (3).

Рисунок. Экран компонента Indicator Platform V Monitor, кнопка «Upload JSON file»
В появившемся окне выбрать файл с дашбордом.
В окне выбрать источник базы данных для получения метрик «Indicator-Abyss» из выпадающего списка (4).
В поле «druidtable» изменить название (srlsunimon) таблицы в базе данных Druid на требуемое (5).

Рисунок. Экран компонента Indicator Platform V Monitor для настройки загруженного дашборда
Нажать на кнопку «Import».
Примеры дашбордов:

Рисунок. Дашборд SRLS.json

Рисунок. Дашборд SRLS Operator.json

Рисунок. Дашборд SRLS Go Metrics.json, SRLS Operator Go Metrics.json, SRLS Radish Go Metrics.json

Рисунок. Дашборд SRLS Client Metrics.json

Рисунок. Дашборд SRLS Radish.json
Дашборд «SRLS Client Metrics» позволяет выбрать namespace, в котором развернут компонент SRLS, и уникальное название метрики (ratelimiterservice_rate_limit_*key*_over_limit), сформированное из CRD GlobalRateLimit в этом namespace. Для синхронизации данных с метриками, полученными в namespace с различных Pod компонентов SRLS, в дашборде используется параметр «rounding time» — период агрегации данных (1M,2M,5M,15M,30M,1H,2H).
Первая панель на дашборде отображает набор метрик, общих для всех потребителей. График Over limit indicators отображает набор лимитов и окрашивает в красный цвет соответствующий шестигранник при превышении установленной квоты за выбранный период отображения. График Soft limit events отображает события превышения установленных soft-квот. Графики Requests to SRLS и Requests to Endpoint '$key' отображают количество всех (красным) и одобренных SRLS (зеленым) запросов соответственно на весь SRLS и на endpoint (endpoint определяется на основе выбранной метрики ratelimiterservice_rate_limit_*key*_over_limit).
Панель «Request» отображает количество запросов за выбранный период агрегации для выбранной метрики ratelimiterservice_rate_limit_*key*_over_limit (график Requests to Consumer '$key'). Также на панели дополнительно отображаются значение и единица измерения квоты, соответствующие выбранной метрике.
Панель «Limit Status» отображает графики метрик следующих типов: near limit (превышение уровня 80% от установленной квоты), over limit (превышение установленной квоты) и soft limit (превышение установленной soft-квоты). Для каждого из типов лимитов представлены графики, соответствующие выбранной метрике ratelimiterservice_rate_limit_*key*_over_limit: Total $type limit — общее число запросов свыше соответствующей квоты; Delta $type limit — приращение числа запросов свыше соответствующей квоты за период агрегации данных.
Настройка интеграции#
Ниже описана интеграция с компонентами MONA и LOGA рекомендованного АО «СберТех» продукта Platform V Monitor, с компонентом GATM рекомендованного АО «СберТех» продукта Platform V Synapse Service Mesh и Системой управления секретами Secret Management System. На усмотрение пользователя могут быть настроены интеграции с аналогичными по функциональности продуктами от других производителей.
Интеграция с программным компонентом Объединенный мониторинг Unimon (MONA) реализована в соответствии с требованиями MONA: компонент публикует метрики в формате Prometheus. Для артефактов Service RL Operator, RL Service, Radish добавлены необходимые аннотации Prometheus:
prometheus.io.path;
prometheus.io.port;
prometheus.io.scrape.
Интеграция с программным компонентом Сбор и анализ метрик (GATM) реализована в соответствии с требованиями GATM: компонент публикует метрики в формате Prometheus. Для артефактов Deployment RL Operator, RL Service, Radish добавлены необходимые аннотации:
metrics.synapse.sber/path;
metrics.synapse.sber/port;
metrics.synapse.sber/scrape.
Интеграция с программным компонентом Журналирование (LOGA) реализована в соответствии с требованиями сервиса журналирования: используется FluentBit sidecar для компонентов RL Operator и RL Service.
При установке должна быть включена опция:
srls.fluentBitSidecarEnabled = true и заполнены соответствующие поля «ufs-logger» (см. раздел «Параметры установки»).
Название |
Описание |
Значение по умолчанию |
|---|---|---|
srls.fluentBitSidecarEnabled |
Если True, то RL Operator и RL Service будут запущены с sidecar fluent-bit |
true |
TENANT_CODE |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger |
Если параметр не задан в настройках инструмента/распаковки, то используется значение srls.tenantCode |
fluentBit.bootstrapServers |
Список адресов брокеров Kafka для журналирования |
– в случае egress.kafka.updateBootstrapServersEnabled = false: |
fluentBit.topic |
Название топика для журналирования |
eventlog |
fluentBit.securityProtocol |
Конфигурация закрытого соединения с Kafka |
plaintext / ssl |
Интеграция с Системой управления секретами Secret Management System реализована установкой значения
trueстендозависимого параметраsrls.vaultAgentEnabled(см. раздел «Параметры установки» данного документа).Интеграция с компонентом SYND реализована установкой значения
syndстендозависимого параметраoperator.envoyFilterCreationMode(см. раздел «Параметры установки» данного документа).Интеграция с Сервисом интеграции и оркестрации микросервисов в облаке (Istio или Platform V Synapse Service Mesh) реализована по умолчанию указанием в шаблонах артефактов аннотации
sidecar.istio.io/inject: 'true', для этого namespace должен быть подключен к Istio (см. раздел «Подготовка окружения» данного документа).Интеграция с брокером сообщений (Kafka или программным компонентом KFKA) реализована только для интеграции с программным компонентом Журналирование (LOGA) без FluentBit sidecar.
При установке должна быть включена опция:
srls.logSenderEnabled = true и заполнены соответствующие поля (см. раздел «Параметры установки»):
Название |
Описание |
Значение по умолчанию |
|---|---|---|
srls.logSenderEnabled |
Если |
True |
srls.tenantCode |
Код тенанта |
SRLS |
logging.kafkaBootstrapServers |
Список адресов брокеров Kafka для журналирования |
– в случае egress.kafka.updateBootstrapServersEnabled = false: |
logging.kafkaTopic |
Название топика для журналирования |
eventlog |
logging.tls.securityProtocol |
Конфигурация закрытого соединения с Kafka |
plaintext |