Руководство по системному администрированию#
Термины и сокращения#
Термин/аббревиатура |
Определение |
|---|---|
Под/pod |
Абстрактный объект Kubernetes, представляющий собой группу из одного или нескольких контейнеров приложения и совместно используемых ресурсов для этих контейнеров |
Deployment |
Набор инструкций для запуска приложения в Kubernetes |
OpenShift |
Корпоративная платформа для разработки, развертывания и эксплуатации классических и контейнерных приложений в физических, виртуальных и общедоступных облачных средах |
MPSM |
MarketPlace Service Mesh |
YAML |
Язык сериализация разметки |
Kubernetes |
Портативная расширяемая платформа с открытым исходным кодом для управления контейнеризованными рабочими нагрузками и сервисами |
Helm |
Инструмент развертывания Kubernetes для автоматизации создания, упаковки, настройки и развертывания приложений и служб в кластерах Kubernetes |
OIDC |
OpenID Connect - протокол аутентификации |
Общие положения при администрировании компонента#
Администрирование приложения происходит в Kubernetes-кластере.
Администратор должен следить за истечением срока годности сертификатов и своевременно обновлять их.
Для развертывания компонента MPSM в Kubernetes администратору необходимы права на чтение и запись всех используемых шаблонов, а также возможность читать логи pods.
Сетевая безопасность обеспечивается средствами компонента POLM и возлагается на администраторов АС, использующих компонент MPSM.
Администратор осуществляет:
Отслеживание срока годности сертификатов и их обновление;
Обновление client secret для взаимодействия с OIDC-провайдером;
Обеспечение сетевой безопасности при использовании компонента;
Отслеживание работоспособности.
Сценарии администрирования#
MPSM не имеет собственного пользовательского интерфейса для администрирования. Все действия по управлению им производятся с использованием интерфейсов, предоставляемых Платформой Kubernetes. Специальных механизмов безопасности относящихся к сценариям администрирования и рекомендации по их настройке не предусмотрено. Ниже приведены возможные сценарии администрирования с использованием консоли клиента Kubernetes (kubectl) и менеджера пакетов Helm.
Предусловие: Для работы утилиты kubectl необходим файл конфигурации кластера kubeconfig, в котором прописаны реквизиты подключения к кластеру. Файл генерируется при создании кластера.
На рабочей станции администратора файл размещается в каталоге ~/.kube и имеет название config.
Загрузка конфигураций#
Конфигурация осуществляется путем редактирование файла параметров Helm-чарта (values.yaml).
Запуск#
После установки MPSM, все поды должны запуститься автоматически. Если же этого не произошло или по каким-либо причинам необходим ручной запуск подов, то ниже приведены последовательности действий для запуска.
С использованием веб-интерфейса Kubernetes#
Шаг |
Действие |
|---|---|
Аутентификация в веб-консоли Kubernetes |
1. Перейдите по ссылке веб-консоли нужного кластера Kubernetes |
Переход в нужный namespace |
1. Выберите слева пункт namespace |
Запуск пода |
1. Выберите пункт меню Workload/Deployments |
Выход из веб-консоли Kubernetes |
1. Нажмите на имя пользователя |
Через CLI kubernetes (kubectl).
Шаг |
Действия |
Описание |
|---|---|---|
Вход в kubernetes |
Загрузите «kubeConfig» от вашего «ServiceAccount». Заведите переменную |
|
Переход в нужный «Namespace» |
Введите команду: |
|
Запуск приложения |
В консоли выполните команду: |
N>0 — требуемое количество запущенных Pods приложения |
Остановка#
С использованием web-интерфейса Kubernetes.
Шаг |
Действие |
|---|---|
Логин в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig». |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes. |
Остановка компонента |
Выполнить следующие действия: |
Выход из web-консоли Kubernetes |
Выполнить следующие действия: |
Через CLI kubernetes (kubectl).
Шаг |
Действия |
|---|---|
Авторизация в Kubernetes |
Загрузите «kubeConfig» от вашего «ServiceAccount». Заведите переменную |
Переход в нужный «Namespace» |
Введите команду: |
Остановка приложения |
В консоли выполнить команду: |
Проверка работоспособности#
Шаг |
Действие |
|---|---|
Вход в пользовательский интерфейс |
В браузере перейти по ссылки для пользовательского интерфейса. |
Вход с помощью OIDC |
Выбрать способ входа "OIDC", во всплывающем окне ввести логин и пароль. После входа в боковом меню нажать на вкладку Settings и проверить, что имя и email определены правильно. |
Переход в каталог |
В боковом меню нажать на вкладку Home, при этом должна отобразиться страница с пустой таблицей без сообщений об ошибках. |
Изменение количества Pods#
С использованием web-интерфейса Kubernetes.
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig» |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes |
Запуск Pod |
1. В меню выберите пункт Workload/Deployments. |
Выход из web-консоли Kubernetes |
1. Нажмите по имени пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl).
Шаг |
Действия |
Описание |
|---|---|---|
Увеличить/уменьшить количество Pods |
В консоли выполнить команду: |
Выгрузка и просмотр системных логов Pods#
С использованием web-интерфейса Kubernetes.
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейдите по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes |
Выгрузить лог |
1. В меню выберите пункт Workload/Pods. |
Выход из web-консоли Kubernetes |
1. Выберите имя пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl).
Шаг |
Действия |
|---|---|
Выгрузить лог |
В консоли выполнить команду: |
Обновление сертификатов#
В случаях истечения срока годности сертификатов безопасности, ключей доступа и иных секретов или их компрометации необходимо незамедлительно позаботиться о их замене, для обеспечения безопасности использования компонентов и сохранности передаваемых данных от третьих лиц.
См. документ Руководство по установке:
для Ingress Gateway: разделы "Подготовка сертификатов для Ingress Gateway" и "Настройка подключения сертификатов к Ingress Gateway";
для Egress Gateway: разделы "Подготовка сертификатов для Egress Gateway" и "Настройка подключения сертификатов к Egress Gateway".
Обновление client secret для взаимодействия с OIDC-провайдером#
См. документ Руководство по установке, разделы "Подготовка при аутентификации по протоколу OIDC" и "Настройка аутентификации по протоколу OIDC".
События системного журнала#
Системный лог выводится в консоль контейнера приложения. Не предусмотренно изменение уровня логирования.
Примеры более важных error-событий см. в разделе "Пример вывода логов".
События мониторинга#
Компонент не создает события мониторинга.
Пример вывода логов#
Формат лога:
1970-01-01T00:00:00.000Z <тема> <приоритет> <сообщение>Обрабатывается элемент каталога:
2023-02-03T11:00:57.314Z catalog debug Processing domain:default/synapse-platform type=plugin
Успешная аутентификация через OIDC:
2023-03-29T06:52:00.948Z auth info Issuing token for user:auth-keycloak-oidc/username@example.com, with entities user:auth-keycloak-oidc/username@example.com, group:auth-keycloak-oidc/admins type=plugin component=token-factory
Предупреждение (недоступна аутентификация через Keycloak из-за некорректных настроек):
2023-04-27T11:04:21.245Z auth warn Skipping keycloak-oidc auth provider, Invalid type in config for key 'auth.providers.keycloak-oidc.development.clientId' in 'app-config.yaml', got empty-string, wanted string type=plugin
Ошибка в readiness probe (объект не найден в каталоге):
2023-04-27T10:50:11.081Z backstage error Entity not found type=errorHandler stack=Error: Entity not found
2023-04-27T10:50:11.081Z backstage info ::ffff:127.0.0.1 - - [27/Apr/2023:10:50:11 +0000] "GET /healthcheck/readiness/entityRef HTTP/1.1" 500 460 "-" "curl/7.86.0" type=incomingRequest
Ошибка в readiness probe (при установке указан некорректный entity ref):
2023-04-27T10:48:00.294Z backstage error Entity reference "nx" had missing or empty kind (e.g. did not start with "component:" or similar) type=errorHandler stack=Error: Entity reference "nx" had missing or empty kind (e.g. did not start with "component:" or similar)
Фатальная ошибка (некорректно указан URL Keycloak):
node:internal/process/promises:265
triggerUncaughtException(err, true /* fromPromise */);
^
Error: getaddrinfo ENOTFOUND keycloak.nxdomain.local
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'keycloak.nxdomain.local'
}
События мониторинга#
Компонент не предполагает собственной интеграции с системой мониторинга.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Причина |
Решение |
|---|---|---|
На шаге установки шаблона / при разворачивании интеграции из LowCode отображается ошибка "Unexpected exit result: code null, signal SIGKILL" |
Недостаточно ресурсов, возможна утечка памяти |
Перезапустить контейнер mpsm-backend |
Не стартует Pod приложения |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |
Не стартует Pod приложения |
Нет доступной node для запуска |
Зарегистрировать обращение в поддержку инфраструктуры |
Не стартует Pod приложения |
Ошибка в конфигурации |
Выгрузить лог, провести анализ, скорректировать конфигурацию |
Частый перезапуск контейнера приложения |
Медленная загрузка приложения |
Увеличить задержку и/или интервал опроса Liveness пробы |
Частый перезапуск контейнера приложения |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |