Подключение источников через Kubernetes
MWS Data Cat позволяет настраивать подключение источников для сбора метаданных используя Helm Chart. Инджестор представляет из себя CronJob, которая по указанному расписанию будет сканировать источник и отправлять метаданные в API Каталога Данных
Настройки, предварительные условия, разрешения
Для корректного развертывания потребуется:
- Helm версии 3.0 и выше;
- Kubernetes версии 1.27 и выше.
Для работы с просмотром, добавлением, удалением, изменением источников существуют следующие привилегии:
Привилегии уровня платформы
View All Metadata Ingestion Sources - просмотр всех созданных инжесторов;
Manage Metadata Ingestion - возможность создавать, удалять, редактировать все инджесторы;
Привилегии уровня метаданных
View Metadata Ingestion Source - просмотр только инжесторов, принадлежащих продукту (-ам), в которых пользователь указан как владелец (owner) в любом типе;
Rollback Metadata Ingestion Source - откат (rollback) запуска инджестора;
Delete Metadata Ingestion Source - удаление инджестора.
С полным списком привилегий можно ознакомиться в соответствующих разделах документации:
Привилегии уровня платформы
Привилегии уровня метаданных
Страница Инджесторы (Ingestion) доступна (видима) пользователю при наличии хотя бы одной из перечисленных выше привилений
Просмотр существующих инджесторов
Для просмотра существующих инджесторов, необходимо перейти на страницу Инджесторы (Ingestion) по ссылке в верхнем меню.
Страница содержит следующие элементы:
Список инджесторов
Здесь отображаются инджесторы, существующие в MWS Data Cat. Список может содержать все инджесторы или только те, которые связаны с продуктами, где ваша учетная запись указана в качестве владельца любого типа - в зависимости от привилегий используемой учетной записи.
Информация по каждому инджестору отображается по следующим парамертам:
- Тип - тип технологии источника;
- Имя - наименование инджестора, указанное при его создании;
- Расписание - запланированное расписание запуска инджестора (при наличии);
- Количество запусков - количество запусков инджестора;
- Последний запуск - дата и время последнего запуска инджестора;
- Последний статус - статус последнего запуска инджестора.
Также, при нажатии на "+" слева от наименования инджестора, можно посмотреть детальную информацию по каждому запуску выбранного инджестора.
Здесь представлена информация о:
- дате и времени начала и завершения процесса инджестинга;
- продолжительности каждого запуска;
- статус каждого запуска.
По кнопке "Детали" (Details) можно просмотреть подробную информацию о:
- статусе выполнения отдельного процесса инджестинга;
- логи процесса инджестинга;
- рецепт, с которым был выполнен данный процесс.
Поиск и фильтр по типу инджестора
Над списком инджесторов располагается поисковая строка, с помощью которой можно оставить в списке только инджесторы, наименование которых соответствует введенному запросу.
Фильтр по типу инджестора позволяет оставить в списке только инджесторы определенного типа:
- UI - созданные через пользовательский интерфейс;
- CLI - созданные вне пользовательского интерфейса.
Создание инджесторов
Перед созданием инджестора, вам необходимо сгенерировать Персональный токен доступа (Personal Access Token) - он будет необходим на одном из шагов настройки нового инджестора.
Оформление манифеста с рецептом
Пример манифеста:
crons:
postgres:
timezone: "Europe/Moscow"
schedule: "0 0 * * *"
suspend: false
resources:
limits:
cpu: 100m
memory: 256Mi
recipe:
source:
## Технология источника
type: postgres
config:
## Хост и порт сервера БД
host_port: 'some_host:5432'
## Имя БД
initial_database: 'my_db'
## Пользователь
username: user
## Пароль
password: "${INGESTION_PASSWORD}"
## Наименование источника в Каталоге данных.
platform_instance: 'platform_instance'
## 'Stateful ingesting' - если включен, то отсутсвующие в загружаемых метаданных таблицы/поля
## не будут отображаться в Каталоге после загрузки
stateful_ingestion:
enabled: true
database_pattern:
allow: ['.*']
deny: []
ignoreCase: True
## pipeline_name должно быть уникальным
pipeline_name: 'pipeline_name'
sink:
type: catalog-rest
config:
server: 'https://gms.data.mws.ru'
token: "${INGESTION_GMS_TOKEN}"
transformers:
- type: 'add_digital_products'
config:
## Список продуктов из мастер-системы, с которыми будут связаны все объекты, создаваемые по результатам инджестинга.
digital_products: ['PRODUCT_ID1','PRODUCT_ID2']
## Подключение секрета в котором лежат креды от источника и токен
envFrom:
- secretRef:
name: ingestion-secrets
Создание секрета
Создайте секрет в которым будут лежать пароль от источника метаданных и токен для авторизации в GMS API Каталога Данных
kubectl create secret generic ingestion-secrets --from-literal=INGESTION_PASSWORD=somepassword --from-literal=INGESTION_GMS_TOKEN=sometoken
Добавление репозитория
helm repo add --username <your-username> --password <your-token> mws-neoflex https://repo.productfactory.mts.ru/api/v4/projects/13/packages/helm/stable
helm repo update
Установка инджестора
helm install ingestion mws-neoflex/metadata-ingestion-cron --values <your-values.yaml>
После успешной установки инджестор должен появиться в списке CronJob, для проверки выполните команду kubectl get cronjobs
:
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
ingestion-metadata-ingestion-cron 0 * * * * <none> False 0 <none> 2s
Запуск инджестора
Можно либо дождаться выполнения данного инджестора согласно указаному в манифесте рассписанию, либо создать джобу
ingestion-manual
используя CronJob в качестве шаблона:
kubectl create job --from=cronjob/ingestion-metadata-ingestion-cron ingestion-manual
Редактирование инджесторов
После создания инджестора из HelmChart, отредактировать его настройки можно только поправив манифест.
Удаление инджесторов
В случае, когда созданный ранее инджестор более не нужен, его можно удалить, воспользовавшись соответствующей кнопкой в интерфейсе в строке с нужным инджестором, но он таким образом будет удален только в интерфейсе. Необходимо так же отозвать его токен и удалить сам инджестор:
helm uninstall ingestion
kubectl delete secret ingestion-secrets
Важно! Удаление инджестора автоматически не приводит к удалению метаданных, которые были загружены с его помощью.
Метаданные необходимо удалить отдельно (например, путем удаления нужно Platform instance)
Откат (rollback) запуска инждестора
Если по результатам какого-либо конкретного запуска инджестора были загружены некорректные данные, MWS Data Cat позволяет сделать откат запуска.
В рамках этой операции будут отменены изменения, произошедшие в рамках одного конкретного запуска инджестора.
Чтобы сделать откат, необходимо:
- Открыть страницу Инджесторы (Ingestion);
- Найти необходимый инджестор в списке (в том числе с помощью поиска или фильтра по типу инджестора);
- С помощью кнопки "+" слева от наименования инджестора, раскрыть информацию о запусках инджестора;
- Воспользоваться кнопкой Откат в строке с нужным запуском инджестора и подтвердить отмену загрузки.
По результатам отката в строке с откатываемым запуском инджестора изменится статус запуска на Совершен откат.