Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки

Trino

Namespaced ресурс, который позволяет создавать конечную конфигурацию и является точкой правды состояния для конкретного развернутого сервиса trino.

TrinoClassName

Имя класса, с которым будет связан конкретный ресурс.
Без созданного TrinoClass разворачивание сервиса невозможно.

spec:
  trinoClassName: default

Instance

Секция, которая описывает ресурсы создаваемого сервиса.
Должна пройти валидацию по sizingPolicy соответствующего класса:

spec:
  instance:
    memory:
      size: 2Gi
    cpu:
      cores: 2
      coreFraction: 50%

Поддерживаемые версии Trino

Единственная поддерживаемая версия Trino 480

Наши образы для запуска Trino-контейнеров основаны на distroless-архитектуре.

External Connections

Для работы Trino необходимо настроить внешние подключения к Мета Хранилищу и Объектному Хранилищу, конфигурация параметров подключения доступна через externalConnections ресурса Trino.

Meta Store Connection

Trino поддерживает работу с Hive MetaStore как внешнего Мета Хранилища, параметры могут быть указаны в двух форматах.

Secret Mode (Рекомендовано)

metaStore:
  type: HMS
  hms:
    mode: Secret
    secretName: hms-secret

В этом режиме:

  • HMS учетные данные хранятся в Kubernetes Secret
  • secretName должно соответствовать существующему имени Secret в Namespace
  • Обеспечивает безопасное хранение учетных данных, предотвращая возможные утечки.

Plain Text Mode

  metaStore:
    type: HMS
    hms:
      mode: Plain
      hosts: ["my-hms.hms"]
      port: 9083

In this mode:

  • hosts - список Hive MetaStore адресов
  • port - порт для подключения (default 5432)
  • username опциональный параметр если в HMS используется impersonation режим

Object Store Configuration (S3 Compatible)

Для работы в связке с Hive Metastore необходимо подключение к объектному хранилищу S3:

objectStore:
  type: S3
  s3:
    endpoint: minio.minio:9000
    region: ru-east-1
    usePathStyle: true
    credentials:
      mode: Plain 
      accessKey: access-key-here
      secretKey: secret-key-here

Параметры конфигурации:

  • endpoint - адрес сервиса S3
  • region - регион в AWS специфичном формате
  • usePathStyle - включает path-style адреса URL

Режимы конфигурации учетных данных:

Доступно два режима конфигурации:

  • Plain Text - прямое указание ключей в ресурсе Trino
  • Secret - имя Secret c необходимыми ключами авторизации (recommended)

Cтатус

Статус сервиса Managed Trino отражается в ресурсе Trino. Структура Conditions однозначно показывает текущий статус сервиса

Значимые типы:

  • LastValidConfigurationApplied - Агрегирующий тип, который показывает, была ли применена успешно последняя валидная конфигурация хотя бы раз.
  • ConfigurationValid - показывает прошла ли что конфигурация все валидации связанного TrinoClass.
  • ScaledToLastValidConfiguration - показывает, соответствует ли количество работающих реплик заданной конфигурации.
  • Available - показывает, работает ли больше половины запрошенных реплик сервиса и они принимают подключения.
conditions:
  - lastTransitionTime: '2025-09-22T23:20:36Z'
    observedGeneration: 2
    status: 'True'
    type: Available
  - lastTransitionTime: '2025-09-22T14:38:04Z'
    observedGeneration: 2
    status: 'True'
    type: ConfigurationValid
  - lastTransitionTime: '2025-09-22T14:38:47Z'
    observedGeneration: 2
    status: 'True'
    type: LastValidConfigurationApplied
  - lastTransitionTime: '2025-09-22T23:20:36Z'
    observedGeneration: 2
    status: 'True'
    type: ScaledToLastValidConfiguration

Статус False говорит о проблеме на том или ином этапе либо незавершенной синхронизации состояния.
Для такого состояния будет указан reason и message с описанием.

---
- lastTransitionTime: '2025-09-23T14:53:33Z'
  message: Syncing
  observedGeneration: 1
  reason: Syncing
  status: 'False'
  type: LastValidConfigurationApplied
- lastTransitionTime: '2025-09-23T14:54:58Z'
  message: Not all the instances are running still waiting for 1 to become ready
  observedGeneration: 1
  reason: ScalingInProgress
  status: 'False'
  type: ScaledToLastValidConfiguration
---

Примеры использования

Базовое использование

  1. Создайте namespace с именем trino.
  2. Перед применением конфигурации необходимо создать Secrets такого типа:
kubectl apply -f hms-secret.yaml
kubectl apply -f s3-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: hms-secret
  namespace: trino
type: Opaque
stringData:
  uri: "thrift://hms-primary.hive-metastore.svc.cluster.local:9083"
  username: ""   # пустая строка, если impersonation не нужен
apiVersion: v1
kind: Secret
metadata:
  name: s3-secret
type: Opaque
stringData:
  accessKey: access-key-here
  secretKey: secret-key-here
  1. Создайте ресурс Trino
kubectl apply -f managed-services_v1alpha1_trino.yaml -n trino
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: Trino
metadata:
  name: trino-sample
  namespace: trino
spec:
  trinoClassName: default
  instance:
    memory:
      size: "2Gi"
    cpu:
      cores: 2
      coreFraction: "50%"
  externalConnections:
    metaStore:
      type: "HMS"
      hms:
        mode: Secret
        hosts: ["hms-primary.hive-metastore.svc.cluster.local"]
        port: 9083
    objectStore:
      type: S3
      s3:
        endpoint:  "https://s3.com"
        region: ru
        usePathStyle: true
        credentials:
          mode: Secret
          secretName: s3-secret
      
  1. Подождите, пока кластер будет создан все conditions будет в True:
  kubectl get trino trino-sample -n trino -o wide -w
  1. Используйте curl или любой JDBC-совместимый клиент для подключения к сервису d8ms-trn-trino-sample on port 8080.
curl -s -X POST http://d8ms-trn-trino-sample:8080/v1/statement \
  -H "X-Trino-User: admin" \
  -H "Content-Type: application/json" \
  -d 'SELECT 1 AS result'