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

StarrocksClass

Cluster-wide ресурс StarrocksClass задаёт политики для инстансов аналитической СУБД StarRocks: допустимые размеры ресурсов, дефолтную конфигурацию FE/BE и правила валидации. Каждый ресурс Starrocks обязательно должен быть связан с существующим StarrocksClass. Перед развёртыванием сервиса вся конфигурация проверяется по соответствующему классу.

StarrocksClass неизменяем — для смены политик создайте новый класс.

Sizing Policies

Структура определяет допустимые диапазоны CPU и памяти для связанных инстансов Starrocks. Это помогает равномерно распределять ресурсы на нодах кластера и подбирать размер под OLAP-нагрузку. Определяющий фактор выбора политики — попадание в интервал cores; затем проверяются остальные поля политики.

spec:
  sizingPolicies:
    - cores:
        min: 2
        max: 4
      memory:
        min: 4Gi
        max: 8Gi
        step: 1Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"
    - cores:
        min: 5
        max: 8
      memory:
        min: 8Gi
        max: 16Gi
        step: 1Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"
    - cores:
        min: 9
        max: 16
      memory:
        min: 16Gi
        max: 32Gi
        step: 2Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"

Validation Rules

Для гибкой валидации используется CEL (Common Expression Language). Предопределённые переменные для rule:

  • configuration.catalogTrashExpireSecond
  • configuration.streamingLoadMaxMb
  • instance.memory.size
  • instance.cpu.cores
spec:
  validations:
    - message: "CPU cores must be between 2 and 16"
      rule: "instance.cpu.cores >= 2 && instance.cpu.cores <= 16"
    - message: "Memory size must be at least 4Gi"
      rule: "instance.memory.size >= 4294967296"
    - message: "catalogTrashExpireSecond must be between 600 and 604800 seconds"
      rule: "configuration.catalogTrashExpireSecond >= 600 && configuration.catalogTrashExpireSecond <= 604800"

Overridable Configuration

Белый список параметров конфигурации, которые пользователь может переопределить в ресурсе Starrocks. Здесь допускаются только hot-reloadable ключи; enum в CRD отклоняет остальные. Параметры только для администратора / с рестартом пода указываются исключительно в spec.configuration.

Допустимо в overridableConfiguration Как применяется Примечание
catalogTrashExpireSecond FE: ADMIN SET FRONTEND CONFIG Live-обновление агентом
streamingLoadMaxMb BE: POST /api/update_config Live-обновление агентом (ADMIN SET BACKEND не поддерживается)

Нельзя включать в overridableConfiguration (только дефолты класса; смена — новый класс и рестарт пода):

  • enableUdf
  • loadProcessMaxMemoryLimitPercent (immutable в runtime BE)
spec:
  overridableConfiguration:
    - catalogTrashExpireSecond
    - streamingLoadMaxMb

Configuration

Дефолтные настройки StarRocks FE/BE для всех инстансов, связанных с этим классом. Параметры из overridableConfiguration могут быть переопределены на уровне инстанса.

Параметр Конфиг StarRocks Описание
catalogTrashExpireSecond catalog_trash_expire_second Время хранения «мусора» каталога на FE перед очисткой (секунды)
enableUdf enable_udf Включение пользовательских функций (UDF)
loadProcessMaxMemoryLimitPercent load_process_max_memory_limit_percent Макс. доля памяти BE для процессов загрузки
streamingLoadMaxMb streaming_load_max_mb Макс. размер Stream Load запроса (МБ)
spec:
  configuration:
    catalogTrashExpireSecond: 3600
    enableUdf: true
    loadProcessMaxMemoryLimitPercent: 50
    streamingLoadMaxMb: 204800

Affinity

Стандартный механизм Kubernetes для размещения подов StarRocks на выделенных нодах (например, с быстрым локальным диском или большим объёмом RAM).

spec:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: "node.deckhouse.io/group"
          operator: "In"
          values:
          - "analytics"

Tolerations

spec:
  tolerations:
  - key: workload-type
    operator: Equal
    value: analytics
    effect: NoSchedule

Node Selector

spec:
  nodeSelector:
    "node.deckhouse.io/group": "analytics"

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

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

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: StarrocksClass
metadata:
  labels:
    app.kubernetes.io/name: managed-starrocks-operator
  name: production
spec:
  overridableConfiguration:
    - catalogTrashExpireSecond
    - streamingLoadMaxMb
  configuration:
    catalogTrashExpireSecond: 3600
    enableUdf: true
    loadProcessMaxMemoryLimitPercent: 50
    streamingLoadMaxMb: 204800
  validations:
    - message: "CPU cores must be between 2 and 16"
      rule: "instance.cpu.cores >= 2 && instance.cpu.cores <= 16"
    - message: "Memory size must be between 4Gi and 32Gi"
      rule: "instance.memory.size >= 4294967296 && instance.memory.size <= 34359738368"
  sizingPolicies:
    - cores:
        min: 2
        max: 4
      memory:
        min: 4Gi
        max: 8Gi
        step: 1Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"
    - cores:
        min: 5
        max: 8
      memory:
        min: 8Gi
        max: 16Gi
        step: 1Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"
    - cores:
        min: 9
        max: 16
      memory:
        min: 16Gi
        max: 32Gi
        step: 2Gi
      coreFractions:
        - "50%"
        - "75%"
        - "100%"