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

CassandraClass

Cluster Wide Ресурс CassandraClass позволяет ограничить создание невалидных конфигураций и предопределить некоторые значения. Каждый ресурс Cassandra обязательно должен быть связан с существующим ресурсом CassandraClass. Перед развертыванием сервиса, вся конфигурация будет проверена о соответствующий CassandraClass.

Sizing Policies

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

spec:
  sizingPolicies:
    - cores:
        min: 1
        max: 4
      memory:
        min: 100Mi
        max: 1Gi
        step: 1Mi
      coreFraction: [10%, 30%, 50%]
    - cores:
        min: 5
        max: 10
      memory:
        min: 500Mi
        max: 2Gi
      coreFraction: [50%, 70%, 100%]

Validation Rules

В качестве синтаксиса используется CEL (Common Expression Language) для создания гибких механизмов валидаций. Мы предоставляем набор предопределенных переменных, которые можно использовать в rule:

  • instance.memory.size int
  • instance.cpu.cores int
spec:
  validations:
    - message: "CPU cores must be between 1 and 64"
      rule: "instance.cpu.cores >= 1 && instance.cpu.cores <= 64"

Affinity

Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.

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

Tolerations

Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.

spec:
  tolerations:
  - key: primary-role
    operator: Equal
    value: cas
    effect: NoSchedule

Node Selector

Стандартный механизм Kubernetes для управления планированием разворачиваемых подов.

  nodeSelector:
    "node.deckhouse.io/group": "cas"

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

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

apiVersion: managed-services.deckhouse.io/v1alpha1
kind: CassandraClass
metadata:
  name: default
spec:
  sizingPolicies:
    - cores:
        min: 1
        max: 2
      memory:
        min: 2Gi
        max: 4Gi
        step: 512Mi
      coreFractions:
        - "25%"
        - "50%"
        - "75%"
        - "100%"
  validations:
    - message: "CPU cores must be between 1 and 8"
      rule: "instance.cpu.cores >= 1 && instance.cpu.cores <= 16"
    - message: "Memory must be between 2 and 64"
      rule: "instance.memory.size >= 2 && instance.memory.size <= 64"