Руководство по установке#

В руководстве приведены инструкции по установке компонента Валидатор конфигураций 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, см. раздел «Платформенные зависимости»

ОС контейнеров для запуска модулей компонента

Red Hat Enterprise Linux

8.0

Опционально

Платформа для разработки, доставки и запуска контейнерных приложений

Да

Docker CE

4.6 и выше

Рекомендовано

Платформа контейнеризации с открытым исходным кодом

Среда оркестрации контейнеров

Да

Kubernetes

1.19 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости»

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

Red Hat OpenShift

4.6 и выше

Опционально

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

Сервис интеграции и оркестрации микросервисов в облаке

Нет

Istio

1.6 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке,
основанный на Istio – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости»

Сервис интеграции микросервисов в облаке

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Да

Nexus-Public

3.42.0

Рекомендовано

Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО

Nexus Repository Manager PRO

3.43.0

Опционально

Nexus Repository Manager OSS

3.43.0

Опционально

Сервис централизованного хранения репозиториев исходного кода

Да

GitLab Community Edition

15.7 и выше

Рекомендовано

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

Bitbucket

7.6.7 и выше

Опционально

Сервис интеграции микросервисов в облаке

Инструмент командной строки

Да

kubectl CLI

1.21 и выше

Рекомендовано

Инструмент командной строки для управления кластерами Kubernetes

Менеджер пакетов

Да

Helm

3.9 и выше

Рекомендовано

Менеджер пакетов Kubernetes

Хранилище логов

Нет

Apache Kafka

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.

Перед установкой проверьте соблюдение следующих условий:

  1. При работе компонента VALD с IGEG требуется наличие развернутого компонента SSM - POLM.

  2. В кластере создан проект (namespace) в котором будет разворачиваться валидатор конфигураций. При работе компоненты VALD с IGEG требуется подключить проект к контрольной панели (POLM).

  3. В проекте создана учетная запись с правами на загрузку артефактов (администратор проекта).

  4. Получена ссылка на целевой Docker-репозиторий.

  5. В проект добавлен секрет для загрузки docker-образов из целевого Docker-репозитория.

  6. В проекте имеются свободные ресурсы по лимитам и реквестам не менее, чем зарезервировано в конфигурационных артефактах.

  7. При установке с использованием консоли, на рабочем месте должен быть установлен клиент Kubernetes (kubectl) и Helm.

Установка#

Установка с использованием SMDL#

  1. Для установки с использованием SMDL компонента VALD.

  2. Для использования job необходимо ознакомиться с документацией к компоненту SMDL. Перейти в документ "Руководство оператора", далее перейти в раздел pipelines, и выбрать папку SynapseInstaller. SynapseInstaller должен запускаться с отдельным конфиг файлом, в котором заменен блок executor

  3. Перейти в job SynapseInstaller.

  4. Перейти во вкладку Собрать с параметрами.

  5. Заполнить поля (CI; nexusLink; ClusterName; projectsConfigGitUrlSources; orchestratorProject).

  6. Нажать кнопку Собрать.

  7. Дождаться результатов установки.

Установка с использованием менеджера пакетов HELM#

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

Для ручной установки сервиса выполните следующие действия:

  1. Зайдите в командную оболочку.

  2. Создайте файл конфигурации для 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 неймспейс/хост:порт/логин
  1. Настройте конфигурационный файл values.yaml для развертывания шаблонов.

  2. Запустите установку через HELM

    helm install vald "путь до папки с helm charts"
    

Шаблон helm chart#

Элемент helm

Описание

Chart.yaml

Содержит описание пакета

values.yaml

Содержит значения переменных для развертывания

templates

Содержит описание конфигурационных файлов

templates/_helpers.tpi

Форматирует конфигурационный файл для ConfigMap

templates/configmap.yaml

Содержит требуемые шаблоны сущности ConfigMap

templates/deployment.yaml

Содержит требуемые шаблоны сущности Deployment в том числе SVPX

templates/destinationrule.yaml

Содержит требуемые шаблоны сущности DestinationRule

templates/envoyfilter.yaml

Содержит требуемые шаблоны сущности EnvoyFilter

templates/gateway.yaml

Содержит требуемые шаблоны сущности Gateway

templates/route.yaml

Содержит требуемые шаблоны сущности Route

templates/service.yaml

Содержит требуемые шаблоны сущности Service

templates/serviceacaunt.yaml

Содержит требуемые шаблоны сущности ServiceAccount

templates/serviceentry.yaml

Содержит требуемые шаблоны сущности ServiceEntry

templates/virtualservice.yaml

Содержит требуемые шаблоны сущности VirtualService

igeg_istio.yaml

Содержит требуемые шаблоны для развертывания IGEG Istio SE

igeg_rhsm.yaml

Содержит требуемые шаблоны для развертывания IGEG RHSM

Обновление#

Удаление предыдущей версии компонента не требуется. Для обновления версии компонента VALD необходимо выполнить команду:

helm upgrade vald

Обновление происходит по стратегии "Rolling".

  1. Убедитесь, что выставленное количество pods walle/checker запущено (по умолчанию: 1).

  2. Выполните проверку лога istio-proxy (компонент SVPX) на отсутствие ошибок.

  3. Выполните проверку логов walle/checker на отсутствие ошибок.

  4. Выполнить проверку логов filebeat (LOGA) на отсутствие ошибок.

  5. Выполните 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». Заведите переменную KUBECONFIG=~/.kube/config, где располагается выгруженная конфигурация.

Перейти в нужный «Namespace»

Введите команду:
kubectl config set-context --current --namespace=<имя вашего проекта>

Остановить компонент#

  • Через CLI Kubectl.

Шаг

Действия

Описание

Остановка приложения

В консоли выполните команду:
kubectl scale --replicas=0 deployment/<имя Deployment>

Проверка работоспособности#

Шаг

Действие

Вход в веб-консоль Kubernetes

1. Перейдите по ссылке (URL) веб-консоли нужного кластера Kubernetes
2. В окне ввода учетных данных введите токен пользователя или kubeconfig

Переход в нужный проект

Выберите нужный проект в выпадающем списке в шапке веб-интерфейса Kubernetes

Переход во вкладку Pod

1. В меню выбрать пункт Workload/Pods
2. В рамках таблицы Pods проверить столбец «Status», валидное значение «Running»
3. подтвердить значение в столбце «Restarts» равное 0

Выполнить POST запрос

Выполните HTTP запрос методом POST. Пример запроса:
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

Журналирование (LOGA) Platform V Monitor (OPM)

1. После старта приложения перейти в системный журнал
2. Должны отобразится свежие logs

Проверка работоспособности компонента VALD, собранного на SberLinux в DropApp

1. Откройте веб-терминал DropApp
2. Выберите namespace с развернутым компонентом VALD, в соответствии с инструкцией описанной в документе Руководство по установке
3. Откройте раздел деплоймент и найдите деплоймент компонента VALD
4. Перейдите на вкладку pods и убедитесь, что все pods в статусе Running
5. Откройте любой запущенный pod компонента VALD
6. Перейдите на вкладку Terminal и введите команду cat /etc/os-release - в выводе команды присутствует информация о том, что VALD работает на базовом образе SberLinux

Откат#

Откат программного компонента, как для случая основной установки, так и для случая отката клиентских установок, осуществляется при помощи отката 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 и в их логах присутствуют строка о успешном старте

Успешная обработка пользовательских конфигураций у подключенного проекта

Реализовать и сохранить конфигурационный файл в подключенном проекте.
Перейти во вкладку Workload/Deployment проекта VALD, перейти на вкладку Pods, в pod проекта проверить наличие зарегистрированного события валидации, созданного вами конфигурационного файла

Прохождение внешнего траффика с пользовательской конфигурацией через IGEG и SVPX

После предыдущей проверки перейти в pod ingress gateway и убедиться что присутсвуют записи о входящем запросе, проделать аналогичную проверку с pod Walle и контейнером istioproxy (SVPX)

Отключен режим debug во всех используемых компонентах

Проверить отсутствие включенного режима debug во всех используемых компонентах