Модуль managed-trino управляет инстансами Trino в Deckhouse Platform (DP). Trino — это быстрый распределённый SQL-движок с открытым исходным кодом, который создан для аналитики больших данных. Модуль предоставляет:

  • Автоматическое развёртывание — создаёт инстанс Trino при помощи простой YAML-конфигурации;
  • Standalone — поддерживает установку одиночного инстанса;
  • Внешние подключения — поддерживает работу с хранилищем метаданных Hive Metastore, а также с S3-совместимым хранилищем;
  • Управление конфигурацией — отдельный ресурс TrinoClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
  • Статус — отображает текущее состояние развёрнутого инстанса Trino.

Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля managed-trino на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:

Архитектура модуля managed-trino

Компоненты модуля

Модуль состоит из следующих компонентов:

  1. Managed-trino-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:

    • согласование состояния кастомных ресурсов Trino во всех пользовательских неймспейсах. Кастомные ресурсы Trino и TrinoClass определяют настройки инстанса Trino;

    • создание и управление ресурсами Deployment, Service, Secret и ConfigMap, относящимися к инстансу Trino;

    • валидация и мутация кастомных ресурсов Trino с помощью механизмов Validating/Mutating Admission Controllers.

  2. D8ms-trn-<INSTANCE_NAME> (Deployment) — компонент, состоящий из одного контейнера trino и отвечающий за запуск и работу инстанса Trino. Создаётся компонентом managed-trino-operator для каждого кастомного ресурса Trino.

Взаимодействия модуля

Модуль взаимодействует со следующими компонентами:

  1. Инстанс Hive Metastore — обрабатывает данные в хранилище метаданных.

  2. Объектное хранилище — обрабатывает хранящиеся данные.

  3. Kube-apiserver:

    • управляет кастомными ресурсами Trino;
    • следит за кастомными ресурсами TrinoClass;
    • управляет ресурсами Deployment, Service, Secret и ConfigMap.

С модулем взаимодействуют следующие внешние компоненты:

  1. Kube-apiserver — валидирует и мутирует кастомные ресурсы Trino.

  2. Пользовательские приложения — отправляют запросы к инстансу Trino.

Дополнительные ресурсы