Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
Trino
Namespaced ресурс, который позволяет создавать конечную конфигурацию и является точкой правды состояния для конкретного развернутого сервиса trino.
TrinoClassName
Имя класса, с которым будет связан конкретный ресурс.
Без созданного TrinoClass разворачивание сервиса невозможно.
spec:
trinoClassName: defaultInstance
Секция, которая описывает ресурсы создаваемого сервиса.
Должна пройти валидацию по 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: 9083In 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 - имя
Secretc необходимыми ключами авторизации (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
---Примеры использования
Базовое использование
- Создайте namespace с именем
trino. - Перед применением конфигурации необходимо создать
Secretsтакого типа:
kubectl apply -f hms-secret.yaml
kubectl apply -f s3-secret.yamlapiVersion: 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- Создайте ресурс
Trino
kubectl apply -f managed-services_v1alpha1_trino.yaml -n trinoapiVersion: 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
- Подождите, пока кластер будет создан все conditions будет в
True:
kubectl get trino trino-sample -n trino -o wide -w- Используйте
curlили любой JDBC-совместимый клиент для подключения к сервисуd8ms-trn-trino-sampleon port8080.
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'