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

Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

Postgres

Scope: Namespaced
Version: v1alpha1

Схема API-ресурса Postgres.
  • apiVersion
    строка

    Определяет версию API, к которой относится данный объект.

    Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.

    Подробнее с обязательными полями в ресурсах можно ознакомиться в документации Kubernetes.

  • kind
    строка

    Строковое значение, определяющее тип ресурса, к которому относится данный объект.

    Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.

    Поле не подлежит изменению. Указывается в формате CamelCase.

    Подробнее с типами ресурсов можно ознакомиться в документации Kubernetes.

  • metadata
    объект
  • spec
    объект
    Определяет желаемое состояние ресурса Postgres.
    • spec.cluster
      объект
      Настройки кластера, включая топологию размещения и режим репликации.
      • spec.cluster.replication
        строка

        Определяет состав и тип реплик в кластере.

        Возможные значения:

        • Availability — master-узел + 1 асинхронная реплика;
        • Consistency — master-узел + 1 синхронная реплика;
        • ConsistencyAndAvailability — master-узел + 1 синхронная реплика + 1 асинхронная реплика.

        По умолчанию: ConsistencyAndAvailability

        Допустимые значения: Availability, Consistency, ConsistencyAndAvailability

      • spec.cluster.topology
        строка

        Определяет правила разворачивания кластера.

        Возможные значения:

        • Zonal — кластер размещается в одной зоне, если это возможно;
        • TransZonal — кластер размещается в разных зонах, если это возможно;
        • Ignored — используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.

        Пример:

        topology: Ignored
        
    • spec.configuration
      объект
      Параметры конфигурации PostgreSQL.
      • spec.configuration.maxConnections
        целочисленный

        Определяет максимальное количество одновременных подключений к серверу базы данных.

        Этот параметр можно установить только при запуске сервера.

        Размеры некоторых ресурсов основываются на значении max_connections. Увеличение этого параметра повышает объём выделяемых ресурсов, включая разделяемую память.

        Пример:

        maxConnections: 100
        
      • spec.configuration.sharedBuffers
        строка или число

        Устанавливает количество памяти, которое сервер базы данных использует для буферов разделяемой памяти.

        Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.

        Этот параметр можно установить только при запуске сервера.

        Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объема памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для shared_buffers редко даёт дополнительный прирост производительности.

        При увеличении shared_buffers обычно требуется также увеличить max_wal_size, чтобы распределить процесс записи больших объемов новых или измененных данных на более длительный период времени.

        В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        sharedBuffers: 250Mi
        
      • spec.configuration.walKeepSize
        строка или число

        Определяет минимальный размер прошлых файлов WAL, хранящихся в каталоге pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.

        Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на wal_keep_size МБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.

        Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.

        Если wal_keep_size равен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        walKeepSize: 512Mi
        
      • spec.configuration.workMem
        строка или число

        Устанавливает базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.

        Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.

        Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения work_mem.

        Операции сортировки используются для ORDER BY, DISTINCT и слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросов IN.

        Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения work_mem на hash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количество work_mem.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        workMem: 4Mi
        
    • spec.dataSource
      объект
      Источник данных для инициализации PostgreSQL из PostgresSnapshot или других источников данных.
      • spec.dataSource.objectRef
        объект

        Обязательный параметр

        Ссылка на объект, содержащий исходные данные.
        • spec.dataSource.objectRef.kind
          строка

          Обязательный параметр

          Тип ресурса (например, PostgresSnapshot).
        • spec.dataSource.objectRef.name
          строка

          Обязательный параметр

          Имя ресурса.
    • spec.databases
      массив объектов
      Список логических баз данных PostgreSQL.
      • spec.databases.name
        строка
        Имя логической базы данных, которая будет создана.

        Пример:

        name: mydb
        
    • spec.instance
      объект

      Обязательный параметр

      Требования к ресурсам каждого создаваемого пода.

      Подробнее с управлением ресурсами для подов и контейнеров можно ознакомиться в документации Kubernetes.

      • spec.instance.cpu
        объект

        Обязательный параметр

        • spec.instance.cpu.coreFraction
          целочисленный

          Обязательный параметр

          Множитель для расчёта requests CPU относительно limits.

          Пример:

          coreFraction: 50
          
        • spec.instance.cpu.cores
          целочисленный

          Обязательный параметр

          Количество ядер CPU.
      • spec.instance.memory
        объект

        Обязательный параметр

        • spec.instance.memory.size
          строка или число

          Обязательный параметр

          Объём памяти.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          size: 1Gi
          
      • spec.instance.persistentVolumeClaim
        объект

        Обязательный параметр

        • spec.instance.persistentVolumeClaim.size
          строка

          Обязательный параметр

          Размер хранилища.

          По умолчанию: 1Gi

          Пример:

          size: 1Gi
          
        • spec.instance.persistentVolumeClaim.storageClassName
          строка

          Имя StorageClass, используемого для хранения данных PostgreSQL.

          Если значение не указано, будет использован StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.

          Пример:

          storageClassName: local-path
          
    • spec.observability
      строка
      Monitoring mode, could be turned off,

      По умолчанию: Enabled

      Допустимые значения: Enabled, Disabled, EnabledWithoutAlerts

    • spec.postgresClassName
      строка

      Обязательный параметр

      Имя ресурса PostgresClass, используемого для валидации настроек.

      По умолчанию: default

      Пример:

      postgresClassName: small
      
    • spec.tls
      объект
      Настройки TLS для сервера PostgreSQL.
      • spec.tls.certManager
        объект

        Настройки cert-manager для управления TLS-сертификатами.

        Доступны только при mode: CertManager.

        • spec.tls.certManager.clusterIssuerName
          строка

          Имя ресурса ClusterIssuer для cert-manager.

          Должно быть указано только одно поле: clusterIssuerName или issuerName.

        • spec.tls.certManager.issuerName
          строка

          Имя ресурса Issuer для cert-manager.

          Должно быть указано только одно поле: clusterIssuerName или issuerName.

      • spec.tls.customCertificate
        объект

        Настройки использования пользовательских TLS-сертификатов.

        Доступны только при mode: CustomCertificate.

        • spec.tls.customCertificate.serverCASecret
          строка

          Обязательный параметр

          Имя Secret, содержащего CA-сертификат для TLS-сервера PostgreSQL.
        • spec.tls.customCertificate.serverTLSSecret
          строка

          Обязательный параметр

          Имя Secret, содержащего TLS-сертификат для сервера PostgreSQL.
      • spec.tls.mode
        строка

        Режим работы с TLS-сертификатами.

        Возможные значения:

        • CertManager — управление сертификатами с помощью cert-manager (используется по умолчанию);
        • CustomCertificate — использование пользовательских сертификатов из Secret;
        • K8s — выпуск сертификатов с помощью Kubernetes CA.

        По умолчанию: CertManager

        Допустимые значения: CertManager, CustomCertificate, K8s

    • spec.type
      строка
      Тип кластера PostgreSQL.

      По умолчанию: Cluster

      Допустимые значения: Cluster, Standalone

    • spec.users
      массив объектов
      Список внутренних пользователей PostgreSQL.
      • spec.users.hashedPassword
        строка

        Хешированный пароль для роли PostgreSQL.

        Поддерживаемые форматы:

        • MD5;
        • SCRAM-SHA-256.

        Если вы укажете здесь обычный пароль, он будет автоматически заменен на хеш в формате MD5 или SCRAM-SHA-256.

        Пример:

        hashedPassword: SCRAM-SHA-256$4096:9bdAkxfJ7tMWaVlcOSyKLc8uUbvVi+KBBYXWCE14maM=$g13sNwuKH0VsQnh43WqlQj8KPwS/2smQL1m0JzJkowI=:rImReuq6U7mD4KoJGIDelxsFVlXoB1stP8olJZr5Gl4=
        
      • spec.users.name
        строка
        Имя пользователя, который будет создан в PostgreSQL.

        Пример:

        name: myuser
        
      • spec.users.password
        строка

        Пароль для роли PostgreSQL в открытом виде.

        При указании автоматически преобразуется в hashedPassword, после чего удаляется из .spec.

        Если одновременно указаны password и hashedPassword, будет использоваться password. Это можно использовать для смены пароля.

        Если вы хотите хранить пароль в открытом виде в секрете Kubernetes, используйте параметр storeCredsToSecret.

        Если указано значение storeCredsToSecret, а пароль не указан, будет сгенерирован случайный пароль.

        Пример:

        password: '123'
        
      • spec.users.role
        строка

        Предопределённая роль, в которую будет добавлен созданный пользователь.

        Поддерживаемые значения:

        • ro (только чтение);
        • rw (чтение и запись);
        • monitoring (для сбора метрик).

        Допустимые значения: ro, rw, monitoring

        Пример:

        role: rw
        
      • spec.users.storeCredsToSecret
        строка

        Имя Kubernetes Secret, в который оператор сохранит пароль в открытом виде.

        Секрет будет создан в том же неймспейсе, где расположен ресурс. Будут сформированы строки подключения ко всем созданным базам данных.

        Пример:

        storeCredsToSecret: myuser-secret
        
  • status
    объект
    Описывает наблюдаемое состояние ресурса Postgres.
    • status.conditions
      массив объектов
      Список условий, отражающих состояние ключевых этапов работы сервиса.
      • status.conditions.lastTransitionTime
        строка
      • status.conditions.message
        строка
        A human readable message indicating details about the transition.
      • status.conditions.observedGeneration
        целочисленный
        Observed generation
      • status.conditions.reason
        строка
        The reason for the condition’s last transition.
      • status.conditions.status
        строка
        Status of the condition, one of True, False, Unknown.
      • status.conditions.type
        строка
        Type of condition.
    • status.configVersion
      строка
      Версия конфигурации, которая была провалидирована.
    • status.lastValidConfiguration
      объект
      Последняя конфигурация, успешно прошедшая валидацию.
      • status.lastValidConfiguration.cluster
        объект
        • status.lastValidConfiguration.cluster.replication
          строка

          Описывает состав и тип реплик в кластере.

          Возможные значения:

          • Availability — master-узел + 1 асинхронная реплика;
          • Consistency — master-узел + 1 синхронная реплика;
          • ConsistencyAndAvailability — master-узел + 1 синхронная реплика + 1 асинхронная реплика.

          По умолчанию: ConsistencyAndAvailability

          Допустимые значения: Availability, Consistency, ConsistencyAndAvailability

        • status.lastValidConfiguration.cluster.topology
          строка

          Описывает правила разворачивания кластера.

          Возможные значения:

          • Zonal — кластер размещается в одной зоне, если это возможно;
          • TransZonal — кластер размещается в разных зонах, если это возможно;
          • Ignored — используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.

          Пример:

          topology: Ignored
          
      • status.lastValidConfiguration.configuration
        объект
        Параметры конфигурации PostgreSQL.
      • status.lastValidConfiguration.instance
        объект
        • status.lastValidConfiguration.instance.cpu
          объект

          Обязательный параметр

          • status.lastValidConfiguration.instance.cpu.coreFraction
            целочисленный

            Обязательный параметр

            Множитель для расчёта requests CPU относительно limits.

            Пример:

            coreFraction: 50
            
          • status.lastValidConfiguration.instance.cpu.cores
            целочисленный

            Обязательный параметр

            Количество ядер CPU.
        • status.lastValidConfiguration.instance.memory
          объект

          Обязательный параметр

          • status.lastValidConfiguration.instance.memory.size
            строка или число

            Обязательный параметр

            Объём памяти.

            Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Пример:

            size: 1Gi
            
        • status.lastValidConfiguration.instance.persistentVolumeClaim
          объект

          Обязательный параметр

          • status.lastValidConfiguration.instance.persistentVolumeClaim.size
            строка

            Обязательный параметр

            Размер хранилища.

            По умолчанию: 1Gi

            Пример:

            size: 1Gi
            
          • status.lastValidConfiguration.instance.persistentVolumeClaim.storageClassName
            строка

            Имя StorageClass, используемого для хранения данных PostgreSQL.

            Если значение не было указано, используется StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.

            Пример:

            storageClassName: local-path
            
      • status.lastValidConfiguration.observability
        строка
      • status.lastValidConfiguration.scheduling
        объект
        Параметры планирования подов из последней валидной конфигурации.
        • status.lastValidConfiguration.scheduling.affinity
          объект
          Группа affinity-правил для размещения подов.
          • status.lastValidConfiguration.scheduling.affinity.nodeAffinity
            объект
            Описывает правила привязки подов к узлам кластера.
            • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
              массив объектов

              Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.

              Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам requiredDuringSchedulingIgnoredDuringExecution и другим), вычисляется сумма значений weight для всех элементов этого списка, условия matchExpressions которых выполняются для данного узла.

              Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.

              • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
                объект
                Условие селектора узла, связанное с соответствующим весом (weight).
                • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
                  массив объектов
                  Список требований селектора узла по лейблам узла.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist;
                    • Gt;
                    • Lt.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым;
                    • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
                  массив объектов
                  Список требований селектора узла по полям узла.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist;
                    • Gt;
                    • Lt.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым;
                    • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

                    Этот массив заменяется при применении strategic merge patch.

              • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                целочисленный
                Вес, определяющий приоритет сопоставления соответствующему nodeSelectorTerm, в диапазоне 1-100.
            • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
              объект

              Если заданные в этом поле требования nodeAffinity не выполняются в момент планирования, под не будет запланирован к размещению на узле.

              Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.

              • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
                массив объектов

                Обязательный параметр

                Список условий селектора узла. Термины объединяются по логике ИЛИ.
                • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
                  массив объектов
                  Список требований селектора узла по лейблам узла.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist;
                    • Gt;
                    • Lt.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым;
                    • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
                  массив объектов
                  Список требований селектора узла по полям узла.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist;
                    • Gt;
                    • Lt.
                  • status.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым;
                    • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

                    Этот массив заменяется при применении strategic merge patch.

          • status.lastValidConfiguration.scheduling.affinity.podAffinity
            объект

            Описывает правила размещения подов относительно друг друга.

            Указывает, рядом с какими подами (на том же узле, зоне и т. д.) должен быть размещён под.

            • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution
              массив объектов

              Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.

              Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам requiredDuringSchedulingIgnoredDuringExecution и другим), вычисляется сумма значений weight для всех элементов этого списка, условия matchExpressions которых выполняются для данного узла.

              Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm
                объект
                Описывает правило pod affinity, связанное с соответствующим весом (weight).
                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector
                  объект

                  Селектор лейблов для выбора набора ресурсов (в данном случае — подов).

                  Если не задан, podAffinityTerm не будет соответствовать ни одному поду.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions
                    массив объектов

                    Список условий для выбора по лейблам.

                    Условия объединяются по логике И.

                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.key
                      строка
                      Ключ лейбла, к которому применяется селектор.
                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.operator
                      строка

                      Представляет отношение ключа к набору значений.

                      Поддерживаемые операторы:

                      • In;
                      • NotIn;
                      • Exists;
                      • DoesNotExist.
                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.values
                      массив строк

                      Массив строковых значений, который заполняется в зависимости от оператора:

                      • при операторе In или NotIn массив значений НЕ должен быть пустым;
                      • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                      Этот массив заменяется при применении strategic merge patch.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchLabels
                    объект

                    Набор пар {ключ,значение} для выбора подов по лейблам.

                    Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                    Условия объединяются по логике И.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys
                  массив строк

                  Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.

                  Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key in (value), которое объединяется с labelSelector.

                  Ключи, отсутствующие в лейблах пода, игнорируются.

                  Применяются следующие ограничения:

                  • один и тот же ключ не может быть указан одновременно в matchLabelKeys и labelSelector;
                  • параметр не может быть задан без labelSelector.
                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys
                  массив строк

                  Список ключей лейблов пода, используемых для исключения подов при применении affinity.

                  Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key notin (value), которое объединяется с labelSelector.

                  Ключи, отсутствующие в лейблах пода, игнорируются.

                  Применяются следующие ограничения:

                  • один и тот же ключ не может быть указан одновременно в mismatchLabelKeys и labelSelector;
                  • параметр не может быть задан без labelSelector.
                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector
                  объект

                  Селектор лейблов для выбора неймспейсов, к которым применяется правило.

                  Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле namespaces.

                  Если namespaceSelector и namespaces не заданы или пусты, используется неймспейс текущего пода.

                  Пустой селектор ({}) соответствует всем неймспейсам.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions
                    массив объектов

                    Список условий для выбора по лейблам.

                    Условия объединяются по логике И.

                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.key
                      строка
                      Ключ лейбла, к которому применяется селектор.
                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.operator
                      строка

                      Представляет отношение ключа к набору значений.

                      Поддерживаемые операторы:

                      • In;
                      • NotIn;
                      • Exists;
                      • DoesNotExist.
                    • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.values
                      массив строк

                      Массив строковых значений, который заполняется в зависимости от оператора:

                      • при операторе In или NotIn массив значений НЕ должен быть пустым;
                      • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                      Этот массив заменяется при применении strategic merge patch.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchLabels
                    объект

                    Набор пар {ключ,значение} для выбора подов по лейблам.

                    Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                    Условия объединяются по логике И.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces
                  массив строк

                  Список имён неймспейсов, к которым применяется правило.

                  Используется совместно с namespaceSelector.

                  Итоговый набор представляет собой объединение значений обоих полей.

                  Если namespaces и namespaceSelector не заданы, используется неймспейс текущего пода.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey
                  строка

                  Обязательный параметр

                  Ключ лейбла узла, определяющий топологию размещения подов.

                  Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла topologyKey.

                  Значение не может быть пустым.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                целочисленный
                Вес, определяющий приоритет сопоставления соответствующему podAffinityTerm, в диапазоне 1-100.
            • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
              массив объектов

              Если заданные в этом поле требования не выполняются в момент планирования, под не будет запланирован к размещению на узле.

              Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
                объект

                Селектор лейблов для выбора набора ресурсов (в данном случае — подов).

                Если не задан, podAffinityTerm не будет соответствовать ни одному поду.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
                  массив объектов

                  Список условий для выбора по лейблам.

                  Условия объединяются по логике И.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist.
                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
                  объект

                  Набор пар {ключ,значение} для выбора подов по лейблам.

                  Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                  Условия объединяются по логике И.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
                массив строк

                Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.

                Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key in (value), которое объединяется с labelSelector.

                Ключи, отсутствующие в лейблах пода, игнорируются.

                Применяются следующие ограничения:

                • один и тот же ключ не может быть указан одновременно в matchLabelKeys и labelSelector;
                • параметр не может быть задан без labelSelector.
              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
                массив строк

                Список ключей лейблов пода, используемых для исключения подов при применении affinity.

                Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key notin (value), которое объединяется с labelSelector.

                Ключи, отсутствующие в лейблах пода, игнорируются.

                Применяются следующие ограничения:

                • один и тот же ключ не может быть указан одновременно в mismatchLabelKeys и labelSelector;
                • параметр не может быть задан без labelSelector.
              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
                объект

                Селектор лейблов для выбора неймспейсов, к которым применяется правило.

                Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле namespaces.

                Если namespaceSelector и namespaces не заданы или пусты, используется неймспейс текущего пода.

                Пустой селектор ({}) соответствует всем неймспейсам.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
                  массив объектов

                  Список условий для выбора по лейблам.

                  Условия объединяются по логике И.

                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist.
                  • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
                  объект

                  Набор пар {ключ,значение} для выбора подов по лейблам.

                  Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                  Условия объединяются по логике И.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
                массив строк

                Список имён неймспейсов, к которым применяется правило.

                Используется совместно с namespaceSelector.

                Итоговый набор представляет собой объединение значений обоих полей.

                Если namespaces и namespaceSelector не заданы, используется неймспейс текущего пода.

              • status.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
                строка

                Ключ лейбла узла, определяющий топологию размещения подов.

                Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла topologyKey.

                Значение не может быть пустым.

          • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity
            объект

            Описывает правила размещения подов относительно друг друга.

            Указывает, рядом с какими подами (на том же узле, зоне и т. д.) НЕ должен быть размещён под.

            • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
              массив объектов

              Планировщик будет стремиться размещать поды на узлах, удовлетворяющих anti-affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.

              Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам requiredDuringSchedulingIgnoredDuringExecution и другим), вычисляется сумма значений weight для всех элементов этого списка, условия matchExpressions которых выполняются для данного узла.

              Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm
                объект
                Описывает правило pod affinity, связанное с соответствующим весом (weight).
                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector
                  объект

                  Селектор лейблов для выбора набора ресурсов (в данном случае — подов).

                  Если не задан, podAffinityTerm не будет соответствовать ни одному поду.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions
                    массив объектов

                    Список условий для выбора по лейблам.

                    Условия объединяются по логике И.

                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.key
                      строка
                      Ключ лейбла, к которому применяется селектор.
                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.operator
                      строка

                      Представляет отношение ключа к набору значений.

                      Поддерживаемые операторы:

                      • In;
                      • NotIn;
                      • Exists;
                      • DoesNotExist.
                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.values
                      массив строк

                      Массив строковых значений, который заполняется в зависимости от оператора:

                      • при операторе In или NotIn массив значений НЕ должен быть пустым;
                      • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                      Этот массив заменяется при применении strategic merge patch.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchLabels
                    объект

                    Набор пар {ключ,значение} для выбора подов по лейблам.

                    Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                    Условия объединяются по логике И.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys
                  массив строк

                  Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.

                  Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key in (value), которое объединяется с labelSelector.

                  Ключи, отсутствующие в лейблах пода, игнорируются.

                  Применяются следующие ограничения:

                  • один и тот же ключ не может быть указан одновременно в matchLabelKeys и labelSelector;
                  • параметр не может быть задан без labelSelector.
                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys
                  массив строк

                  Список ключей лейблов пода, используемых для исключения подов при применении affinity.

                  Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key notin (value), которое объединяется с labelSelector.

                  Ключи, отсутствующие в лейблах пода, игнорируются.

                  Применяются следующие ограничения:

                  • один и тот же ключ не может быть указан одновременно в mismatchLabelKeys и labelSelector;
                  • параметр не может быть задан без labelSelector.
                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector
                  объект

                  Селектор лейблов для выбора неймспейсов, к которым применяется правило.

                  Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле namespaces.

                  Если namespaceSelector и namespaces не заданы или пусты, используется неймспейс текущего пода.

                  Пустой селектор ({}) соответствует всем неймспейсам.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions
                    массив объектов

                    Список условий для выбора по лейблам.

                    Условия объединяются по логике И.

                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.key
                      строка
                      Ключ лейбла, к которому применяется селектор.
                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.operator
                      строка

                      Представляет отношение ключа к набору значений.

                      Поддерживаемые операторы:

                      • In;
                      • NotIn;
                      • Exists;
                      • DoesNotExist.
                    • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.values
                      массив строк

                      Массив строковых значений, который заполняется в зависимости от оператора:

                      • при операторе In или NotIn массив значений НЕ должен быть пустым;
                      • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                      Этот массив заменяется при применении strategic merge patch.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchLabels
                    объект

                    Набор пар {ключ,значение} для выбора подов по лейблам.

                    Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                    Условия объединяются по логике И.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces
                  массив строк

                  Список имён неймспейсов, к которым применяется правило.

                  Используется совместно с namespaceSelector.

                  Итоговый набор представляет собой объединение значений обоих полей.

                  Если namespaces и namespaceSelector не заданы, используется неймспейс текущего пода.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey
                  строка

                  Обязательный параметр

                  Ключ лейбла узла, определяющий топологию размещения подов.

                  Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла topologyKey.

                  Значение не может быть пустым.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                целочисленный
                Вес, определяющий приоритет сопоставления соответствующему podAffinityTerm, в диапазоне 1-100.
            • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
              массив объектов

              Если заданные в этом поле требования не выполняются в момент планирования, под не будет запланирован к размещению на узле.

              Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
                объект

                Селектор лейблов для выбора набора ресурсов (в данном случае — подов).

                Если не задан, podAffinityTerm не будет соответствовать ни одному поду.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
                  массив объектов

                  Список условий для выбора по лейблам.

                  Условия объединяются по логике И.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist.
                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
                  объект

                  Набор пар {ключ,значение} для выбора подов по лейблам.

                  Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                  Условия объединяются по логике И.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
                массив строк

                Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.

                Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key in (value), которое объединяется с labelSelector.

                Ключи, отсутствующие в лейблах пода, игнорируются.

                Применяются следующие ограничения:

                • один и тот же ключ не может быть указан одновременно в matchLabelKeys и labelSelector;
                • параметр не может быть задан без labelSelector.
              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
                массив строк

                Список ключей лейблов пода, используемых для исключения подов при применении affinity.

                Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида key notin (value), которое объединяется с labelSelector.

                Ключи, отсутствующие в лейблах пода, игнорируются.

                Применяются следующие ограничения:

                • один и тот же ключ не может быть указан одновременно в mismatchLabelKeys и labelSelector;
                • параметр не может быть задан без labelSelector.
              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
                объект

                Селектор лейблов для выбора неймспейсов, к которым применяется правило.

                Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле namespaces.

                Если namespaceSelector и namespaces не заданы или пусты, используется неймспейс текущего пода.

                Пустой селектор ({}) соответствует всем неймспейсам.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
                  массив объектов

                  Список условий для выбора по лейблам.

                  Условия объединяются по логике И.

                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                    строка
                    Ключ лейбла, к которому применяется селектор.
                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                    строка

                    Представляет отношение ключа к набору значений.

                    Поддерживаемые операторы:

                    • In;
                    • NotIn;
                    • Exists;
                    • DoesNotExist.
                  • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                    массив строк

                    Массив строковых значений, который заполняется в зависимости от оператора:

                    • при операторе In или NotIn массив значений НЕ должен быть пустым;
                    • при операторе Exists или DoesNotExist массив значений должен быть пустым.

                    Этот массив заменяется при применении strategic merge patch.

                • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
                  объект

                  Набор пар {ключ,значение} для выбора подов по лейблам.

                  Каждая пара эквивалентна условию в matchExpressions с оператором In и единственным значением value.

                  Условия объединяются по логике И.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
                массив строк

                Список имён неймспейсов, к которым применяется правило.

                Используется совместно с namespaceSelector.

                Итоговый набор представляет собой объединение значений обоих полей.

                Если namespaces и namespaceSelector не заданы, используется неймспейс текущего пода.

              • status.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
                строка

                Ключ лейбла узла, определяющий топологию размещения подов.

                Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла topologyKey.

                Значение не может быть пустым.

        • status.lastValidConfiguration.scheduling.nodeSelector
          объект
          Селектор узлов для размещения подов.
        • status.lastValidConfiguration.scheduling.tolerations
          массив объектов
          Список tolerations, позволяющих поду размещаться на узлах с taints.
          • status.lastValidConfiguration.scheduling.tolerations.effect
            строка

            Эффект taint, с которым сопоставляется toleration.

            Если не задан, toleration применяется ко всем эффектам.

            Допустимые значения:

            • NoSchedule;
            • PreferNoSchedule;
            • NoExecute.
          • status.lastValidConfiguration.scheduling.tolerations.key
            строка

            Ключ taint, к которому применяется toleration.

            Если не задан, toleration применяется ко всем ключам taint.

            В этом случае в качестве operator должно быть указано Exists, что означает соответствие любым значениям и ключам.

          • status.lastValidConfiguration.scheduling.tolerations.operator
            строка

            Оператор, определяющий связь между ключом и значением taint.

            Допустимые значения:

            • Exists;
            • Equal (по умолчанию);
            • Lt;
            • Gt.

            Оператор Exists означает соответствие любому значению. Операторы Lt и Gt выполняют числовое сравнение (требуется включённый feature gate TaintTolerationComparisonOperators).

          • status.lastValidConfiguration.scheduling.tolerations.tolerationSeconds
            целочисленный

            Время, в течение которого toleration позволяет игнорировать taint с эффектом NoExecute.

            Применяется только для эффекта NoExecute, в остальных случаях игнорируется. Если значение не задано (по умолчанию), toleration действует бессрочно (под не будет вытеснен).

            Отрицательные значения и 0 интерпретируются системой как 0 (под будет немедленно удалён).

          • status.lastValidConfiguration.scheduling.tolerations.value
            строка

            Значение taint, с которым сопоставляется toleration.

            Если используется оператор Exists, значение должно быть пустым. В остальных случаях указывается строковое значение.

        • status.lastValidConfiguration.scheduling.warnings
          массив строк
          Список предупреждений, связанных с применением параметров планирования подов.
      • status.lastValidConfiguration.type
        строка
        Тип кластера PostgreSQL.

PostgresClass

Scope: Cluster
Version: v1alpha1

Схема API-ресурса PostgresClass.
  • apiVersion
    строка

    Определяет версию API, к которой относится данный объект.

    Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.

    Подробнее об обязательных полях в ресурсах можно почитать в документации Kubernetes.

  • kind
    строка

    Строковое значение, определяющее тип ресурса, к которому относится данный объект.

    Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.

    Поле не подлежит изменению. Указывается в формате CamelCase.

    Подробнее с типом ресурсов можно ознакомиться в документации Kubernetes.

  • metadata
    объект
  • spec
    объект
    Определяет желаемое состояние ресурса PostgresClass.
    • spec.configuration
      объект

      Параметры конфигурации PostgreSQL.

      Любые указанные здесь параметры будут использоваться как значения по умолчанию в связанных кастомных ресурсах PostgreSQL.

      • spec.configuration.maxConnections
        целочисленный

        Определяет максимальное количество одновременных подключений к серверу базы данных.

        Этот параметр можно установить только при запуске сервера.

        Размеры некоторых ресурсов основываются на значении max_connections. Увеличение значения приводит к повышенному выделению этих ресурсов, включая разделяемую память.

        Пример:

        maxConnections: 100
        
      • spec.configuration.sharedBuffers
        строка или число

        Устанавливает объём памяти, который сервер базы данных использует для буферов разделяемой памяти.

        Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.

        Этот параметр можно установить только при запуске сервера.

        Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объёма памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для shared_buffers редко даёт дополнительный прирост производительности.

        При увеличении shared_buffers обычно требуется также увеличить max_wal_size, чтобы распределить процесс записи больших объёмов новых или измененных данных на более длительный период времени.

        В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        sharedBuffers: 250Mi
        
      • spec.configuration.walKeepSize
        строка или число

        Определяет минимальный размер прошлых файлов WAL, хранящихся в каталоге pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.

        Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на wal_keep_size МБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.

        Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.

        Если wal_keep_size равен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        walKeepSize: 512Mi
        
      • spec.configuration.workMem
        строка или число

        Устанавливает базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.

        Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.

        Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения work_mem.

        Операции сортировки используются для ORDER BY, DISTINCT и слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросов IN.

        Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения work_mem на hash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количество work_mem.

        Значение должно быть указано в единицах Kubernetes: Gi, Mi, Ki, M, G.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        Пример:

        workMem: 4Mi
        
    • spec.nodeAffinity
      объект

      Позволяет с помощью лейблов ограничивать набор узлов, на которых может быть запущен под.

      Параметр концептуально похож на nodeSelector.

      • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
        массив объектов

        Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.

        Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам requiredDuringSchedulingIgnoredDuringExecution и другим), вычисляется сумма значений weight для всех элементов этого списка, условия matchExpressions которых выполняются для данного узла.

        Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.

        • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
          объект
          Условие селектора узла, связанное с соответствующим весом (weight).
          • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
            массив объектов
            Список требований селектора узла по лейблам узла.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
              строка
              Ключ лейбла, к которому применяется селектор.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
              строка

              Представляет отношение ключа к набору значений.

              Поддерживаемые операторы:

              • In;
              • NotIn;
              • Exists;
              • DoesNotExist;
              • Gt;
              • Lt.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
              массив строк

              Массив строковых значений, который заполняется в зависимости от оператора:

              • при операторе In или NotIn массив значений НЕ должен быть пустым;
              • при операторе Exists или DoesNotExist массив значений должен быть пустым;
              • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

              Этот массив заменяется при применении strategic merge patch.

          • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
            массив объектов
            Список требований селектора узла по полям узла.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
              строка
              Ключ лейбла, к которому применяется селектор.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
              строка

              Представляет отношение ключа к набору значений.

              Поддерживаемые операторы:

              • In;
              • NotIn;
              • Exists;
              • DoesNotExist;
              • Gt;
              • Lt.
            • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
              массив строк

              Массив строковых значений, который заполняется в зависимости от оператора:

              • при операторе In или NotIn массив значений НЕ должен быть пустым;
              • при операторе Exists или DoesNotExist массив значений должен быть пустым;
              • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

              Этот массив заменяется при применении strategic merge patch.

        • spec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
          целочисленный
          Вес, определяющий приоритет сопоставления соответствующему nodeSelectorTerm, в диапазоне 1-100.
      • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
        объект

        Если заданные в этом поле требования nodeAffinity не выполняются в момент планирования, под не будет запланирован к размещению на узле.

        Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.

        • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
          массив объектов

          Обязательный параметр

          Список условий селектора узла. Термины объединяются по логике ИЛИ.
          • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
            массив объектов
            Список требований селектора узла по лейблам узла.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
              строка
              Ключ лейбла, к которому применяется селектор.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
              строка

              Представляет отношение ключа к набору значений.

              Поддерживаемые операторы:

              • In;
              • NotIn;
              • Exists;
              • DoesNotExist;
              • Gt;
              • Lt.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
              массив строк

              Массив строковых значений, который заполняется в зависимости от оператора:

              • при операторе In или NotIn массив значений НЕ должен быть пустым;
              • при операторе Exists или DoesNotExist массив значений должен быть пустым;
              • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

              Этот массив заменяется при применении strategic merge patch.

          • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
            массив объектов
            Список требований селектора узла по полям узла.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
              строка
              Ключ лейбла, к которому применяется селектор.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
              строка

              Представляет отношение ключа к набору значений.

              Поддерживаемые операторы:

              • In;
              • NotIn;
              • Exists;
              • DoesNotExist;
              • Gt;
              • Lt.
            • spec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
              массив строк

              Массив строковых значений, который заполняется в зависимости от оператора:

              • при операторе In или NotIn массив значений НЕ должен быть пустым;
              • при операторе Exists или DoesNotExist массив значений должен быть пустым;
              • при операторе Gt или Lt массив значений должен иметь один элемент, который будет интерпретирован как целое число.

              Этот массив заменяется при применении strategic merge patch.

    • spec.nodeSelector
      объект

      Позволяет размещать поды кластера PostgreSQL только на указанных узлах.

      Работает аналогично параметру spec.nodeSelector для подов Kubernetes.

    • spec.overridableConfiguration
      массив строк

      Массив параметров конфигурации PostgreSQL, которые пользователь может изменять.

      Значения, заданные пользователем, имеют приоритет и переопределяют соответствующие параметры в секции configuration.

      • spec.overridableConfiguration.Элемент массива
        строка
        ConfigurationType is a type of configuration option

        Допустимые значения: maxConnections, sharedBuffers, workMem, walKeepSize

    • spec.sizingPolicies
      массив объектов

      Обязательный параметр

      Массив, который определяет политику выделения вычислительных ресурсов экземплярам PostgreSQL.

      Диапазоны cores.mincores.max для разных элементов списка не должны перекрываться.

      • spec.sizingPolicies.coreFractions
        массив целых чисел
        Множитель для настройки requests на основе заданных limits в ядрах.

        Пример:

        coreFractions:
        - 10
        - 30
        - 50
        - 100
        
      • spec.sizingPolicies.cores
        объект
        Определяет допустимый диапазон количества ядер CPU.
        • spec.sizingPolicies.cores.max
          целочисленный

          Обязательный параметр

          Верхняя граница допустимого количества ядер CPU.

          Пример:

          max: 6
          
        • spec.sizingPolicies.cores.min
          целочисленный

          Обязательный параметр

          Нижняя граница допустимого количества ядер CPU.

          Пример:

          min: 1
          
      • spec.sizingPolicies.memory
        объект
        Позволяет задать диапазон и шаг допустимых значений памяти.
        • spec.sizingPolicies.memory.max
          строка или число

          Обязательный параметр

          Верхняя граница допустимого объема памяти.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          max: 5Gi
          
        • spec.sizingPolicies.memory.min
          строка или число

          Обязательный параметр

          Нижняя граница допустимого объема памяти.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          min: 128Mi
          
        • spec.sizingPolicies.memory.step
          строка или число

          Обязательный параметр

          Делитель (шаг) для допустимого значения памяти. Указанный объем должен делиться без остатка.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          step: 100Mi
          
    • spec.tolerations
      массив объектов
      Tolerations подов Postgres.
      • spec.tolerations.effect
        строка

        Эффект taint для соответствия.

        Допустимые значения:

        • NoSchedule;
        • PreferNoSchedule;
        • NoExecute.

        Пустое значение означает соответствие любому эффекту taint.

      • spec.tolerations.key
        строка

        Ключ taint, к которому применяется toleration. Пустое значение означает соответствие любому ключу.

        Если ключ пустой, operator должен быть Exists. Эта комбинация означает соответствие всем значениям и всем ключам.

      • spec.tolerations.operator
        строка

        Отношение ключа (key) к значению (value). Допустимые операторы:

        • Exists;
        • Equal (по умолчанию).

        Exists эквивалентен подстановочному знаку для значения, поэтому к поду могут применяться все taints определенной категории.

      • spec.tolerations.tolerationSeconds
        целочисленный
        Период времени, в течение которого toleration с эффектом NoExecute допускает taint. По умолчанию не установлено, что предписывает допускать taint бессрочно (не вытеснять под). Нулевые и отрицательные значения интерпретируются системой как 0 (немедленное вытеснение пода).
      • spec.tolerations.value
        строка
        Значение taint, которому соответствует toleration. При operator: Exists значение должно быть пустым. В другом случае должна быть указана обычная строка.
    • spec.topology
      объект

      Обязательный параметр

      Описание разрешенной топологии PostgreSQL.
      • spec.topology.allowedTopologies
        массив строк

        Обязательный параметр

        Массив допустимых типов топологии.

        Поддерживаются следующие значения:

        • Zonal — кластер размещается в пределах одной зоны, если это возможно;
        • TransZonal — кластер размещается в разных зонах, если это возможно;
        • Ignored — кластер размещается по стандартным правилам планирования Kubernetes; гарантируется только разнесение по разным узлам.
        • spec.topology.allowedTopologies.Элемент массива
          строка

          Допустимые значения: Ignored, Zonal, TransZonal

      • spec.topology.allowedZones
        массив строк
        Массив разрешенных зон для размещения PostgreSQL-кластера.

        По умолчанию: []

      • spec.topology.defaultTopology
        строка

        Обязательный параметр

        Топология по умолчанию, которая будет использоваться всеми связанными сервисами PostgreSQL.

        Допустимые значения: Ignored, Zonal, TransZonal

    • spec.validations
      массив объектов

      Формулы валидации, которые позволяют проверить все настроенные конфигурации.

      Поддерживается только язык CEL.

      • spec.validations.message
        строка
        Сообщение, которое будет выводиться при неудачном выполнении правила (rule).

        Пример:

        message: '''maxConnections should be greater than 100''\'
        
      • spec.validations.rule
        строка

        Правило для проверки конфигурации PostgreSQL.

        Доступные предопределенные переменные:

        • configuration.maxConnections;
        • configuration.workMem;
        • configuration.sharedBuffers;
        • configuration.walKeepSize;
        • instance.memory.size;
        • instance.cpu.cores.

        Пример:

        rule: configuration.maxConnections > 100
        

PostgresSnapshot

Scope: Namespaced
Version: v1alpha1

Схема API-ресурса PostgresSnapshot.
  • apiVersion
    строка

    Определяет версию API, к которой относится данный объект.

    Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.

    Подробнее с обязательными полями в ресурсах можно ознакомиться в документации Kubernetes.

  • kind
    строка

    Строковое значение, определяющее тип ресурса, к которому относится данный объект.

    Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.

    Поле не подлежит изменению. Указывается в формате CamelCase.

    Подробнее с типами ресурсов можно ознакомиться в документации Kubernetes.

  • metadata
    объект
  • spec
    объект
    Определяет желаемое состояние ресурса PostgresSnapshot.
    • spec.postgresName
      строка

      Обязательный параметр

      Имя управляемого сервиса PostgreSQL.
  • status
    объект
    Описывает наблюдаемое состояние ресурса PostgresSnapshot.
    • status.completedAt
      строка
      Время завершения резервного копирования.
    • status.error
      строка
      Обнаруженная ошибка.
    • status.phase
      строка
      Фаза текущего снимка.
    • status.postgres
      объект
      Конфигурация PostgreSQL.
      • status.postgres.cluster
        объект
        Настройки кластера, включая топологию размещения и режим репликации.
        • status.postgres.cluster.replication
          строка

          Описывает состав и тип реплик в кластере.

          Возможные значения:

          • Availability — master-узел + 1 асинхронная реплика;
          • Consistency — master-узел + 1 синхронная реплика;
          • ConsistencyAndAvailability — master-узел + 1 синхронная реплика + 1 асинхронная реплика.

          По умолчанию: ConsistencyAndAvailability

          Допустимые значения: Availability, Consistency, ConsistencyAndAvailability

        • status.postgres.cluster.topology
          строка

          Описывает правила разворачивания кластера.

          Возможные значения:

          • Zonal — кластер размещается в одной зоне, если это возможно;
          • TransZonal — кластер размещается в разных зонах, если это возможно;
          • Ignored — используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.

          Пример:

          topology: Ignored
          
      • status.postgres.configuration
        объект
        Параметры конфигурации PostgreSQL.
        • status.postgres.configuration.maxConnections
          целочисленный

          Максимальное количество одновременных подключений к серверу базы данных.

          Этот параметр можно установить только при запуске сервера.

          Размеры некоторых ресурсов основываются на значении max_connections. Увеличение значения приводит к повышенному выделению этих ресурсов, включая разделяемую память.

          Пример:

          maxConnections: 100
          
        • status.postgres.configuration.sharedBuffers
          строка или число

          Количество памяти, которое сервер базы данных использует для буферов разделяемой памяти.

          Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.

          Этот параметр можно установить только при запуске сервера.

          Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объёма памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для shared_buffers редко даёт дополнительный прирост производительности.

          При увеличении shared_buffers обычно требуется также увеличить max_wal_size, чтобы распределить процесс записи больших объёмов новых или измененных данных на более длительный период времени.

          В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.

          Указывается в единицах Kubernetes: Gi, Mi, Ki, M, G.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          sharedBuffers: 250Mi
          
        • status.postgres.configuration.walKeepSize
          строка или число

          Минимальный размер прошлых файлов WAL, хранящихся в каталоге pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.

          Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на wal_keep_size МБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.

          Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.

          Если wal_keep_size равен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.

          Указывается в единицах Kubernetes: Gi, Mi, Ki, M, G.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          walKeepSize: 512Mi
          
        • status.postgres.configuration.workMem
          строка или число

          Базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.

          Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.

          Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения work_mem.

          Операции сортировки используются для ORDER BY, DISTINCT и слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросов IN.

          Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения work_mem на hash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количество work_mem.

          Указывается в единицах Kubernetes: Gi, Mi, Ki, M, G.

          Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Пример:

          workMem: 4Mi
          
      • status.postgres.dataSource
        объект
        Data source for initializing PostgreSQL from PostgresSnapshot or other sources.
        • status.postgres.dataSource.objectRef
          объект

          Обязательный параметр

          • status.postgres.dataSource.objectRef.kind
            строка

            Обязательный параметр

          • status.postgres.dataSource.objectRef.name
            строка

            Обязательный параметр

      • status.postgres.databases
        массив объектов
        Список логических баз данных PostgreSQL.
        • status.postgres.databases.name
          строка
          Имя логической базы данных.

          Пример:

          name: mydb
          
      • status.postgres.instance
        объект

        Обязательный параметр

        Требования к ресурсам каждого создаваемого пода.

        Подробнее с управлением ресурсами для подов и контейнеров можно ознакомиться в документации Kubernetes.

        • status.postgres.instance.cpu
          объект

          Обязательный параметр

          • status.postgres.instance.cpu.coreFraction
            целочисленный

            Обязательный параметр

            Множитель для расчёта requests CPU относительно limits.

            Пример:

            coreFraction: 50
            
          • status.postgres.instance.cpu.cores
            целочисленный

            Обязательный параметр

            Количество ядер CPU.
        • status.postgres.instance.memory
          объект

          Обязательный параметр

          • status.postgres.instance.memory.size
            строка или число

            Обязательный параметр

            Объём памяти.

            Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Пример:

            size: 1Gi
            
        • status.postgres.instance.persistentVolumeClaim
          объект

          Обязательный параметр

          • status.postgres.instance.persistentVolumeClaim.size
            строка

            Обязательный параметр

            По умолчанию: 1Gi

            Пример:

            size: 1Gi
            
          • status.postgres.instance.persistentVolumeClaim.storageClassName
            строка

            Имя StorageClass, используемого для хранения данных PostgreSQL.

            Если значение не было указано, используется StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.

            Пример:

            storageClassName: local-path
            
      • status.postgres.observability
        строка
        Monitoring mode, could be turned off,

        По умолчанию: Enabled

        Допустимые значения: Enabled, Disabled, EnabledWithoutAlerts

      • status.postgres.postgresClassName
        строка

        Обязательный параметр

        Имя ресурса PostgresClass, используемого для валидации настроек.

        По умолчанию: default

        Пример:

        postgresClassName: small
        
      • status.postgres.tls
        объект
        TLS configuration for the PostgreSQL server.
        • status.postgres.tls.certManager
          объект

          Configuration of the cert-manager for TLS certificate management.

          Available only when mode: CertManager.

          • status.postgres.tls.certManager.clusterIssuerName
            строка

            Name of the ClusterIssuer resource for cert-manager.

            Only one field must be specified: clusterIssuerName or issuerName.

          • status.postgres.tls.certManager.issuerName
            строка

            Name of the Issuer resource for cert-manager.

            Only one field must be specified: clusterIssuerName or issuerName.

        • status.postgres.tls.customCertificate
          объект

          Configuration for custom TLS certificate management.

          Available only when mode: CustomCertificate.

          • status.postgres.tls.customCertificate.serverCASecret
            строка

            Обязательный параметр

            Name of the Secret containing the CA certificate for the PostgreSQL TLS server.
          • status.postgres.tls.customCertificate.serverTLSSecret
            строка

            Обязательный параметр

            Name of the Secret containing the PostgreSQL TLS certificate.
        • status.postgres.tls.mode
          строка

          TLS certificate management mode.

          Possible values:

          • CertManager: Use cert-manager for certificate management (by default).
          • CustomCertificate: Use custom certificates from Secret.
          • K8s: Use Kubernetes CA for issuing certificates.

          По умолчанию: CertManager

          Допустимые значения: CertManager, CustomCertificate, K8s

      • status.postgres.type
        строка
        Тип кластера PostgreSQL.

        По умолчанию: Cluster

        Допустимые значения: Cluster, Standalone

      • status.postgres.users
        массив объектов
        Список внутренних пользователей PostgreSQL.
        • status.postgres.users.hashedPassword
          строка

          Хешированный пароль для роли PostgreSQL.

          Поддерживаемые форматы:

          • MD5;
          • SCRAM-SHA-256.

          Если при настройке здесь был указан обычный пароль, он был автоматически заменен на хеш в формате MD5 или SCRAM-SHA-256.

          Пример:

          hashedPassword: SCRAM-SHA-256$4096:9bdAkxfJ7tMWaVlcOSyKLc8uUbvVi+KBBYXWCE14maM=$g13sNwuKH0VsQnh43WqlQj8KPwS/2smQL1m0JzJkowI=:rImReuq6U7mD4KoJGIDelxsFVlXoB1stP8olJZr5Gl4=
          
        • status.postgres.users.name
          строка
          Имя пользователя PostgreSQL.

          Пример:

          name: myuser
          
        • status.postgres.users.password
          строка

          Пароль для роли PostgreSQL в открытом виде.

          При указании автоматически преобразуется в hashedPassword, после чего удаляется из .spec.

          Если одновременно указаны password и hashedPassword, будет использоваться password. Это можно использовать для смены пароля.

          Если вы хотите хранить пароль в открытом виде в секрете Kubernetes, используйте параметр storeCredsToSecret.

          Если указано значение storeCredsToSecret, а пароль не указан, будет сгенерирован случайный пароль.

          Пример:

          password: '123'
          
        • status.postgres.users.role
          строка

          Предопределённая роль, куда добавляется созданный пользователь.

          Поддерживаемые значения:

          • ro (только чтение);
          • rw (чтение и запись);
          • monitoring (для сбора метрик).

          Допустимые значения: ro, rw, monitoring

          Пример:

          role: rw
          
        • status.postgres.users.storeCredsToSecret
          строка

          Имя Kubernetes Secret, в котором оператор хранит пароль в открытом виде.

          Секрет создан в том же неймспейсе, где расположен ресурс.

          Пример:

          storeCredsToSecret: myuser-secret
          
    • status.startedAt
      строка
      Время начала резервного копирования.
    • status.volumeSnapshotName
      строка
      Имя связанного снимка тома.