Руководство по установке#
В руководстве приведены инструкции по установке компонента Валидатор конфигураций Service Mesh (VALD).
Термины и сокращения#
Термин/аббревиатура |
Определение |
|---|---|
Pod |
Абстрактный объект Kubernetes, представляющий собой группу из одного или нескольких контейнеров приложения и совместно используемых ресурсов для этих контейнеров |
Deployment |
Набор инструкций для запуска приложения в Kubernetes |
JSON |
JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript |
YAML |
Язык для хранения информации |
HELM |
Инструмент развертывания Kubernetes для автоматизации создания, упаковки, настройки и развертывания приложений и служб в кластерах Kubernetes |
Checker |
Компонент VALD используемый для проверке уже существующих конфигурационных файлов |
Walle |
Компонент VALD используемый для проверке загружаемых конфигурационных файлов |
Debug |
Режим отладки |
LOGA |
Сервис, предназначен для сохранения логов и предоставляет возможности для их просмотра и анализа конечными пользователями (сотрудниками поддержки). Установка и настройка осуществляется в соответствии с документацией на компонент |
Rolling |
Стратегия обновления контейнеров в среде оркестрации Kubernetes путем последовательного переключения на новую версию |
POLM |
Панель управления с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в среде контейнеризации Kubernetes |
SMDL |
Компонент DevOps инструменты Service Mesh продукта Platform V Synapse Service Mesh |
SVPX |
Сервисный прокси, предназначен для предоставления базовых интеграционных операций прикладной части интеграционного сценария-сервиса. Сервисный прокси используется для маршрутизации и обеспечения безопасности трафика между приложениями |
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Категория ПО |
Обязательность установки (да/нет) |
Наименование ПО |
Версия |
Продукт, функциональная совместимость с которым подтверждена |
Описание |
|---|---|---|---|---|---|
Операционная система |
Да |
Alt Linux SP8 |
10.0 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована Операционная система (INST) – Platform V SberLinux OS Server, см. раздел «Платформенные зависимости» |
ОС контейнеров для запуска модулей компонента |
8.0 |
Опционально |
||||
Платформа для разработки, доставки и запуска контейнерных приложений |
Да |
4.6 и выше |
Рекомендовано |
Платформа контейнеризации с открытым исходным кодом |
|
Среда оркестрации контейнеров |
Да |
1.19 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости» |
Открытое программное обеспечение для оркестрации контейнеризированных приложений |
|
4.6 и выше |
Опционально |
Платформа контейнеризации для запуска компонентов сервиса |
|||
Сервис интеграции и оркестрации микросервисов в облаке |
Нет |
1.6 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, |
Сервис интеграции микросервисов в облаке |
|
Сервис централизованного хранения репозиториев артефактов (хранилище артефактов) |
Да |
3.42.0 |
Рекомендовано |
Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО |
|
Nexus Repository Manager PRO |
3.43.0 |
Опционально |
|||
Nexus Repository Manager OSS |
3.43.0 |
Опционально |
|||
Сервис централизованного хранения репозиториев исходного кода |
Да |
15.7 и выше |
Рекомендовано |
Хранение конфигураций при автоматизированной установке |
|
7.6.7 и выше |
Опционально |
Сервис интеграции микросервисов в облаке |
|||
Инструмент командной строки |
Да |
1.21 и выше |
Рекомендовано |
Инструмент командной строки для управления кластерами Kubernetes |
|
Менеджер пакетов |
Да |
3.9 и выше |
Рекомендовано |
Менеджер пакетов Kubernetes |
|
Хранилище логов |
Нет |
3.0.0 и выше |
Опционально |
Для хранения логов |
|
Иное |
Нет |
Golang |
1.18 и выше |
Рекомендовано |
Примечание:
*
Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).
Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).
**
Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.
Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.
Платформенные зависимости#
Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:
Наименование продукта |
Код |
Версия продукта |
Код и наименование компонента |
Обязательность установки (да/нет) |
Описание |
Аналог других производителей |
|---|---|---|---|---|---|---|
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
IGEG Граничный прокси |
Да (для пользователей) |
Граничный прокси из состава продукта Platform V Synapse Service Mesh участвует в формировании сервисной сетки Service Mesh, обеспечивая защиту входящего/исходящего в проект трафика |
Istio |
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
SVPX Сервисный прокси |
Да (для пользователей) |
Сервисный прокси, предназначен для предоставления базовых интеграционных операций прикладной части интеграционного сценария-сервиса. Сервисный прокси используется для маршрутизации и обеспечения безопасности трафика между приложениями |
Envoy |
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
POLM |
Да (для пользователей) |
Панель управления с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в среде контейнеризации Kubernetes |
RedHat Service Mesh |
Platform V Monitor |
ОРМ |
4.1 и выше |
LOGA Журналирование |
Нет |
Сервис, предназначен для сохранения логов и предоставляет возможности для их просмотра и анализа конечными пользователями (сотрудниками поддержки). Установка и настройка осуществляется в соответствии с документацией на компонент |
Любой сервис сбора записей о событиях, совместимый с fluent-bit, например: Elasticsearch, InfluxDB |
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
SMDL Service Mesh DevOps Lib |
Нет |
Mодульная Jenkins библиотека, которая содержит все необходимые DevOps инструменты для сборки, установки и администрирования сервисов на Synapse |
|
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 |
Аппаратные требования#
Для установки компонента требуется следующая конфигурация аппаратного обеспечения:
Контейнер |
CPU Request |
Memory Request |
CPU Limit |
Memory Limit |
|---|---|---|---|---|
walle |
500 |
500 |
500 |
500 |
checker |
1000 |
1000 |
1000 |
1000 |
Количество задействованных реплик компонента VALD зависит от объема принимаемых данных.
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
extra |
DockerFile для сборки образов walle/checker |
binaryFiles |
Бинарные файлы walle/checker |
helm |
Пакет helm для установке компонентов компонента VALD |
Требования к КТС#
Требования к техническим компонентам
Требования к КТС — это размер ресурсов CPU, памяти, выделяемых в Kubernetes. Их значение вычисляется для конкретного разворачиваемого инстанса в зависимости от профиля нагрузки.
Принципы размещения сервиса на КТС
Компонент VALD разворачивается в виде контейнера в отдельном Деплойменте.
Специфические технологические решения
Отсутствуют.
Выбор способа установки#
Для компонента VALD доступна установка с помощью job из компоненты SMDL (продукт SSM) и менеджером пакетов "HELM".
Подготовка окружения#
Предусловия:
развернутый и настроенный кластер Платформы (Kubernetes 1.19 и выше);
в кластере создан проект для развертывания контрольной панели (POLM);
В проекте создана учетная запись с правами на загрузку артефактов (администратор проекта)
В контрольной панели развернут (POLM) и настроен в зависимости от контрольной панели проверяемых проектов ValidatingWebhookConfiguration RHSM ValidatingWebhookConfiguration RHSM
В проекте определенна кластерная роль и рольбиндинг
Свободные в проекте ресурсы, по лимитам и реквестам по размеру равные или превышающие зарезервированные в конфигурационных артефактах продукта Platform V Synapse Service Mesh.
Перед установкой проверьте соблюдение следующих условий:
При работе компонента VALD с IGEG требуется наличие развернутого компонента SSM - POLM.
В кластере создан проект (namespace) в котором будет разворачиваться валидатор конфигураций. При работе компоненты VALD с IGEG требуется подключить проект к контрольной панели (POLM).
В проекте создана учетная запись с правами на загрузку артефактов (администратор проекта).
Получена ссылка на целевой Docker-репозиторий.
В проект добавлен секрет для загрузки docker-образов из целевого Docker-репозитория.
В проекте имеются свободные ресурсы по лимитам и реквестам не менее, чем зарезервировано в конфигурационных артефактах.
При установке с использованием консоли, на рабочем месте должен быть установлен клиент Kubernetes (kubectl) и Helm.
Установка#
Установка с использованием SMDL#
Для установки с использованием SMDL компонента VALD.
Для использования job необходимо ознакомиться с документацией к компоненту SMDL. Перейти в документ "Руководство оператора", далее перейти в раздел pipelines, и выбрать папку SynapseInstaller. SynapseInstaller должен запускаться с отдельным конфиг файлом, в котором заменен блок executor
Перейти в job SynapseInstaller.
Перейти во вкладку Собрать с параметрами.
Заполнить поля (CI; nexusLink; ClusterName; projectsConfigGitUrlSources; orchestratorProject).
Нажать кнопку Собрать.
Дождаться результатов установки.
Установка с использованием менеджера пакетов HELM#
Перед началом установки убедитесь, что выполнена подготовка окружения.
Для ручной установки сервиса выполните следующие действия:
Зайдите в командную оболочку.
Создайте файл конфигурации для KubeCtl:
kubectl config set-credentials логин/хост:порт --username=логин --password=пароль
kubectl config set-cluster хост:порт --insecure-skip-tls-verify=true --server=https://хост:порт
kubectl config set-context неймспейс/хост:порт/логин --user=логин/хост:порт --namespace=неймспейс --cluster=хост:порт
kubectl config use-context неймспейс/хост:порт/логин
Настройте конфигурационный файл values.yaml для развертывания шаблонов.
Запустите установку через HELM
helm install vald "путь до папки с helm charts"
Шаблон helm chart#
Элемент helm |
Описание |
|---|---|
Содержит описание пакета |
|
Содержит значения переменных для развертывания |
|
Содержит описание конфигурационных файлов |
|
Форматирует конфигурационный файл для ConfigMap |
|
Содержит требуемые шаблоны сущности ConfigMap |
|
Содержит требуемые шаблоны сущности Deployment в том числе SVPX |
|
Содержит требуемые шаблоны сущности DestinationRule |
|
Содержит требуемые шаблоны сущности EnvoyFilter |
|
Содержит требуемые шаблоны сущности Gateway |
|
Содержит требуемые шаблоны сущности Route |
|
Содержит требуемые шаблоны сущности Service |
|
Содержит требуемые шаблоны сущности ServiceAccount |
|
Содержит требуемые шаблоны сущности ServiceEntry |
|
Содержит требуемые шаблоны сущности VirtualService |
|
Содержит требуемые шаблоны для развертывания IGEG Istio SE |
|
Содержит требуемые шаблоны для развертывания IGEG RHSM |
Обновление#
Удаление предыдущей версии компонента не требуется. Для обновления версии компонента VALD необходимо выполнить команду:
helm upgrade vald
Обновление происходит по стратегии "Rolling".
Убедитесь, что выставленное количество pods walle/checker запущено (по умолчанию: 1).
Выполните проверку лога istio-proxy (компонент SVPX) на отсутствие ошибок.
Выполните проверку логов walle/checker на отсутствие ошибок.
Выполнить проверку логов filebeat (LOGA) на отсутствие ошибок.
Выполните HTTP запрос методом POST с обязательным путем в URL. Пример запроса:
curl -X POST 'адрес:порт/xml' \
--header 'method: POST' \
--header 'Content-Type: application/json' \
--data-raw '{"kind":"AdmissionReview","apiVersion":"admission.k8s.io/v1beta1","request":{"uid":"bb715058-1ca8-4e20-af76-8df5b40aeb7c","kind":{"group":"networking.istio.io","version":"v1alpha3","kind":"ServiceEntry"},"resource":{"group":"networking.istio.io","version":"v1alpha3","resource":"serviceentries"},"requestKind":{"group":"networking.istio.io","version":"v1alpha3","kind":"ServiceEntry"},"requestResource":{"group":"networking.istio.io","version":"v1alpha3","resource":"serviceentries"},"name":"external-host-se","namespace":"synapse-dev-control-plane","operation":"CREATE","userInfo":{"username":"17644602","uid":"3456199e-6346-425c-9756-3e1ccd40b566","groups":["system:authenticated:oauth","system:authenticated"],"extra":{"scopes.authorization.openshift.io":["user:full"]}},"object":{"apiVersion":"networking.istio.io/v1alpha3","kind":"ServiceEntry","metadata":{"creationTimestamp":"2021-01-27T08:55:58Z","generation":1,"managedFields":[{"apiVersion":"networking.istio.io/v1alpha3","fieldsType":"FieldsV1","fieldsV1":{"f:spec":{".":{},"f:exportTo":{},"f:hosts":{},"f:ports":{},"f:resolution":{}}},"manager":"Mozilla","operation":"Update","time":"2021-01-27T08:55:58Z"}],"name":"external-host-se","namespace":"synapse-dev-control-plane","uid":"c7aad2fd-6091-4225-a0d8-83fc835870f2"},"spec":{"exportTo":["."],"hosts":["host"],"ports":[{"name":"http2-123","number":123,"protocol":"HTTP2"}],"resolution":"DNS"}},"oldObject":null,"dryRun":false,"options":{"kind":"CreateOptions","apiVersion":"meta.k8s.io/v1"}}}
' -i
Удаление#
Для удаления компонента VALD необходимо выполнить команду:
helm delete vald
Подключиться к проекту#
Через CLI Kubectl.
Шаг |
Действия |
Описание |
|---|---|---|
Выполнить вход в kubernetes |
Загрузите «kubeConfig» от вашего «ServiceAccount». Заведите переменную |
|
Перейти в нужный «Namespace» |
Введите команду: |
Остановить компонент#
Через CLI Kubectl.
Шаг |
Действия |
Описание |
|---|---|---|
Остановка приложения |
В консоли выполните команду: |
Проверка работоспособности#
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
1. Перейдите по ссылке (URL) веб-консоли нужного кластера Kubernetes |
Переход в нужный проект |
Выберите нужный проект в выпадающем списке в шапке веб-интерфейса Kubernetes |
Переход во вкладку Pod |
1. В меню выбрать пункт Workload/Pods |
Выполнить POST запрос |
Выполните HTTP запрос методом POST. Пример запроса: |
Журналирование (LOGA) Platform V Monitor (OPM) |
1. После старта приложения перейти в системный журнал |
Проверка работоспособности компонента VALD, собранного на SberLinux в DropApp |
1. Откройте веб-терминал DropApp |
Откат#
Откат программного компонента, как для случая основной установки, так и для случая отката клиентских установок, осуществляется при помощи отката helm chart (helm rollback) с указанием версии, к которой требуется откатить (в том числе к версии с начальными настройками). Удаление установленной версии перед откатом не требуется. Откатывать можно на 2 версии, обратная совместимость поддерживается.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Пути решения |
|---|---|
Helm не может подключиться к проекту |
Проверьте настройки KubeCTL, проверьте наличие прав на установку конфигураций в проект вашей учетной записи |
Не приходят запросы на сервис |
Проверьте настройки ValidatingWebhookConfiguration и настройки компонента IGEG |
Чек-лист валидации установки#
Проверка |
Действия |
|---|---|
Все артефакты компонента загружены в проект |
По списку артефактов найти их в проекте VALD в консоли Kubernetes |
в проекте неймспейсе присутсвует запущенный и работоспособный ingress gateway (IGEG) |
Перейти во вкладку Workload/Deployment неймспейса VALD, найти соответсвующий деплоймент |
Все Pods walle/checker запущены |
Перейти во вкладку Workload/Deployment неймспейса VALD, перейти на вкладку Pods, проверить, что статус всех Pods — Running |
Отсутствие ошибок в логах контейнеров |
Проверить все pods компонента VALD на отсутствие ошибок |
Успешно стартовали контейнеры LOGA и SVPX в pods walle и checker |
Последовательно открыть вкладку с логами pods VALD и убедиться, что в них запущенны контейнеры istioproxy и filebeat и в их логах присутствуют строка о успешном старте |
Успешная обработка пользовательских конфигураций у подключенного проекта |
Реализовать и сохранить конфигурационный файл в подключенном проекте. |
Прохождение внешнего траффика с пользовательской конфигурацией через IGEG и SVPX |
После предыдущей проверки перейти в pod ingress gateway и убедиться что присутсвуют записи о входящем запросе, проделать аналогичную проверку с pod Walle и контейнером istioproxy (SVPX) |
Отключен режим debug во всех используемых компонентах |
Проверить отсутствие включенного режима debug во всех используемых компонентах |