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

В руководстве приведены инструкции по установке компонента Сервисный прокси (SVPX).

Термины и определения#

Термин/аббревиатура

Определение

CPU

Central Processing Unit, центральный процессор

KB

Килобайт (КБ) — единица измерения количества информации, равная 1024 байтам

MB

Мегабайт (МБ) — единица измерения количества информации, равная 1024 KБ

ГБ

Гигабайт (ГБ) — единица измерения количества информации, равная 1024 MБ

TB

Терабайт (ТБ) — единица измерения количества информации, равная 1024 ГБ

TPS

Ticks per Second, число тактов в секунду

Милликор

Метрическая единица измерения, используемая для измерения загрузки процессора

Pod

Набор контейнеров внутри узла кластера Kubernetes

Deployment

Набор инструкций для запуска приложения в Kubernetes

Платформа

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

Сервисная сетка / Service Mesh

Архитектурный паттерн реализации управляемых, безопасных, контролируемых, прозрачных взаимодействий между микросервисными приложениями, обеспечиваемый набором прокси (Сервисных и Граничных), установленных в namespace потребителя

Istio SE

Настраиваемая сервисная сетка с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в кластере Kubernetes

Контрольная панель

Проект, где запущены управляющие приложения (компонент POLM)

Управление политиками / POLM

Компонент Управление политиками

Граничный прокси / IGEG

Компонент Граничный прокси

Сервисный прокси / SVPX

Компонент Сервисный прокси

Ingress Gateway

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

Egress Gateway

Прокси для контроля исходящего трафика из проекта. Egress позволяет применять правила мониторинга и правила маршрутизации к выходящему трафику

Проект / namespace

Изолированная область (пространство имен) в кластере Kubernetes, предназначенная для разграничения доступа к ресурсам кластера (Deployment, Service, и т.д.)

Системные требования#

Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.

Системное программное обеспечение#

Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.

Категория ПО

Обязательность установки (да/нет)*

Наименование ПО

Версия

Продукт, функциональная совместимость с которым подтверждена**

Описание

Операционная система

Да

Alt Linux SP8

10

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

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

Red Hat Enterprise Linux

8

Опционально

Cреда контейнеризации

Да

Kubernetes

1.19 и выше

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

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

Red Hat OpenShift

4.6 и выше

Опционально

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

Да

Docker CE

19.03.14

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

Инструмент для автоматизации работы с контейнерами

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

Да

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

Опционально

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

Нет

Istio

1.6 и выше

Опционально

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

Система хранения и распространения secrets

Нет

HashiCorp Vault

1.10 и выше

Опционально

Система, обеспечивающая безопасный и надежный способ хранения и распространения secrets

Система мониторинга (сбор и хранение метрик)

Нет

Prometheus

2.37 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения – Объединенный мониторинг Unimon Platform V Monitor, см. раздел «Платформенные зависимости»

Система для сбора и хранения численных метрик

Сервис для сбора метрик

Нет

Victoria metrics

1.5 и выше

Опционально

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

Интерпретатор NodeJS

Нет

NodeJS

14-buster

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

Кроссплатформенная среда исполнения с открытым исходным кодом

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

Нет

Helm

3.8 и выше

Опционально

Инструмент для автоматизации создания, настройки и развертывания приложений и служб в k8s

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

Нет

kubectl CLI

1.20.5 и выше

Опционально

Интерфейс командной строки для взаимодействия с кластером

Примечание:

*

  • Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).

  • Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).

**

  • Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.

  • Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.

Платформенные зависимости#

У компонента SVPX реализована интеграция со следующими компонентами из состава продукта:

Наименование компонента

Код

Описание

Управление политиками

POLM

Управление политиками формирует конфигурации компонент сервисного и граничного прокси

Граничный прокси

IGEG

Обработанная конфигурация загружается в виде настроек в IGEG. Также IGEG подписывается на рассылку конфигураций от POLM

Для настройки, контроля и функционирования компонента SVPX реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Наименование продукта

Код

Версия продукта

Код и наименование компонента

Обязательность установки (да/нет)***

Описание

Аналог других производителей****

Platform V Monitor

OPM

4.1

LOGA/Журналирование

Нет

Сервис предназначен для сохранения логов и предоставляет возможности для их просмотра и анализа конечными пользователями (сотрудниками поддержки)

Любой сервис сбора записей о событиях, совместимый с fluent-bit, например: Elasticsearch, InfluxDB

MONA/Объединенный мониторинг Unimon

Нет

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

Prometheus 2.21.0

Platform V DropApp

K8S

1.1 и выше

K8SC K8S Core

Нет

Дистрибутив Kubernetes со встроенными механизмами мультитенантности и бессерверным исполнением

Kubernetes
Red Hat OpenShift Container Platform

Platform V SberLinux OS Server

SLO

8.7

INST Операционная система

Нет

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

ОС Альт 8 СП
Red Hat Enterprise Linux

Platform V IAM

IAM

1.2 и выше

KCSE KeyCloak.SE

Нет

Сервис для управления доступом к информационным ресурсам и учетными записями

Keycloak 16.1.x и выше

Platform V Synapse Service Mesh

SSM

3.9

SMDL DevOps инструменты Service Mesh

Нет

Сборка, установка и администрирование сервисов на Synapse

Istio control plane 1.12

GATM Сбор и анализ метрик

Нет

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

Примечание:

***

  • Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).

  • Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).

****

  • Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».

Аппаратные требования#

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

Процессор

CPU измеряется в милликорах (millicores). Один милликор равен 1⁄1000 ядра. 1000 милликоров = 1 ядро.

Память

Память измеряется в KБ, MБ, ГБ и TБ.

Единицы измерения:

  • 1024 bytes = 1 KБ;

  • 1024 KB = 1 MБ;

  • 1024 MB = 1 ГБ;

  • 1024 ГБ = 1 TБ.

На промышленных стендах для повышения надежности для критичных сервисов рекомендуется устанавливать request = limit.

Стандартные значения ресурсов сервисного прокси определенные в настройках контрольной панели (компонент POLM):

CPU Request, millicores

CPU Limit, millicores

Memory Request, MБ

Memory Limit, MБ

100

200

128

256

Примерные значения по ресурсам сервисного прокси в зависимости от нагрузки на прикладной сервис с инжектированным сервисным прокси:

TPS

CPU / Request, millicores

CPU / Limit, millicores

Memory / Request, MБ

Memory / Limit, MБ

0-10

100

200

200

400

10-100

250

500

250

500

>100

350

700

300

600

Для сервисного прокси требуемые и максимальные значения задаются администраторами с помощью настроек контрольной панели (компонент POLM). Если требуется установить другие значения ресурсов сервисного прокси, то можно переопределить их с помощью аннотаций в Deployment прикладного сервиса.

Чтобы переопределить настройки по умолчанию, необходимо добавить аннотацию в Deployment прикладного сервиса:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      annotations:
    sidecar.istio.io/inject: 'true'
    sidecar.maistra.io/proxyCPULimit: 300m
    sidecar.maistra.io/proxyMemoryLimit: 300Mi
    sidecar.istio.io/proxyCPU: 300m
        sidecar.istio.io/proxyMemory: 300Mi

Подготовка окружения#

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

  1. Развернут и настроен кластер Kubernetes версии 1.19 и выше, в соответствии с требованиями, предъявляемыми к Платформе.

  2. В кластере создан проект для развертывания контрольной панели (компонент POLM);

  3. В кластере создан и подключен к контрольной панели (компонент POLM) прикладной проект. Действия по подключению проекта выполняют администраторы контрольной панели.

Установка#

Этот документ содержит названия переменных, которые применимы для различных сред контейнеризации, указанных в системных требованиях руководства по установке.

Установка платформенных зависимостей производится по инструкции, входящей в комплект соответствующих дистрибутивов.

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

Установка сервисного прокси представляет собой внедрение в Pod прикладного сервиса дополнительного контейнера (istio-proxy), функционирующего в режиме sidecar.

Чтобы установить в Pod прикладного сервиса контейнер с сервисным прокси, добавьте аннотацию в Deployment приложения прикладного сервиса. Проект прикладного сервиса при этом должен быть подключен к одной из контрольных панелей (компонент POLM), в соответствии с документацией на POLM.

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      annotations:
    sidecar.istio.io/inject: 'true'

Для внесения изменений в конфигурацию уже установленного проекта пользователь должен иметь права изменения ресурсов Deployment в проекте.

Обновление#

Все настройки сервисного прокси устанавливаются в проекте контрольной панели, в котором развернут сервис управления политиками (компонент POLM).

Именно сервис Управления политиками автоматически добавляет (инжектит) сервисный прокси в прикладной Pod. Для обновления сервисного прокси необходимо обновить сервис управления политиками (компонент POLM) на новую версию, чтобы он при инжекте вставлял новый образ сервисного прокси. Описание процесса обновления приведено в разделе «Обновление» документа «Руководство по установке» компонента POLM.

Для обновления сервисного прокси в приложении, требуется провести рестарт Pod, после чего новая версия сервисного прокси загрузится автоматически для всех прикладных сервисов, подключенных к контрольной панели. Рестарт может осуществляться с использованием различных стратегий, например, rolling update, в зависимости от требований приложений, запущенных в данном Pod.

Удаление#

Для удаления Sidecar istio-proxy из Pod прикладного сервиса необходимо отредактировать Deployment приложения прикладного сервиса и указать false в значении sidecar.istio.io/inject:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      annotations:
    sidecar.istio.io/inject: 'false'

Для внесения изменений в конфигурацию уже установленного проекта пользователь должен иметь права изменения ресурсов Deployment в проекте.

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

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

  1. Зайдите в нужный проект.

  2. В меню выберите пункт Workload/Pods.

  3. На странице найдите нужный Pod прикладного сервиса.

  4. Нажмите на вкладку и выберите Logs.

  5. Выберите контейнер сервисного прокси (istio-proxy).

  6. Проверьте, что в консоли нет ошибок.

  7. Убедитесь, что есть строка Envoy proxy is ready (прокси готов к работе).

Picture Picture

Также можно убедиться в том, что сам сервисный прокси запущен, путем просмотра статуса контейнера istio-proxy. Статусы Ready и Started должны быть в значении True.

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

При реализации архитектуры с компонентами LOGA и MONA необходимо ознакомиться с методами проверки работоспособности в документации указанных компонентов.

Откат#

Откат сервисного прокси на предыдущую версию может быть выполнен только в рамках отката компонента POLM в контрольной панели. Описание процесса отката приведено в разделе «Откат» документа «Руководство по установке» компонента POLM.

Часто встречающиеся проблемы и пути их устранения#

Проблема

Пути решения

Сервисный прокси не может подключиться к компоненту POLM, в системном журнале видно сообщение Envoy proxy is NOT ready

Проверьте корректность подключения к контрольной панели.
Обратитесь к системным администраторам контрольной панели

До прикладного приложения не доходят запросы

Проверьте access-логи сервисного прокси. Возможные варианты сообщений описаны ниже

В access-логе сервисного прокси видно сообщение:
NR (No route configured):
В конфигурации сервисного прокси отсутствует требуемый маршрут

Авторизуйтесь в прикладном проекте. Если вызов направлен на внутренний сервис, проверьте наличие сервиса с таким именем и корректность параметров host/порт в конфигурационных файлах прикладного проекта — Gateway, DestinationRule и VirtualService. Если вызов направлен на внешний host, проверьте наличие конфигурационного файла ServiceEntry для данного сочетания host/порт

В access-логе сервисного прокси видно сообщение:
UO (Upstream overflow with circuit breaking):
Поставщик перегружен запросами

Авторизуйтесь в прикладном проекте. Проверьте корректность конфигурации раздела connectionPoolSettings в DestinationRule

В access-логе сервисного прокси видно сообщение:
UF (Failed to connect to upstream):
Поставщик сбросил соединение

Авторизуйтесь в прикладном проекте. Если используется автоматическая аутентификация ISTIO_MUTUAL — проверьте наличие конфликта в разделе trafficPolicy конфигурационного файла DestinationRule, относящегося к проблемному сервису, и раздела Spec/mTLS конфигурационного файла peerAuthentication. В случае указания разных режимов работы в поле tls — возможны указанные ошибки

В access-логе сервисного прокси видно сообщение:
UH (No healthy upstream):
Поставщик неработоспособен

Авторизуйтесь в прикладном проекте. Проверьте наличие вызываемого сервиса — в веб-интерфейсе Home/Networking/Services/Search_by_name найдите сервис. Проверьте наличие запущенного Pod, на который ссылается сервис — в веб-интерфейсе кликните правой кнопкой мыши на найденный сервис, выберите вкладку Pods на открывшейся странице, убедитесь, что статус Pods на данной странице имеет значение running

Если указанные пути решения не помогли, обратитесь к системным администраторам контрольной панели.

Чек-лист валидации установки#

  1. Слева в меню Workloads выберите раздел Pods.

  2. В списке выберите Pod нужного прикладного сервиса и перейдите в него.

  3. Проверьте, что на вкладке Details в разделе Containers появился контейнер с сервисным прокси (istio-proxy).

  4. Проверьте интеграции компонента SVPX с внешними системами и компонентами. Порядок проверки приведен в подразделе «Проверка работоспособности интеграций».