Руководство по установке#
В руководстве приведены инструкции по установке компонента Synapse Rate Limiter (SRLS) продукта Synapse Enterprise Integration (SEI).
Термины и определения#
Термин/Аббревиатура |
Определение |
|---|---|
API |
Application Programming Interface |
CPU |
Central Processing Unit, центральный процессор |
Endpoint |
Сетевая точка, обеспечивающая взаимодействие с поставщиком |
GATM |
Программный компонент Сбор и анализ метрик (GATM) продукта Platform V Synapse Service Mesh (SSM) |
gRPC |
Современная высокопроизводительная платформа, которая используется для развития устаревшего протокола удаленного вызова процедур (RPC) |
Ingress Gateway |
Ресурс Istio, который описывает правила маршрутизации и балансировки входящих запросов. Альтернатива K8s Ingress, настраивается через ресурсы Gateway, Virtual Service и при необходимости DestinationRule |
K8s |
Kubernetes, платформа с открытым исходным кодом для управления кластерами приложений и сервисами на основе контейнеров |
OpenSSL |
Криптографическая библиотека с открытым исходным кодом и инструментарий SSL |
OS |
OpenShift, открытая и расширяемая платформа приложений-контейнеров |
RL Operator |
Компонент SRLS, обеспечивающий конфигурирование Ingress Gateway в соответствии с CRD в runtime |
RL Service |
Компонент SRLS, сервис расчета лимитов, принимает gRPC-запросы от Ingress Gateway в прикладных namespace, содержащих информацию о домене (в качестве домена используется название namespace), о вызываемом сервисе и данные из заголовка synapse-consumerid |
Runtime |
Время выполнения |
SRLS (SRL) |
Программный компонент Synapse Rate Limiter Service (Synapse Rate Limit), сервис ограничения (квотирования) входящих запросов, необходим для ограничения прикладной нагрузки (payload) со стороны потребителя на защищаемые сервисы, исполняемые в рамках Synapse Service Mesh |
TPS |
Transactions per second, транзакций в секунду |
Deploy Tools |
Программный компонент, предназначенный для автоматизации развертывания и автоматической установки технологических сервисов и бизнес-приложений на тестовых и промышленных стендах (CDJE), программного продукта Platform V DevOps Tools (DOT) |
Unimon |
Программный компонент Объединенный мониторинг Unimon (MONA) программного продукта Platform V Monitor (OPM) |
Децентрализованный Rate Limit |
Компонент Rate Limit, специфичный для одного namespace |
Pod |
Набор контейнеров внутри узла кластера Kubernetes или Red Hat OpenShift (опционально) |
ТУЗ |
Технологическая учетная запись |
SecMan |
Система управления секретами Secret Management System |
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Категория ПО |
Обязательность установки (да/нет) |
Наименование ПО |
Версия |
Продукт, функциональная совместимость с которым подтверждена |
Описание |
|---|---|---|---|---|---|
Операционная система |
Да |
ОС Альт 8 СП |
10.0 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована ОС – Platform V SberLinux OS Server), см. раздел «Платформенные зависимости» |
ОС контейнеров для запуска модулей компонента |
Red Hat Enterprise Linux |
7.9.9 и выше |
Опционально |
|||
Среда контейнеризации |
Да |
1.25 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости» |
Платформа контейнеризации для запуска компонентов сервиса |
|
Red Hat OpenShift |
4.8 и выше |
Опционально |
|||
Средство контейнеризации |
Да |
1.13.1 и выше |
Рекомендовано |
Инструмент для автоматизации работы с контейнерами |
|
Инструмент сборки, тестирования, развертывания контейнеризированных приложений |
Нет |
2.346.0 и выше |
Рекомендовано |
Сервер автоматизации, используемый для внедрения непрерывной интеграции и непрерывной доставки (CI/CD) для проектов программного обеспечения |
|
Брокер сообщений |
Нет |
3.4.0 и выше |
Опционально. Правообладателем АО «СберТех» также рекомендован брокер сообщений, основанный на Kafka, – Platform V Corax, см. раздел «Платформенные зависимости» |
Событийный обмен сообщениями между модулями компонента |
|
Сервис интеграции и оркестрации микросервисов в облаке |
Да |
1.17 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio, – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости» |
Сервис интеграции микросервисов в облаке |
|
Хранилище данных |
Да |
6.2.7 и выше |
Рекомендовано. Образы, с которыми была проверена работоспособность компонента SRLS: docker.io/library/redis:6.0.9, docker.io/library/redis:6.2.11, docker.io/library/redis:7.0.10 |
Внешний распределенный кеш используется для корректного подсчета лимитов для сервиса, запущенного более чем в одном экземпляре |
|
Система мониторинга (сбор и хранение метрик) |
Нет |
2.37.0 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендован Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения – Объединенный мониторинг Unimon Platform V Monitor, см. раздел «Платформенные зависимости» |
Система для сбора и хранения численных метрик |
|
Система мониторинга (визуализация) |
Нет |
9.5 и выше |
Рекомендовано |
Система для визуализации численных метрик (предоставленных, например, Prometheus) |
|
Система управления секретами |
Нет |
Secret Management System |
1.10.0 и выше |
Рекомендовано |
Система управления аутентификационными данными сервисных аккаунтов или учетных записей |
Средство упаковки |
Нет |
Helm |
3.13.0 и выше |
Рекомендовано |
Средство упаковки с открытым исходным кодом, которое помогает установить приложения Kubernetes и управлять их жизненным циклом |
Здесь и далее поддерживаемой системой приложений-контейнеров является Kubernetes (использование Red Hat OpenShift – опционально). В именах и параметрах системы, в названиях переменных, настроек могут встречаться названия (в т.ч. сокращения) систем контейнеризации, которые одинаково применимы для обеих сред контейнеризации.
Примечание:
*
Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).
Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).
**
Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.
Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.
Платформенные зависимости#
Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:
Наименование продукта |
Код |
Версия продукта |
Код и наименование компонента |
Обязательность установки (да/нет) |
Описание |
Аналог других производителей |
|---|---|---|---|---|---|---|
Platform V Monitor |
OPM |
1.2 и выше до потери обратной совместимости |
LOGA Журналирование |
Нет |
Сервис для хранения лог-файлов |
Любой сервис сбора записей о событиях, совместимый с fluent-bit, например: Elasticsearch, InfluxDB |
MONA Объединенный мониторинг Unimon |
Нет |
Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения |
Prometheus 2.37.0 |
|||
INDA Indicator |
Нет |
Сервис контроля качества работы сервисов платформы, обеспечивающий представление информации о состоянии сервисов посредством обработки значений метрик с последующей визуализацией метрик на различных типах панелей |
Grafana 7.5 |
|||
Platform V DevOps Tools |
DOT |
1.3 |
CDJE Deploy tools |
Нет |
Сервис для развертывания и обновления компонентов Платформы и приложений потребителей, для настройки и обслуживания инфраструктуры Платформы |
Ручное развертывание |
Platform V Synapse Service Mesh |
SSM |
3.9.1 и выше до потери обратной совместимости |
POLM Управление политиками |
Нет |
Панель управления с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в среде контейнеризации Kubernetes |
Istio control plane 1.17 |
GATM Сбор и анализ метрик |
Нет |
Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения |
Prometheus 2.37.0 |
|||
Platform V SberLinux OS Server |
SLO |
8.7 и выше |
INST Операционная система |
Нет |
ОС контейнеров для запуска модулей компонента |
ОС Альт 8 СП |
Platform V DropApp |
K8S |
1.1 и выше |
K8SC K8S Core |
Нет |
Дистрибутив Kubernetes со встроенными механизмами мультитенантности и бессерверным исполнением |
Kubernetes, Red Hat OpenShift Container Platform |
Platform V Corax |
KFK |
8.340.1 и выше |
KFKA Kafka Sber Edition |
Нет |
Программный брокер сообщений, представляющий собой распределенную, отказоустойчивую, реплицированную и легко масштабируемую систему передачи сообщений, рассчитанную на высокую пропускную способность |
Kafka 3.4.0 |
Примечание:
***
Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).
Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).
**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».
Аппаратные требования#
Для установки компонента требуется следующая конфигурация аппаратного обеспечения:
Квота для установки централизованного варианта SRLS:
количество ядер процессора — 5 ядер;
объем оперативной памяти — 10 ГБ.
Квота для установки централизованного варианта SRLS c TLS-шифрованием:
количество ядер процессора — 6 ядер;
объем оперативной памяти — 12 ГБ.
Квота для установки децентрализованного варианта SRLS:
количество ядер процессора — 3 ядра;
объем оперативной памяти — 8 ГБ.
Для работы программного компонента в среде контейнеризации Kubernetes или Red Hat OpenShift 4.8 (опционально) необходимы следующие ресурсы:
для компонента RL Operator (на 1 Pod, без учета fluent-bit sidecar и istio sidecar):
CPU |
Memory |
|
|---|---|---|
Limits |
200m |
200Mi |
Requests |
100m |
100Mi |
для компонента RL Service (на 1 Pod, без учета fluent-bit sidecar и istio sidecar):
CPU |
Memory |
|
|---|---|---|
Limits |
500m |
300Mi |
Requests |
250m |
150Mi |
для Redis (на 1 Pod):
Redis/Redis Sentinel |
CPU |
Memory |
|---|---|---|
Limits |
300m/200m |
500Mi/200Mi |
Requests |
150m/100m |
250Mi/100Mi |
для Egress Gateway (на 1 Pod) — при централизованном варианте SRLS c TLS-шифрованием:
CPU |
Memory |
|
|---|---|---|
Limits |
600m |
900Mi |
Requests |
400m |
700Mi |
Методика расчета сайзинга#
Оценить производительность программного компонента SRLS можно по результатам нагрузочного тестирования. Были проведены тесты. Результаты:
CPU, m |
Memory, Mi |
|||||
|---|---|---|---|---|---|---|
TPS |
Ingress с включенным SRLS |
RLS |
Ingress с выключенным SRLS |
Ingress с включенным SRLS |
RLS |
Ingress с выключенным SRLS |
300 |
280 |
170 |
188 |
700 |
150 |
700 |
400 |
345 |
210 |
247 |
700 |
150 |
700 |
500 |
424 |
248 |
296 |
700 |
150 |
700 |
600 |
487 |
281 |
360 |
700 |
150 |
700 |
На промежутке TPS, который был выбран для тестирования, отличие от линейной функции будет незначительное, поэтому по полученным результатам тестирования на основе линейной функции (x*a+b) аппроксимировали следующие формулы для расчета требуемых ресурсов CPU и Memory для Ingress и RLS в зависимости от интенсивности нагрузки (TPS):
CPU
Ingress (с включенным SRLS) = Целевой TPS*0,7+69;Ingress (с выключенным SRLS) = Целевой TPS*0,565+18,5;RLS= Целевой TPS*0,371+60,3.
Memory — значения не изменяются (рост памяти не звафиксирован при изменении TPS):
Ingress = 700;RLS = 150.
Необходимые ресурсы для компонента SRLS:
CPU, m |
Memory, Mi |
|||
|---|---|---|---|---|
Целевой TPS |
RLS |
Ingress Gateway |
RLS |
Ingress Gateway |
500 |
245,8 |
419 |
150 |
700 |
1100 |
468,4 |
839 |
150 |
700 |
1700 |
691 |
1259 |
150 |
700 |
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
./bh/ratelimit |
Исполняемый файл RL Service |
./bh/rloperator |
Исполняемый файл RL Operator |
Выбор способа установки#
В зависимости от способа развертывания сервиса воспользуйтесь одной из инструкций:
ручная установка сервиса;
автоматизированная установка сервиса с использованием Deploy Tools;
автоматическая установка по агентской схеме;
автоматизированная установка сервиса с использованием Synapse Installer.
Подготовка окружения#
Namespace, в который требуется установить компонент SRLS, должен быть подключен к Istio: убедиться, что в namespace существуют стандартные Config Map Istio с именами istio-ca-root-cert, istio-basic (если нет, то добавить).
Убедиться, что в namespace существует ServiceAccount c именем default (если нет, то добавить).
Для доступа к образам из среды контейнеризации к Docker-registry требуется создать ImagePullSecret (
<дистрибутив>/package/conf/k8s/base/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: ${rls_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 необходимо добавить следующий СRD: артефакт CRD.
В некоторых случаях для добавления CRD администраторы требуют артефакт типа CRDProxy, где в поле data размещен непосредственно CRD.
apiVersion: apps.firepaws.io/v1
kind: CRDProxy
metadata:
name: crdproxy-globalratelimits-ratelimit-service
namespace: ${rls_namespace}
serviceAccount:
- rate-limiter-service
data: |-
< содержимое нашего артефакта СRD >
Централизованный вариант развертывания#
Сертификаты для Egress Gateway#
Необходимо подготовить сертификаты для Egress Gateway (ca-root.pem, egress.key, egress.pem, kafka-ca.pem, kafka.key, kafka.pem), рекомендуемая утилита для генерации и выпуска сертификатов — OpenSSL.
Для хранения «чувствительной» информации с точки зрения безопасности целевым подходом является интеграция с Secret Management System (далее SecMan).
Вариант установки с SecMan.
Добавить необходимые сертификаты в 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) |
Вариант установки без SecMan.
Добавить в Kubernetes или Red Hat OpenShift (опционально) секрет egress-secrets.
Секрет может быть создан с помощью инструмента командной строки или через файл манифеста Secret.
Пример команды для Kubernetes:
kubectl create secret generic egress-secrets \
--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-secrets \
--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-secrets
namespace: ${rls_namespace}
data:
ca-root.pem: >-
egress.key: >-
egress.pem: >-
type: Opaque
kind: Secret
apiVersion: v1
metadata:
name: egress-kafka-cert
namespace: ${rls_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
Сертификаты для RL Service#
Если планируется использование шифрования трафика между граничным прокси и централизованным RL Service, необходимо подготовить сертификаты для RL Service (ca-root.pem, server.key, server.pem). Рекомендуемая утилита для генерации и выпуска сертификатов — OpenSSL.
Для хранения «чувствительной» информации с точки зрения безопасности целевым подходом является интеграция с Secret Management System (далее SecMan).
Вариант установки с SecMan.
Добавить необходимые сертификаты в 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) |
Вариант установки без SecMan.
Добавить в 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: ${rls_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 - list - watch |
Права предоставляются на уровне кластера K8s |
globalratelimits/status globalratelimits/finalizers |
ratelimit.service |
- get - list - watch - update - patch |
Права предоставляются на уровне кластера K8s |
namespaces |
- list |
Права предоставляются на уровне кластера K8s |
|
leases |
coordination.k8s.io |
- get - update - patch |
Права предоставляются на уровне namespace, в котором развертывается централизованный SRLS |
events |
- create |
Права предоставляются на уровне namespace, в котором развертывается централизованный SRLS |
|
envoyfilters |
networking.istio.io |
- get - list - watch - create - update - patch - delete |
Права предоставляются на уровне namespace, в котором развертывается прикладной дистрибутив; в артефакте RoleBinding необходимо указать ServiceAccount в namespace централизованного SRLS |
Ниже приведены артефакты, необходимые для настройки прав доступа (актуальные артефакты доступны в <дистрибутив>/package/conf/k8s/base/other/operator-role):
ServiceAccount
kind: ServiceAccount
apiVersion: v1
metadata:
name: rate-limiter-service
namespace: ${rls_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:
- globalratelimits
- verbs:
- get
- list
- watch
- update
- patch
apiGroups:
- ratelimit.service
resources:
- globalratelimits/status
- globalratelimits/finalizers
- verbs:
- list
apiGroups:
- ''
resources:
- namespaces
ClusterRoleBinding
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rloperator-crb-${rls_namespace}
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${rls_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: ${rls_namespace}
labels:
app: rloperator
proj: synapse-rls
agent: srls
Role
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: srls-operator-role
namespace: ${rls_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: ${rls_namespace}
subjects:
- kind: ServiceAccount
name: rate-limiter-service
namespace: ${rls_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: ${rls_namespace}
Сетевая видимость RL Service в рамках кластера#
Для обеспечения возможности подключения к Pod RL Service из других namespace необходимо создать артефакт (актуальный шаблон артефакта расположен в <дистрибутив>/package/conf/k8s/base/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 - list - watch |
Права предоставляются на уровне прикладного namespace |
globalratelimits/status globalratelimits/finalizers |
ratelimit.service |
- get - list - watch - update - patch |
Права предоставляются на уровне прикладного namespace |
namespaces |
- list |
Права предоставляются на уровне прикладного namespace |
|
leases |
coordination.k8s.io |
- get - update - patch |
Права предоставляются на уровне прикладного namespace |
events |
- create |
Права предоставляются на уровне прикладного namespace |
|
envoyfilters |
networking.istio.io |
- get - list - watch - create - update - patch - delete |
Права предоставляются на уровне прикладного namespace |
При автоматизированном создании артефактов EnvoyFilter компонентом RL Operator в процессе обработки артефакта GlobaLRateLimit (в параметре disable_envoy_filter_automation установлено значение false) EnvoyFilters создаются для версии Envoy 1.25 и выше. Если в артефакте GlobaLRateLimit в параметре envoyVersion указана версия ниже 1.25, то артефакты EnvoyFilter не будут созданы и в статусе будет ошибка envoy version not supported.
Возможен вариант развертывания, при котором не производится автоматизированное создание артефактов EnvoyFilter. В этом случае необходимо выбрать соответствующий артефакт Role, установить значение true стендозависимого параметра disable_envoy_filter_automation и создать необходимые для работы артефакты EnvoyFilter самостоятельно. Инструкция по созданию артефакта EnvoyFilter описана в документе «Руководство прикладного разработчика» в разделе «Конфигурирование артефактов среды контейнеризации и Istio для децентрализованного варианта развертывания».
Ниже приведены артефакты, необходимые для настройки прав доступа (актуальные артефакты доступны в <дистрибутив>/package/conf/k8s/base/operator-role/other):
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
Установка#
Важно!
С версии 3.11 осуществлен переход на установку с помощью Helm Chart!
Параметры установки#
Параметры шаблонизации расположены в <дистрибутив>/package/conf/helm/application/srls/values.yaml.
Название |
Описание |
Значение по умолчанию |
|---|---|---|
registry |
Cсылка до registry, если не задано администратором в настройках инструмента развертывания/распаковки |
docker-registy.mydomain.com |
registry_path_srls |
Базовый путь до каталога с образами, если не задано администратором в настройках инструмента развертывания/распаковки |
public |
FLUENT_BIT_SIDECAR_ENABLED |
Если |
False |
SRLS_LOG_SENDER_ENABLED |
Если |
False |
TENANT_CODE |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger, определяется в настройках инструмента развертывания/распаковки |
- |
SRLS_TLS_ENABLED |
Включить TLS-шифрование на RL Service |
False |
SRLS_TENANT_CODE |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger, если в настройках инструмента развертывания/распаковки не задан параметр TENANT_CODE |
SRLS |
POD_DISRUPTION_BUDGET_ENABLED |
Если |
True |
DEPLOY_TO_KUBERNETES |
Для совместимости с Kubernetes и Platform V DropApp |
False |
DEPLOY_LEASE_ENABLED |
Разворачивать или нет артефакт Lease в составе дистрибутива |
False |
SECMAN_ENABLED |
Если |
True |
SECMAN_NAMESPACE_ENABLED |
Поддержка пространств в хранилище SecMan |
False |
SECRET_ENABLED |
Если |
False |
DEPLOY_ACCOUNT |
Если |
False |
DEPLOY_CENTR |
Если |
False |
DEPLOY_DECENTR |
Если |
True |
DEPLOY_LIMITS |
Если |
False |
endpoints |
Если значение параметра DEPLOY_LIMITS выставлено в |
Пример значения параметра 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}}]}}]
Список стендозависимых параметров (указываются в конфигурации job) для установки и их описание представлены в таблице «Список и описание параметров». Стендозависимые параметры расположены в том же файле <дистрибутив>/package/conf/helm/application/srls/values.yaml.
ВАЖНО!
Названия стендозависимых параметров, начиная с версии компонента SRLS 2.6, отличаются от названий в предыдущих версиях.
Список и описание параметров:
Название |
Описание |
Пример |
Примечание |
|---|---|---|---|
rls_namespace |
Имя пространства, в котором разворачиваются RL Service, RL Operator и Ingress Gateway |
synapse-dev-sandbox |
|
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_backend |
Тип хранилища key-value для RL Service |
redis |
|
rls_logLevel |
Уровень логирования для RL Service |
info |
|
rls_tls_enable |
Включение/выключение шифрования TLS |
false |
|
rls_tls_client_auth |
Запрос и валидация сертификатов пользователей: none — не запрашивать; must — запрашивать; want — запрашивать и валидировать |
none |
|
rls_tls_version |
Минимальная версия протокола TLS |
TLSv1.2 |
|
rls_tls_cipher_suites |
Комбинация шифров для TLS |
||
rls_tls_cert_path |
Путь до сертификатов в контейнере RL Service |
/cert |
|
rls_tls_cert_pem |
Имя файла сертификата в контейнере RL Service |
server.pem |
|
rls_tls_cert_key |
Имя файла с ключом сертификата в контейнере RL Service |
server.key |
|
rls_tls_cert_ca_pem |
Имя файла CA сертификата в контейнере RL Service |
ca-root.pem |
|
envoy_filter_grpc_timeout |
Тайм-аут на обращение к сервису Rate Limit |
1s |
|
istiod_svc |
Адрес подключения к istiod |
istiod-basic.synapse-smcp20-control-plane.svc:15012 |
|
tracing_collector |
Адрес подключения к сервису публикации данных о трассировке запросов |
jaeger-collector.test-devpub-controlplanev2.svc:9411 |
|
redis_image |
Ссылка на образ с Redis 6 |
docker.registry.host/registry_redhat_io/rhel8/redis-6@sha256:fe10fcc7b9734d22a18d5c96c219b2e25d7fdddd19c6292b8b2cb38b0f2f6037 |
|
redis_fsgroup |
Идентификатор дополнительной группы для запуска Pod Redis и Redis Sentinel |
1337 |
|
redis_run_as_user |
Идентификатор пользователя для запуска Pod Redis и Redis Sentinel |
1337 |
|
operator_backend |
Тип хранилища key-value для RL Operator |
redis |
|
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_scope |
Режим работы оператора |
namespace |
Для централизованного режима — cluster, для децентрализованного — namespace |
operator_logLevel |
Уровень логирования RL Operator |
info |
|
rls_hostname |
Имя host в Route для подключения к namespace централизованного SRLS |
||
global.common.poddisruptionbudget.minAvailable |
Глобальный параметр среды для PodDistributionBudget |
Параметр, который гарантирует, что как минимум столько реплик будет гарантировано доступны при работе Machine Config, при обновлении кластера OpenShift и других работах, требующих переезд Pod с одной node на другую |
|
rloperator_ose_poddisruptionbudget_spec_minAvailable |
Параметр среды для RL Operator PodDistributionBudget |
1 |
Параметр задается в файле конфигурации operator.srls.conf |
ratelimiter_ose_poddisruptionbudget_spec_minAvailable |
Параметр среды для RateLimiter PodDistributionBudget |
1 |
Параметр задается в файле конфигурации rls.srls.conf |
redis_ose_poddisruptionbudget_spec_minAvailable |
Параметр среды для Redis PodDistributionBudget |
1 |
Параметр задается в файле конфигурации redis.srls.conf |
sentinel_ose_poddisruptionbudget_spec_minAvailable |
Параметр среды для Sentinel PodDistributionBudget |
1 |
Параметр задается в файле конфигурации sentinel.srls.conf |
egress_ose_poddisruptionbudget_spec_minAvailable |
Параметр среды для Egress Gateway PodDistributionBudget |
1 |
Параметр задается в файле конфигурации egress.srls.conf |
secman_role |
Роль в SecMan, получаемая при подключении к хранилищу |
role |
|
secman_namespace |
Пространство в хранилище SecMan |
CI01234567_CI76543210 |
Указывать, если в хранилище поддерживаются пространства имен. При этом должен быть задан параметр шаблонизации SECMAN_NAMESPACE_ENABLED |
secman_full_path_to_secret_kafka |
Полный путь до секрета в SecMan для Egress Gateway |
DEV/TEST/FS/KV/egress-kafka-cert |
|
secman_full_path_to_rls_secret |
Полный путь до секрета в SecMan для RL Service |
DEV/TEST/FS/KV/rls-secrets |
|
secman_host |
Host для SecMan |
secman.solution.ru |
|
secman_port |
Port для SecMan |
8443 |
|
egress_secman_port |
Порт для сервиса SecMan на egress |
8550 |
|
kubernetes_service_host |
Cервис kubernetes |
kubernetes.default.svc.cluster.local |
|
kubernetes_service_port |
Порт сервиса kubernetes |
443 |
|
kube_ip |
IP-адрес сервиса kubernetes |
||
egress_kubeapi_port |
Порт для сервиса kubernetes на egress |
4443 |
|
egress_selectors |
Селекторы egress, установленного в прикладном namespace |
{"istio":"egress-my_namespace"} |
|
log_kafka_bootstrap_servers |
Список адресов кластера брокеров Kafka для журналирования |
8.8.8.8:9092 |
|
ufs_logger_kafka_topic |
Название topic для журналирования |
eventlog |
|
ufs_logger_kafka_security_protocol |
Конфигурация закрытого соединения с Kafka |
plaintext / ssl |
|
registry_path_loga |
Базовый путь до каталога с образами платформенного Logger |
public/efs |
|
logger_pl_sidecar_cpuLimit |
fluent-bit sidecar cpu limit |
200m |
|
logger_pl_sidecar_memLimit |
fluent-bit sidecar memory limit |
200Mi |
|
logger_pl_sidecar_cpuRequest |
fluent-bit sidecar cpu request |
100m |
|
logger_pl_sidecar_memRequest |
fluent-bit sidecar memory request |
100Mi |
|
logger_pl_sidecar_run_as_user |
fluent-bit sidecar securityContext runAsUser |
1001560000 |
Для k8s – 1001 |
logger_pl_sidecar_run_as_group |
fluent-bit sidecar securityContext runAsGroup |
1001560000 |
Для k8s – 2000 |
secman_sidecar_cpuLimit |
secman sidecar cpu limit |
100m |
|
secman_sidecar_cpuRequest |
secman sidecar cpu request |
50m |
|
secman_sidecar_memRequest |
secman sidecar memory request |
64Mi |
|
secman_sidecar_memLimit |
secman sidecar memory limit |
128Mi |
|
disable_envoy_filter_automation |
Если выставлено значение |
false |
|
registry_path_igeg |
Базовый путь до каталога компонента IGEG продукта Platform V Synapse Service Mesh |
public/efs |
|
egress_cert_ca_root |
Значение в base64-кодировке ca-root.pem для secret (egress-secrets) Egress Gateway |
||
egress_cert |
Значение в base64-кодировке egress.pem для secret (egress-secrets) Egress Gateway |
||
egress_cert_key |
Значение в base64-кодировке egress.key для secret (egress-secrets) Egress Gateway |
||
egress_kafka_cert_ca_root |
Значение в base64-кодировке kafka-ca.pem для secret (egress-kafka-cert) Egress Gateway |
||
egress_kafka_cert |
Значение в 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_root |
Значение в base64-кодировке ca-root.pem для secret (rate-limiter-secrets) RL Service |
||
rls_cert |
Значение в base64-кодировке server.pem для secret (rate-limiter-secrets) RL Service |
||
rls_cert_key |
Значение в base64-кодировке server.key для secret (rate-limiter-secrets) RL Service |
||
igeg_fsgroup |
Идентификатор дополнительной группы для запуска Pod Ingress и Egress |
1337 |
|
igeg_run_as_user |
Идентификатор пользователя для запуска Pod Ingress и Egress |
1337 |
|
igeg_run_as_group |
Идентификатор группы для запуска Pod Ingress и Egress |
1337 |
|
redis_fsgroup |
Идентификатор дополнительной группы для запуска Pod Redis и Sentinel |
1001 |
|
redis_run_as_user |
Идентификатор пользователя для запуска Pod Redis и Sentinel |
1001 |
|
redis_run_as_group |
Идентификатор группы для запуска Pod Redis и Sentinel |
1001 |
|
secman_sidecar_run_as_user |
Идентификатор пользователя для запуска secman sidecar |
1001 |
|
secman_sidecar_as_group |
Идентификатор группы для запуска secman sidecar |
1001 |
|
rls_fsgroup |
Идентификатор дополнительной группы для запуска Pod RL Operator и RL Service |
1001 |
|
rls_run_as_user |
Идентификатор пользователя для запуска Pod RL Operator и RL Service |
1001 |
|
rls_run_as_group |
Идентификатор группы для запуска Pod RL Operator и RL Service |
1001 |
|
egress_kafka_update_ef_enabled |
Если |
True |
|
egress_kafka_port |
Порт для конфигурации прохождения трафика Kafka через Egress |
9093 |
|
kafka_port |
Порт для кластера Kafka |
9093 |
|
kafka_resolution |
Resolution для конфигурации прохождения трафика Kafka через Egress |
DNS |
|
egress_kafka_bootstrap |
Список брокеров Kafka |
- host: kafka.test.com |
|
log_rls_sender_type |
Тип отправки логов. Возможные варианты: kafka – в Kafka, rest – на endpoint LOGA log_rls_rest_endpoint |
kafka |
|
log_kafka_bootstrap_servers |
Список адресов кластера брокеров Kafka для журналирования |
egressgateway-rls-svc:9093 |
|
log_rls_kafka_topic |
Топик Kafka для журналирования |
kafka |
|
log_rls_rest_endpoint |
Enpoint LOGA для журналирования |
http://localhost:10080/v1/events |
|
log_rls_tls_security_protocol |
Протокол шифрования, варианты: ssl, plaintext |
plaintext |
|
log_rls_tls_version |
Минимальная версия протокола TLS для журналирования |
TLSv1.2 |
|
log_rls_tls_cipher_suites |
Комбинация шифров для TLS для журналирования |
Параметры числа реплик Pod:
Название |
Описание |
Значение по умолчанию |
|---|---|---|
srls_egress_deployment_replicas |
Число реплик Egress Gateway |
2 |
srls_rloperator_deployment_replicas |
Число реплик RL Operator |
2 |
srls_ratelimiter_deployment_replicas |
Число реплик RL Service |
2 |
srls_redis_deployment_replicas |
Число реплик Redis |
3 |
srls_sentinel_deployment_replicas |
Число реплик Redis Sentinel |
3 |
Параметры лимитов и запросов ресурсов для Egress Gateway:
Название |
Значение по умолчанию |
|---|---|
srls_egress_deployment_cpuLimit |
600m |
srls_egress_deployment_memLimit |
900Mi |
srls_egress_deployment_cpuRequest |
400m |
srls_egress_deployment_memRequest |
700Mi |
Параметры лимитов и запросов ресурсов для RL Operator:
Название |
Значение по умолчанию |
|---|---|
srls_rloperator_deployment_cpuLimit |
200m |
srls_rloperator_deployment_memLimit |
200Mi |
srls_rloperator_deployment_cpuRequest |
100m |
srls_rloperator_deployment_memRequest |
100Mi |
Параметры лимитов и запросов ресурсов для Istio Sidecar RL Operator:
Название |
Значение по умолчанию |
|---|---|
srls_rloperator_deployment_istio_cpuLimit |
100m |
srls_rloperator_deployment_istio_memLimit |
200Mi |
srls_rloperator_deployment_istio_cpuRequest |
50m |
srls_rloperator_deployment_istio_memRequest |
100Mi |
Параметры лимитов и запросов ресурсов для RL Service:
Название |
Значение по умолчанию |
|---|---|
srls_ratelimiter_deployment_cpuLimit |
500m |
srls_ratelimiter_deployment_memLimit |
300Mi |
srls_ratelimiter_deployment_cpuRequest |
250m |
srls_ratelimiter_deployment_memRequest |
150Mi |
Параметры лимитов и запросов ресурсов для Istio Sidecar RL Service (объем ресурсов зависит от потребителя, рекомендуется определять по результатам нагрузочного тестирования):
Название |
Значение по умолчанию |
|---|---|
srls_ratelimiter_deployment_istio_cpuLimit |
300m |
srls_ratelimiter_deployment_istio_memLimit |
500Mi |
srls_ratelimiter_deployment_istio_cpuRequest |
200m |
srls_ratelimiter_deployment_istio_memRequest |
300Mi |
Параметры лимитов и запросов ресурсов для Redis:
Название |
Значение по умолчанию |
|---|---|
srls_redis_deployment_cpuLimit |
300m |
srls_redis_deployment_memLimit |
500Mi |
srls_redis_deployment_cpuRequest |
150m |
srls_redis_deployment_memRequest |
250Mi |
Параметры лимитов и запросов ресурсов для Redis Sentinel:
Название |
Значение по умолчанию |
|---|---|
srls_sentinel_deployment_cpuLimit |
200m |
srls_sentinel_deployment_memLimit |
200Mi |
srls_sentinel_deployment_cpuRequest |
100m |
srls_sentinel_deployment_memRequest |
100Mi |
Параметры конфигурирования классов приоритетов:
Название |
Значение по умолчанию |
|---|---|
srls_rloperator_deployment_priorityClassName |
Пустое значение |
srls_ratelimiter_deployment_priorityClassName |
Пустое значение |
srls_egress_deployment_priorityClassName |
Пустое значение |
srls_redis_deployment_priorityClassName |
Пустое значение |
srls_sentinel_deployment_priorityClassName |
Пустое значение |
Параметры конфигурирования стратегии RollingUpdate:
Название |
Значение по умолчанию |
|---|---|
srls_rloperator_deployment_maxUnavailable |
25% |
srls_ratelimiter_deployment_maxUnavailable |
25% |
srls_egress_deployment_maxUnavailable |
25% |
srls_rloperator_deployment_maxSurge |
25% |
srls_ratelimiter_deployment_maxSurge |
25% |
Список параметров для настройки артефакта GlobalRateLimit при развертывании по агентской схеме.
Название |
Описание |
Значение по умолчанию |
|---|---|---|
limits_srls_config_name |
Название экземпляра артефакта GlobalRateLimit |
rate-limit-config |
limits_srls_config_namespace |
Идентификатор namespace |
"{ namespace }" |
limits_envoy_version |
Используемая версия Envoy в Ingress Gateway |
1.25 |
limits_ose_istio_all_common_ingressAppSelector |
Лейбл «app» для определения Pod Ingress Gateway |
"{ agent.ose.istio.all.common.ingressAppSelector }" |
limits_ose_istio_all_common_ingressIstioSelector |
Лейбл «istio» для определения Pod Ingress Gateway |
"{ agent.ose.istio.all.common.ingressIstioSelector }" |
limits_visibility |
Отвечает за область видимости данного CRD ( |
namespace |
limits_rlservice |
Значение зависит от выбранного варианта инсталляции SRLS, централизованный — в качестве хоста должен быть указан Headless Service, указывающий на Pod Egress Gateway, децентрализованный — rate-limiter-headless-service |
rate-limiter-headless-service |
limits_rls_serverport |
Значение зависит от выбранного варианта инсталляции SRLS, централизованный — 12001, децентрализованный — 8081 |
8081 |
limits_srls_namespace |
Идентификатор namespace, в котором развернут централизованный SRLS, используется только для централизованного варианта инсталляции |
<class 'jinja2.utils.Namespace'> |
Значения по умолчанию, приведенные в двойных фигурных скобках, указывают на стандартные переменные Job CDJE DevTools.
Параметры установки, специфичные для выбранного варианта развертывания#
Централизованный вариант развертывания:
Название |
Тип параметра |
Значение |
|---|---|---|
DEPLOY_CENTR |
Параметр шаблонизации |
|
DEPLOY_DECENTR |
Параметр шаблонизации |
|
operator_scope |
Стендозависимый параметр |
|
rls_typeMod |
Стендозависимый параметр |
|
Централизованный вариант (c шифрованием TLS) развертывания:
Название |
Тип параметра |
Значение |
|---|---|---|
SRLS_TLS_ENABLED |
Параметр шаблонизации |
|
DEPLOY_CENTR |
Параметр шаблонизации |
|
DEPLOY_DECENTR |
Параметр шаблонизации |
|
operator_scope |
Стендозависимый параметр |
|
rls_typeMod |
Стендозависимый параметр |
|
rls_tls_enable |
Стендозависимый параметр |
|
Децентрализованный вариант развертывания:
Название |
Тип параметра |
Значение |
|---|---|---|
DEPLOY_CENTR |
Параметр шаблонизации |
|
DEPLOY_DECENTR |
Параметр шаблонизации |
|
operator_scope |
Стендозависимый параметр |
|
rls_typeMod |
Стендозависимый параметр |
|
Для отправки логов встроенными в RL Operator и RL Service стредствами дополнительно необходимо установить параметр шаблонизации:
SRLS_LOG_SENDER_ENABLED: True
Установить значения у следующих стендозависимых параметров:
egress_kafka_update_ef_enabled: true // true – обновление списка egress_kafka_bootstrap; false – фиксированный набор egress_kafka_bootstrap
egress_kafka_port: 9093
kafka_port: 9093
kafka_resolution: DNS
egress_kafka_bootstrap: // заполнить значение для используемого кластера kafka
- host: kafka.test.ru
port: 9093
ip: 10.0.0.1
log_rls_sender_type: kafka
log_kafka_bootstrap_servers: egressgateway-rls-svc:{egress_kafka_port}
log_rls_kafka_topic: rls_test_topic // установить свой топик для отправки
log_rls_tls_security_protocol: plaintext
Ручная установка сервиса#
Перед установкой необходимо заполнить стендозависимые и связанные с шаблонизацией параметры. Описание параметров представлено в разделе «Параметры установки».
Разархивировать дистрибутив.
Открыть консоль и перейти в папку
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/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/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 (лейбл
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.
Скорректировать значения параметров шаблонизации и стендозависимых параметров.
Примечание — значение параметра DEPLOY_TO_KUBERNETES определяет платформу контейнеризации для запуска компонентов сервиса (для установки 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параметра шаблонизации DEPLOY_LIMITS и заполнить параметр шаблонизации endpoints в соответствии с разделом «Параметры установки» настоящего документа.Если требуется установить дистрибутив в децентрализованном варианте развертывания SRLS, необходимо настроить соответствующие параметры, описанные в разделах «Параметры установки» и «Параметры установки, специфичные для выбранного варианта развертывания» настоящего документа.
Если установка не требуется, необходимо выставить значение
Falseпараметров шаблонизации DEPLOY_CENTR, DEPLOY_DECENTR.
Запустить установку бизнес-приложения или технологического сервиса, указав в поле параметров Job
COMPONENTSсконфигурированный агент — набор сценариев HELM_DEPLOY.
Автоматизированная установка сервиса с использованием Synapse Installer#
Скачать необходимую версию дистрибутива.
Получить из дистрибутива конфигурационый файл:
<дистрибутив>/package/conf/helm/application/srls/values.yaml.Поместить полученный в пункте выше файл в git-репозиторий со стендозависимыми параметрами.
Важно: Для корректной установки файл должен быть помещен по следующему пути:
<git-репозиторий>/<namespace>/package/conf/helm/srls/values.yaml.Скорректировать значения параметров шаблонизации и стендозависимых параметров.
Примечание — значение параметра DEPLOY_TO_KUBERNETES определяет платформу контейнеризации для запуска компонентов сервиса (для установки 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/k8s/base/other/configmaps/synapse-metrics-cm.yaml):
kind: ConfigMap
apiVersion: v1
metadata:
name: synapse-metrics-agent-scrapeconfig
namespace: ${rls_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_prometheus_io_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_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_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
Более подробно о параметрах конфигурации смотрите в документации на соответствующий компонент.
Установка dashboard в программном компоненте Indicator (INDA) программного продукта Platform V Monitor (OPM)#
В поставку дистрибутива входят следующие dashboard:
SRLS.json — метрики работы сервиса srl;
SRLS Go Metrics.json — метрики потребления ресурсов srl;
SRLS Operator.json – метрики работы оператора RL Operator;
SRLS Operator Go Metrics.json — метрики потребления ресурсов RL Operator;
SRLS Client Metrics.json – метрики для биллинга потребителей;
Место хранения:
Объединенный мониторинг Unimon — папка
/k8s/base/other/dashboard.Сбор и анализ метрик GATM — папка
/k8s/base/other/dashboard/GATM.
Для корректной работы Dashboard необходимо знать название таблицы в базе данных Druid, в которую осуществляется загрузка метрик от RL Service и RL Operator (узнать название таблицы можно у администраторов Platform V Monitor).
Для установки dashboard необходимо:
Выполнить вход в 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»
В появившемся окне выбрать файл с dashboard.
В окне выбрать источник базы данных для получения метрик «Indicator-Abyss» из выпадающего списка (4).
В поле «druidtable» изменить название (srlsunimon) таблицы в базе данных Druid на требуемое (5).

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

Рисунок. Dashboard SRLS.json

Рисунок. Dashboard SRLS Operator.json

Рисунок. Dashboard SRLS Go Metrics.json, SRLS Operator Go Metrics.json

Рисунок. Dashboard SRLS Client Metrics.json
Dashboard «SRLS Client Metrics» позволяет выбрать namespace, в котором развернут компонент SRLS, и уникальное название метрики (ratelimiterservice_rate_limit_*key*_over_limit), сформированное из CRD GlobalRatelimit в этом namespace. Для синхронизации данных с метриками, полученными в namespace с различных Pod компонентов SRLS, в dashboard используется параметр «rounding time» — период агрегации данных (1M,2M,5M,15M,30M,1H,2H).
Первая панель на dashboard отображает набор метрик, общих для всех потребителей. График 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 — приращение числа запросов свыше соответствующей квоты за период агрегации данных.
Настройка интеграции#
Ниже описана процедура интеграции с рекомендованным АО «СберТех» продуктом Platform V Monitor. На усмотрение пользователя может быть настроена интеграция с аналогичным по функциональности продуктом от других производителей.
Интеграция с программным компонентом Объединенный мониторинг Unimon (MONA) реализована в соответствии с требованиями Unimon: компонент публикует метрики в формате Prometheus. Для артефактов Service rl-operator и RateLimiterService добавлены необходимые аннотации Prometheus с необходимыми значениями (см. выше):
prometheus.io.path;
prometheus.io.port;
prometheus.io.scrape.
Интеграция с программным компонентом Журналирование (LOGA) реализована в соответствии с требованиями сервиса журналирования: используется FluentBit sidecar для компонентов RL Operator и RL Service.
При установке должна быть включена опция:
FLUENT_BIT_SIDECAR_ENABLED = true и заполнены соответствующие поля «ufs-logger» (см. раздел «Параметры установки»).
Название |
Описание |
Значение по умолчанию |
|---|---|---|
FLUENT_BIT_SIDECAR_ENABLED |
Если True, то RL Operator и RL Service будут запущены с sidecar fluent-bit |
true |
TENANT_CODE |
Код тенанта, используемый в конфигурации fluent-bit ufs-logger |
Если параметр не задан в настройках инструмента/распаковки, то используется значение SRLS_TENANT_CODE |
ufs_logger_kafka_bootstrap_servers |
Список адресов кластера брокеров Kafka для журналирования |
8.8.8.8:9092 |
ufs_logger_kafka_topic |
Название topic для журналирования |
eventlog |
ufs_logger_kafka_security_protocol |
Конфигурация закрытого соединения с Kafka |
plaintext / ssl |
Обновление#
Обновление программного компонента осуществляется по одной из стратегий — Rolling или Recreate.
Стратегия Recreate:
Удалить программный компонент согласно процедуре, описанной в разделе «Удаление».
Установить программный компонент согласно процедуре, описанной в разделе «Установка».
Стратегия Rolling:
Обновить артефакты согласно разделу «Установка».
Удаление#
Удаление централизованного Synapse Rate Limiter Service#
Для удаления Synapse Rate Limit необходимо удалить следующие ресурсы:
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
Deployment |
rloperator |
apps/v1 |
Deployment |
rate-limiter-service |
apps/v1 |
StatefulSet |
redis |
apps/v1 |
StatefulSet |
redis-sentinel |
v1 |
Service |
rloperator |
v1 |
Service |
rate-limiter-service |
v1 |
Service |
rate-limiter-headless-service |
v1 |
Service |
redis |
v1 |
Service |
redis-sentinel |
coordination.k8s.io/v1 |
Lease |
srls-operator-lock |
v1 |
ConfigMap |
operator-config |
v1 |
ConfigMap |
operator-fluent-bit-sidecar |
v1 |
ConfigMap |
rlservice-fluent-bit-sidecar |
v1 |
ConfigMap |
redis |
v1 |
ConfigMap |
redis-sentinel |
v1 |
ConfigMap |
rls-config |
policy/v1 |
PodDisruptionBudget |
rloperator-pdb |
policy/v1 |
PodDisruptionBudget |
rls-pdb |
policy/v1 |
PodDisruptionBudget |
redis-pdb |
policy/v1 |
PodDisruptionBudget |
redis-sentinel-pdb |
Если был установлен Egress Gateway, то еще удалить следующие ресурсы |
||
apps/v1 |
Deployment |
egress-${rls_namespace} |
v1 |
Service |
egressgateway-rls-svc |
networking.istio.io/v1alpha3 |
DestinationRule |
egress-secman-dr |
networking.istio.io/v1alpha3 |
Gateway |
egress-secman-gw |
networking.istio.io/v1alpha3 |
ServiceEntry |
egress-secman-se |
networking.istio.io/v1alpha3 |
VirtualService |
egress-secman-vs |
security.istio.io/v1beta1 |
PeerAuthentication |
egress-pa |
policy/v1 |
PodDisruptionBudget |
egress-pdb |
Удаление децентрализованного Synapse Rate Limiter Service#
Для удаления Synapse Rate Limit необходимо удалить следующие ресурсы:
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
Deployment |
rloperator |
coordination.k8s.io/v1 |
Lease |
srls-operator-lock |
v1 |
ConfigMap |
operator-config |
v1 |
Service |
rloperator |
v1 |
ConfigMap |
operator-fluent-bit-sidecar |
v1 |
ConfigMap |
redis |
v1 |
Service |
redis |
apps/v1 |
StatefulSet |
redis |
v1 |
ConfigMap |
redis-sentinel |
v1 |
Service |
redis-sentinel |
apps/v1 |
StatefulSet |
redis-sentinel |
v1 |
ConfigMap |
rls-config |
v1 |
Service |
rate-limiter-service |
v1 |
Service |
rate-limiter-headless-service |
apps/v1 |
Deployment |
rate-limiter-service |
Проверка работоспособности#
Для проверки работоспособности необходимо включить расширенное логирование на Egress в прикладном namespace и Ingress Gateway в namespace Rate Limit. Это можно сделать с помощью:
curl -XPOST localhost:15000/logging?level=debugВключить LOG_LEVEL: debug у rate-limiter-service, изменив настройку в ConfigMap
name: rls-config.Выполнить запрос к сервису, доступ которого необходимо было ограничить, и смотреть логи rate-limiter-service и ingress.
Посмотреть логи Pod можно с помощью утилиты командной строки.
Пример команды для Kubernetes:
kubectl logs <pod-name> -n <namespace>
Пример команды для OpenShift:
oc logs <pod-name>
Здесь pod-name — уникальный идентификатор Pod, namespace — уникальное имя пространства.
Пример логов при штанной работе:
rate-limiter-service (при включенной опции LOG_LEVEL: debug) запрос сервису.
Показателем работоспособности является прохождение запроса и отображение в цепочке логов ingress-> rate-limiter-service к сервису (доступ к которому планируется ограничить).
Чек-лист проверки работоспособности интеграций#
Проверка работоспособности интеграции с Platform V SberLinux OS Server и Platform V DropApp#
Убедиться, что установка SRLS в среду контейнеризации DropApp произошла успешно.
Убедиться, что readiness/liveness-пробы Pods успешные и Pods по пробам периодически не перезапускаются.
Убедиться, что при выполнении команды
cat /etc/os-releaseв terminal контейнера одного из Pod, поставляемого в рамках компонента SRLS, выводится информация о базовом образе SberLinux OS Server.
Проверка работоспособности интеграции с LOGA#
Убедиться, что установка SRLS произошла успешно (с параметром
FLUENT_BIT_SIDECAR_ENABLED=True).Убедиться, что readiness/liveness-пробы Pods успешные и Pods по пробам периодически не перезапускаются.
Проверка работоспособности интеграции с MONA#
Убедиться, что установка SRLS произошла успешно.
Проверить в логах компонента Unimon-sender (часть компонента Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor) наличие логов об отправке данных мониторинга SRLS в Kafka.
Проверка работоспособности интеграции с Secret Management System#
Убедиться, что readiness/liveness-пробы Pods RL Service (для централизованного варианта с TLS-шифрованием), Egress Gateway (при интеграции с компонентом LOGA) успешные и Pods по пробам периодически не перезапускаются.
Проверить в логах RL Service и Egress Gateway, что были получены секреты из хранилища SecMan.
Откат#
Откат производится развертыванием предыдущей версии SRLS, при этом должен быть выполнен откат стендозависимых параметров (если были изменения) в хранилище параметров.
Для отката необходимо удалить ресурсы текущей версии продукта (согласно разделу «Удаление» данного документа). Следуя документу «Руководство по установке», выполнить установку необходимой версии.
Часто встречающиеся проблемы и пути их устранения#
Часто встречающиеся проблемы не обнаружены.
Чек-лист валидации установки#
Namespace, в который требуется установить компонент SRLS, подключен к Istio.
Cоздан ImagePullSecret для доступа к образам из среды контейнеризации к Docker-registry.
Добавлен артефакт CustomResourceDefinition GlobalRateLimit.
В namespace существует ServiceAccount c именем default.
Параметры шаблонизации и стендозависимые параметры заполнены в соответствии с рекомендуемыми параметрами.
RL Operator:
Следующие ресурсы доступны и отображаются в Kubernetes или Red Hat OpenShift (опционально):
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
Deployment |
rloperator |
coordination.k8s.io/v1 |
Lease |
srls-operator-lock |
v1 |
ConfigMap |
operator-config |
v1 |
Service |
rloperator |
v1 |
ConfigMap |
operator-fluent-bit-sidecar |
Запущено 2 Pod RL Operator.
В логах Pod отсутствуют ошибки.
Pods не уходят в перезапуск по результатам readiness/liveness-проб.
RL Service:
Следующие ресурсы доступны и отображаются в Kubernetes или Red Hat OpenShift (опционально):
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
Deployment |
rate-limiter-service |
v1 |
ConfigMap |
rls-config |
v1 |
Service |
rate-limiter-service |
v1 |
Service |
rate-limiter-headless-service |
Запущено 2 Pod RL Service.
В логах Pod отсутствуют ошибки.
Pods компонента не уходят в перезапуск по результатам readiness/liveness-проб.
Redis:
Следующие ресурсы доступны и отображаются в Kubernetes или Red Hat OpenShift (опционально):
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
StatefulSet |
redis |
apps/v1 |
StatefulSet |
redis-sentinel |
v1 |
Service |
redis |
v1 |
Service |
redis-sentinel |
v1 |
ConfigMap |
redis |
v1 |
ConfigMap |
redis-sentinel |
Запущено 3 Pod Redis-sentinel и 3 Redis.
В логах Pod отсутствуют ошибки.
Pods не уходят в перезапуск по результатам readiness/liveness-проб.
При централизованном варианте SRLS Egress Gateway:
Следующие ресурсы доступны и отображаются в Kubernetes или Red Hat OpenShift (опционально):
Версия |
Тип |
Название |
|---|---|---|
apps/v1 |
Deployment |
egress-${rls_namespace} |
v1 |
Service |
egressgateway-rls-svc |
networking.istio.io/v1alpha3 |
DestinationRule |
egress-secman-dr |
networking.istio.io/v1alpha3 |
Gateway |
egress-secman-gw |
networking.istio.io/v1alpha3 |
ServiceEntry |
egress-secman-se |
networking.istio.io/v1alpha3 |
VirtualService |
egress-secman-vs |
security.istio.io/v1beta1 |
PeerAuthentication |
egress-pa |
policy/v1 |
PodDisruptionBudget |
egress-pdb |
Запущено 2 Pod Egress Gateway.
В логах Pod отсутствуют ошибки.
Pods не уходят в перезапуск по результатам readiness/liveness-проб.
Настроена интеграция «Клиентской части Unimon».
В логах компонента «Клиентской части Unimon Sender» присутствуют логи об отправке данных мониторинга SRLS в Kafka.
При успешном выполнении всех пунктов можно приступать к использованию сервиса.