Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
HiveMetastore
Именованный ресурс, который позволяет создавать конечную конфигурацию и служит источником истины для состояния определенного развернутого сервиса hivemetastore.
HiveMetastoreClassName
Имя класса, которое будет связано с определенным ресурсом.
Без созданного HiveMetastore невозможно развертывание сервиса.
spec:
valkeyClassName: defaultInstance
Раздел, описывающий ресурсы создаваемого сервиса.
Должен пройти проверку в соответствии с sizingPolicy соответствующего класса:
instance:
memory:
size: "4Gi"
cpu:
cores: 2
coreFraction: "25%"Поддерживаемые версии Hive Metastore
Текущая поддерживаемая версия Hive Metastore - 4.2.0
Наши образы для запуска контейнеров Hive Metastore основаны на архитектуре distroless.
Внешние подключения
Hive Metastore может быть настроен для подключения к различным внешним сервисам, таким как базы данных и объектные хранилища, через конфигурацию externalConnections в YAML-спецификации.
Подключение к базе данных
Metastore поддерживает PostgreSQL в качестве внешнего сервера базы данных с двумя режимами управления учетными данными.
Секретный режим (Рекомендуется)
database:
type: Postgres
postgres:
mode: Secret
secretName: pg-credsВ этом режиме:
- Учетные данные базы данных хранятся в Kubernetes Secret
- Имя secretName должно ссылаться на существующий Secret, содержащий учетные данные базы данных
- Это обеспечивает безопасное управление учетными данными и предотвращает утечку секретов
Режим простого текста
database:
type: Postgres
postgres:
mode: Plain
host: postgresql.postgresql
port: 5432
database: my-database
password: plain-text-password
username: my-userВ этом режиме:
- host - указывает адрес сервера PostgreSQL
- port - порт базы данных (по умолчанию 5432)
- database - имя базы данных для таблиц metastore
- username и password в текстовом формате
Предупреждение безопасности: Режим простого текста раскрывает конфиденциальные учетные данные в файле конфигурации. Используйте только при необходимости и обеспечьте надлежащее управление доступом.
Конфигурация объектного хранилища (совместимо с S3)
Hive Metastore может хранить данные внешних таблиц в совместимом с S3 хранилище объектов:
objectStore:
type: S3
s3:
endpoint: minio.minio:9000
bucket: data-lake
region: ru-east-1
prefix: directory
usePathStyle: true
credentials:
mode: Plain
accessKey: access-key-here
secretKey: secret-key-hereПараметры конфигурации:
- endpoint - адрес службы S3
- bucket - целевое имя корзины для хранения данных
- region - указанный формат региона AWS
- prefix - префикс пути каталога внутри корзины
- usePathStyle - включает адресацию URL в стиле пути
Режимы учетных данных:
Два поддерживаемых метода аутентификации:
- Простой текст - Прямой ввод ключ/значение
- Secret - Ссылки на внешний ресурс Secret (рекомендуется)
Статус
Статус сервиса Managed Hive Metastore отражается в ресурсе Hive Metastore.
Структура Conditions ясно показывает текущий статус сервиса
Значимые типы:
LastValidConfigurationApplied- Агрегирующий тип, который показывает, была ли последняя действительная конфигурация успешно применена хотя бы один раз.ConfigurationValid- показывает, прошла ли конфигурация все проверки ассоциированногоHiveMetastoreClass.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
---Примеры использования
Базовое использование (Secret Mode)
- Создайте пространство имен под названием
hivemetastore. - Создайте ресурс
Hivemetastore
kubectl apply -f managed-services_v1alpha1_hivemetastore_with_secret_mode.yaml -n hivemetastoreapiVersion: managed-services.deckhouse.io/v1alpha1
kind: HiveMetastore
metadata:
name: hivemetastore-sample
spec:
hivemetastoreClassName: default
externalConnections:
database:
type: Postgres
postgres:
mode: Secret
secretName: pg-creds
objectStore:
type: S3
s3:
endpoint: minio.minio:9000
bucket: data-lake
region: ru-east-1
prefix: directory
usePathStyle: true
credentials:
mode: Plain
secretName: s3-creds
instance:
memory:
size: "4Gi"
cpu:
cores: 2
coreFraction: "25%"- Дождитесь создания экземпляра и установки всех условий в значение
True:
kubectl get hivemetastore hivemetastore-sample -n hivemetastore -o wide -wРежимы Plain и Secret
HiveMetastore поддерживает два режима обработки конфиденциальной информации, такой как учетные данные базы данных и ключи доступа к объектному хранилищу:
Режим Plain
В режиме Plain конфиденциальные данные указываются непосредственно в конфигурации:
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: HiveMetastore
metadata:
name: hivemetastore-sample
spec:
hivemetastoreClassName: default
externalConnections:
database:
type: Postgres
postgres:
mode: Plain
host: postgresql.postgresql
port: 5432
database: my-database
password: plain-text-password
username: my-user
objectStore:
type: S3
s3:
endpoint: minio.minio:9000
bucket: data-lake
region: ru-east-1
prefix: directory
usePathStyle: true
credentials:
mode: Plain
accessKey: access-key-here
secretKey: secret-key-here
instance:
memory:
size: "4Gi"
cpu:
cores: 2
coreFraction: "25%"Этот режим удобен для разработки и тестирования, но его следует использовать осторожно в продакшене из-за соображений безопасности.
Режим Secret
В режиме Secret конфиденциальная информация хранится в Kubernetes Secret:
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: HiveMetastore
metadata:
name: hivemetastore-sample
spec:
hivemetastoreClassName: default
externalConnections:
database:
type: Postgres
postgres:
mode: Secret
secretName: pg-creds
objectStore:
type: S3
s3:
endpoint: minio.minio:9000
bucket: data-lake
region: ru-east-1
prefix: directory
usePathStyle: true
credentials:
mode: Secret
secretName: s3-creds
instance:
memory:
size: "4Gi"
cpu:
cores: 2
coreFraction: "25%"Перед применением этой конфигурации необходимо создать соответствующие Secret:
Для учетных данных базы данных:
apiVersion: v1
kind: Secret
metadata:
name: pg-creds
type: Opaque
stringData:
host: postgresql.postgresql
port: "5432"
database: my-database
username: my-user
password: plain-text-passwordДля учетных данных объектного хранилища:
apiVersion: v1
kind: Secret
metadata:
name: s3-creds
type: Opaque
stringData:
accessKey: access-key-here
secretKey: secret-key-here