Доступно в редакциях:  EE

Требования

К версии Deckhouse: 1.72 и выше.

Конверсии

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

  • Обновление из версии 1 в 2:

    Замените .gc.skipThreshold на .gc.timeout.

параметры

Версия схемы: 2

  • settings
    объект
    • settings.gc
      объект
      Настройки сборки мусора.
      • settings.gc.enabled
        булевый
        Включить периодическую сборку мусора.

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

      • settings.gc.schedule
        строка

        Расписание в формате cron для запуска сборщика мусора. Поддерживаются предопределённые дескрипторы:

        • @yearly / @annually = 0 0 1 1 *
        • @monthly = 0 0 1 * *
        • @weekly = 0 0 * * 0
        • @daily = 0 0 * * *
        • @hourly = 0 * * * * Ссылка для проверки: https://crontab.guru

        Примеры:


        schedule: 0 20 * * 1
        
        schedule: 5 3 * * *
        
        schedule: 0 2 * * *
        
        schedule: '@daily'
        
      • settings.gc.timeout
        строка

        Определяет временной интервал, в течение которого задача сборщика мусора должна быть выполнена. Если задача не запускается за указанный интервал — выполнение откладывается до следующего запланированного времени. Если задача выполняется дольше указанного интервала — она принудительно завершается. Для принудительного завершения значение timeout проставляется в Kubernetes задаче в поле spec.activeDeadlineSeconds.

        Если параметр пустой — ограничение по времени отключено (значение по умолчанию).

        Поддерживаемые единицы: h (часы), m (минуты), s (секунды). Минимально допустимое значение — 10 минут.

        Шаблон: ^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$

        Примеры:


        timeout: 30m
        
        timeout: 1h
        
        timeout: 2h30m
        
    • settings.https
      объект
      Режим использования HTTPS для payload registry. Данный параметр полностью перекрывает настройки global.modules.https.

      Примеры:


      customCertificate:
        secretName: foobar
      mode: CustomCertificate
      
      certManager:
        clusterIssuerName: letsencrypt
      mode: CertManager
      
      • settings.https.certManager
        объект

        По умолчанию: {}

        • settings.https.certManager.clusterIssuerName
          строка
          ClusterIssuer для создания сертификата payload registry.

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

      • settings.https.customCertificate
        объект

        По умолчанию: {}

        • settings.https.customCertificate.secretName
          строка
          Имя секрета в d8-system, содержащего TLS-сертификат для payload registry Секрет должен иметь формат kubernetes.io/tls.

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

      • settings.https.mode
        строка

        Режим работы HTTPS:

        • Disabled — доступ возможен только по HTTP. Внимание! Этот режим не поддерживается. Для правильной работы модуля требуется HTTPS. Если HTTPS отключен, доступ к payload registry будет недоступен.
        • CertManager — HTTPS с сертификатом от clusterIssuer, указанного в certManager.clusterIssuerName.
        • CustomCertificate — HTTPS с пользовательским сертификатом из d8-system.
        • OnlyInURI — внутри кластера HTTP, снаружи — TLS терминируется внешним балансировщиком. Все ссылки будут формироваться с https-схемой; балансировщик должен перенаправлять HTTP→HTTPS.

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

    • settings.persistence
      объект
      Параметры конфигурации PersistentVolumeClaim

      По умолчанию: {}

      • settings.persistence.accessModes
        массив строк

        Режимы доступа к PersistentVolumeClaim. Поле не изменяемое, для изменения необходимо создать новый PersistentVolumeClaim.

        Для изменения параметра перейдите в раздел “Как создать новый PVC?”.

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

        Примеры:


        accessModes:
        - ReadWriteOnce
        
        accessModes:
        - ReadWriteMany
        
        • settings.persistence.accessModes.Элемент массива
          строка

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

      • settings.persistence.name
        строка
        Имя PersistentVolumeClaim. Будьте осторожны: изменение этого поля приведет к созданию нового PersistentVolumeClaim. Старый PersistentVolumeClaim останется в namespace и его необходимо будет удалить вручную, если он больше не нужен.

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

        Длина: 1..63

        Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

        Примеры:


        name: registry
        
        name: registry-hdd
        
        name: registry-network-ssd-2
        
      • settings.persistence.size
        строка
        Размер диска PersistentVolumeClaim. Минимально допустимое значение — 1Gi. Укажите желаемый размер диска. При необходимости вы можете увеличивать размер позже.

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

        Шаблон: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$

        Примеры:


        size: 10Gi
        
        size: 1500Mi
        
      • settings.persistence.storageClass
        строка

        Имя StorageClass, который будет задан при инициализации PersistentVolumeClaim. Если это поле опущено, будет использоваться StorageClass существующего PersistentVolumeClaim. Если PersistentVolumeClaim ещё нет, будет использоваться либо глобальный StorageClass, либо global.discovery.defaultStorageClass. Поле не изменяемое, для изменения необходимо создать новый PersistentVolumeClaim.

        Для изменения параметра перейдите в раздел “Как создать новый PVC?”.

        Примеры:


        storageClass: ceph-ssd
        
        storageClass: network-hdd
        
        storageClass: network-ssd
        
    • settings.users
      объект
      Настройки авторизации пользователей в payload registry.

      По умолчанию: {}

      Примеры:


      username-1:
        passwordHash: $2y$10$gQvak.0k9BBUeH/je7n.y.cyNFc3YKyDti3L6DuZpy75drzb2wWK2
        projects:
        - access: FULL
          name: project-1
          subPath: path-*
        - access: READ
          name: project-1
          subPath: '*'
        - access: READ
          name: project-1
          subPath: '*/*'
        - access: FULL
          name: project-2
          subPath: test/*
      
      username-2:
        passwordHash: $2y$10$gQvak.0k9BBUeH/je7n.y.cyNFc3YKyDti3L6DuZpy75drzb2wWK2
      
      • settings.users.<KEY_NAME>
        объект
        <KEY_NAME> — имя параметра (ключ объекта).
        • settings.users.<KEY_NAME>.passwordHash
          строка

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

          bcrypt-хеш пароля пользователя для доступа к payload registry. Для генерации воспользуйтесь командой echo -n '${PASSWORD}' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n'; echo.

          Пример:


          passwordHash: $2y$10$gQvak.0k9BBUeH/je7n.y.cyNFc3YKyDti3L6DuZpy75drzb2wWK2
          
        • settings.users.<KEY_NAME>.projects
          массив объектов

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

          • settings.users.<KEY_NAME>.projects.access
            строка
            Уровень доступа для указанного subPath: READ разрешает операции pull, FULL разрешает операции pull и push. FULL доступ предоставляется только в том случае, если пространство имён проекта существует в Kubernetes, иначе будет доступ READ.

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

          • settings.users.<KEY_NAME>.projects.name
            строка
            Имя проекта. Для FULL доступа имя проекта должно соответствовать пространству имён Kubernetes.

            Длина: 1..63

            Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

            Пример:


            name: project-1
            
          • settings.users.<KEY_NAME>.projects.subPath
            строка
            Конкретный путь или шаблон внутри проекта. Итоговый путь: projectName/subPath.

            Шаблон: ^([^/].*[^/]|[^/])$

            Примеры:


            subPath: path
            
            subPath: path-*
            
            subPath: path/*
            
            subPath: '*'
            
            subPath: '*/*'