Skip to content

Подключение источников через 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) по ссылке в верхнем меню.

Ссылка на страницу **Инджесторы (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
А так же удалить его секрет в среде Kubernetes:
kubectl delete secret ingestion-secrets

Важно! Удаление инджестора автоматически не приводит к удалению метаданных, которые были загружены с его помощью.

Метаданные необходимо удалить отдельно (например, путем удаления нужно Platform instance)

Откат (rollback) запуска инждестора

Если по результатам какого-либо конкретного запуска инджестора были загружены некорректные данные, MWS Data Cat позволяет сделать откат запуска.
В рамках этой операции будут отменены изменения, произошедшие в рамках одного конкретного запуска инджестора. Чтобы сделать откат, необходимо:
- Открыть страницу Инджесторы (Ingestion);
- Найти необходимый инджестор в списке (в том числе с помощью поиска или фильтра по типу инджестора);
- С помощью кнопки "+" слева от наименования инджестора, раскрыть информацию о запусках инджестора;
- Воспользоваться кнопкой Откат в строке с нужным запуском инджестора и подтвердить отмену загрузки.

По результатам отката в строке с откатываемым запуском инджестора изменится статус запуска на Совершен откат.