Интеграция с Excel
Инструкции ниже описывают, как развернуть YTsaurus Excel-интеграцию в Kubernetes. Подробнее про функционал можно прочитать в разделе по работе с данными Microsoft Excel.
Описание
Интеграция включает в себя два микросервиса:
- Exporter — скачивает данные из схематизированных статических таблиц YTsaurus или результатов Query Tracker в виде Excel-таблицы.
- Uploader — загружает данные из Excel-таблиц в статические таблицы YTsaurus.
Весь код микросервиса находится в отдельном репозитории ytsaurus/ytsaurus-excel-integration.
Установка Helm-чарта
Для установки обоих сервисов используется единый Helm-чарт.
-
Подготовьте файл
values.yaml.Минимальная конфигурация:
settings: clusters: - proxy: http-proxies.default.svc.cluster.local # Определяет псевдоним прокси, используемый в пути API: # <http_addr>/<api_path_prefix>/<api_endpoint_name>/api/ # По умолчанию: совпадает с proxy. api_endpoint_name: <cluster-name> # Имя вашего кластера (см. в //sys/@cluster_connection/cluster_name) cors: allowed_hosts: - "yt.example.com" # Адрес вашего UI -
Установите чарт:
helm install ytsaurus-excel oci://ghcr.io/ytsaurus/ytsaurus-excel-chart \ --version 0.0.1 \ -f values.yaml \ -n <namespace>
Настройка сетевого доступа и включение в UI
Для того чтобы функции экспорта и импорта Excel появились в интерфейсе, необходимо настроить доступность сервисов для браузера пользователя и указать их адреса в конфигурации UI.
Production
Рекомендуемый способ для production-окружения — настроить Ingress.
-
Пример
values.yamlс настройкой CORS для вашего домена UI:settings: clusters: - proxy: http-proxies.default.svc.cluster.local api_endpoint_name: ytsaurus exporter: api_path_prefix: "api/excel/exporter" uploader: api_path_prefix: "api/excel/uploader" cors: allowed_hosts: - "yt.example.com" -
Пример Ingress-манифеста:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ui-ingress namespace: <namespace> spec: rules: - host: <your-ui-domain> # Укажите здесь ваш домен UI http: paths: - backend: service: name: ytsaurus-excel-uploader-svc port: name: http path: /api/excel/uploader pathType: Prefix - backend: service: name: ytsaurus-excel-exporter-svc port: name: http path: /api/excel/exporter pathType: Prefix - backend: service: name: ytsaurus-ui-ytsaurus-ui-chart port: name: http path: / pathType: Prefix -
Настройка UI:
В
values.yamlчартаytsaurus-uiнеобходимо добавить следующие настройки:settings: exportTableBaseUrl: "https://yt.example.com/api/excel/exporter" uploadTableExcelBaseUrl: "https://yt.example.com/api/excel/uploader"И обновить чарт UI:
helm upgrade ytsaurus-ui oci://ghcr.io/ytsaurus/ytsaurus-ui-chart \ --version "0.5.0" \ -f values.yaml \ -n <namespace>
Testing
Для локальной разработки или тестирования можно использовать port-forward:
-
Пример
values.yaml:settings: clusters: - proxy: http-proxies.default.svc.cluster.local api_endpoint_name: minisaurus cors: allowed_hosts: - "localhost:8080" # Адрес локального UI -
Откройте доступ к микросервисам:
kubectl port-forward service/ytsaurus-excel-uploader-svc 9095:80kubectl port-forward service/ytsaurus-excel-exporter-svc 9096:80 -
Настройка UI:
В
values.yamlчартаytsaurus-uiнеобходимо добавить следующие настройки:settings: uploadTableExcelBaseUrl: "http://localhost:9095" exportTableBaseUrl: "http://localhost:9096"
И обновить чарт UI:
helm upgrade ytsaurus-ui oci://ghcr.io/ytsaurus/ytsaurus-ui-chart \
--version "0.5.0" \
-f values.yaml \
-n <namespace>
Проверка результата
-
В YTsaurus UI откройте схематизированную статическую таблицу.
-
Нажмите на кнопку
Download. -
Убедитесь, что вкладка
Excelотображается:
Вкладка должна отображаться, если с вашего браузера запрос <exportTableBaseUrl>/<cluster-name>/api/ready вернёт статус 200 OK. Если этого не происходит, обратите внимание на настройки: UI Helm Chart, Excel Helm Chart и Ingress.
Детальная конфигурация
Ниже приведены параметры, которые может потребоваться переопределить:
replicaCount: 1
settings:
cors:
# Разрешенные имена хостов, например yt.example.com. Проверяется точное совпадение: origin.Host == "yt.example.com"
allowed_hosts: []
# Разрешенные суффиксы имен хостов, например .yt.example.com. Проверяется через HasSuffix(origin.Host, ".yt.example.com")
allowed_host_suffixes: []
# Список кластеров с настройками, специфичными для кластера.
clusters:
- proxy: http-proxies.default.svc.cluster.local
# Определяет псевдоним прокси, используемый в пути API:
# <http_addr>/<api_path_prefix>/<api_endpoint_name>/api/
# По умолчанию: совпадает с proxy.
api_endpoint_name: minisaurus
# Имя cookie запроса, которое сервис пересылает в YTsaurus.
# YTsaurus-прокси использует этот cookie для авторизации запросов.
auth_cookie_name: "YTCypressCookie"
sso_cookie_name: "yt_oauth_access_token"
exporter:
# Максимальное время обработки запроса.
http_handler_timeout: 2m
# Максимальный размер входного файла.
max_excel_file_size_bytes: 104857600 # (100 МБ)
# Определяет глобальный префикс пути, используемый в пути API:
# <http_addr>/<api_path_prefix>/<api_endpoint_name>/api/
# По умолчанию: пусто.
api_path_prefix: ""
uploader:
# Максимальное время обработки запроса.
http_handler_timeout: 2m
# Максимальный размер входного файла.
max_excel_file_size_bytes: 104857600 # (100 МБ)
# Определяет глобальный префикс пути, используемый в пути API:
# <http_addr>/<api_path_prefix>/<api_endpoint_name>/api/
# По умолчанию: пусто.
api_path_prefix: ""
Все параметры можно посмотреть в исходном коде.