Стадия жизненного цикла модуляPreview

У модуля есть требования для установки

Starrocks

Ресурс Starrocks описывает инстанс аналитической СУБД StarRocks в пользовательском неймспейсе. StarRocks — OLAP-база для аналитики в реальном времени: принимает SQL-запросы, загружает данные через задания загрузки (в том числе Stream Load) и хранит колоночные данные на постоянных томах, управляемых оператором.

Каждый ресурс Starrocks должен ссылаться на StarrocksClass, который задаёт допустимые размеры CPU/RAM и список параметров конфигурации, доступных для переопределения.

Базовый пример

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: Starrocks
metadata:
  name: analytics
  namespace: my-team
spec:
  starrocksClassName: default
  tls:
    mode: CertManager
    certManager:
      clusterIssuerName: selfsigned
  configuration:
    catalogTrashExpireSecond: 7200
  instance:
    memory:
      size: 4Gi
    cpu:
      cores: 2
      coreFraction: "50%"
    persistentVolumeClaim:
      size: 120Gi

Поля spec

starrocksClassName

Имя StarrocksClass для валидации политик размера ресурсов и значений конфигурации по умолчанию. Обязательное поле.

instance

Вычислительные ресурсы и хранилище кластера StarRocks:

  • memory.size — RAM для подов FE/BE. Для аналитических нагрузок обычно требуются гигабайты; минимум определяется связанным StarrocksClass.
  • cpu.cores и cpu.coreFraction — лимиты CPU и доля запроса (request).
  • persistentVolumeClaim.size — дисковое пространство для данных StarRocks. Уменьшить размер после создания нельзя.
  • persistentVolumeClaim.storageClassName (опционально) — класс хранения для томов данных.

configuration

Переопределяемые пользователем настройки StarRocks, разрешённые в связанном StarrocksClass (spec.overridableConfiguration). В белом списке сейчас только ключи с обновлением без перезапуска:

  • catalogTrashExpireSecond — время хранения удалённых объектов каталога на FE перед очисткой (catalog_trash_expire_second; обновление без перезапуска через ADMIN SET FRONTEND CONFIG);
  • streamingLoadMaxMb — максимальный размер Stream Load в МБ (streaming_load_max_mb; обновление без перезапуска через BE HTTP update_config).

Значения класса по умолчанию, например enableUdf и loadProcessMaxMemoryLimitPercent в Starrocks.spec.configuration не входят. Их можно задать только на уровне класса, а изменение требует нового класса или перезапуска.

TLS

Опциональный TLS для HTTP-прокси FE (HTTPS, порт 8443). Порт MySQL-запросов (9030) TLS не использует.

  • Без tls — TLS выключен (только FE HTTP-прокси).
  • mode: CertManager (по умолчанию, если задан tls) — сертификат через cert-manager; укажите certManager.clusterIssuerName.
  • mode: CustomCertificate — ссылки на существующие TLS-секреты (customCertificate.serverTLSSecret / serverCASecret).

При включённом TLS агент записывает состояние сертификата в status.certificate.server (ttl — целые дни до истечения, failed — если Secret или смонтированный сертификат недоступны).

Клиенты MySQL к порту 9030 должны отключать TLS, например:

mysql -h<HOST> -P9030 -uroot -p'<PASSWORD>' --ssl=false

Где <HOST> — адрес FE, а <PASSWORD> — пароль пользователя root.

Учётные данные root

Оператор создаёт Secret <PREFIX>-<NAME>-root-creds с ключом password (алфавитно-цифровой, генерируется автоматически). Контейнер StarRocks и сайдкар агента получают его как STARROCKS_ROOT_PASSWORD. Здесь <PREFIX> — префикс имени ресурсов оператора, а <NAME> — имя ресурса Starrocks.

Условия статуса

Оператор выставляет условия Available, ConfigurationValid, LastValidConfigurationApplied и ScaledToLastValidConfiguration. При TLS также смотрите status.certificate.server. Проверка:

d8 k get starrocks -n my-team
d8 k describe starrocks analytics -n my-team
d8 k get starrocks analytics -n my-team -o jsonpath='{.status.certificate}' ; echo

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

Минимальный инстанс

Наименьший размер, допустимый встроенным классом default (2 cores / 4Gi):

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: Starrocks
metadata:
  name: minimal
  namespace: my-team
spec:
  starrocksClassName: default
  instance:
    memory:
      size: 4Gi
    cpu:
      cores: 2
      coreFraction: "50%"
    persistentVolumeClaim:
      size: 10Gi

Production-инстанс

Для более тяжёлых аналитических нагрузок и больших объёмов данных:

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: Starrocks
metadata:
  name: warehouse
  namespace: analytics
spec:
  starrocksClassName: production
  configuration:
    catalogTrashExpireSecond: 86400
    streamingLoadMaxMb: 102400
  instance:
    memory:
      size: 16Gi
    cpu:
      cores: 8
      coreFraction: "100%"
    persistentVolumeClaim:
      size: 500Gi
      storageClassName: fast-ssd