Обзор компонентов Code
Cуществующие компоненты и их функции:
Gitaly
— Git RPC-сервис для обработки всех Git-запросов, сделанных Deckhouse Code.raefect
— прозрачный прокси между любым Git-клиентом и узлами хранения Gitaly.Sidekiq
— процессор фоновых заданий.Webservice
— предоставляет пользовательский интерфейс и публичный API продукта.Webservice-internal-api
— предоставляет внутренний API для коммуникации компонентов между собойShell
— программа для обработки Git-сессий на основе SSH и изменения списка авторизованных ключей.Toolbox
— многофункциональный инструмент, который позволяет администраторам восстанавливать данные из резервных копий или использовать rails-консоль.Exporter
— процесс, разработанный внутри компании, позволяющий экспортировать метрики о внутренней работе приложения Code в Prometheus.MRA
— означает утверждение слияния (merge request approval). Сервис, реализующий соответствующий функционал GitLab, включая возможность CODEOWNERS.Migrations-job
— задание, выполняющее миграции базы данных.Backup-cronjob
— cron-задача, отвечающая за процесс резервного копирования.Runner-controller
— Kubernetes-контроллер, управляющий конфигурацией и жизненным циклом GitLab Runner’ов внутри кластера. Опциональный компонент.Pages
— функция, позволяющая публиковать статические веб-сайты непосредственно из репозитория в GitLab. Опциональный компонент.Registry
— реестр контейнеров, который позволяет загружать и скачивать образы. Опциональный компонент.
Подробнее с компонентами можно познакомиться по в официальной документации GitLab.
Все параметры ModuleConfig
Внимание. Некоторые параметры могут быть взаимоисключающими (например,
redis.host
иredis.sentinel
).
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: code
spec:
enabled: true
version: 1
settings:
logLevel: <string>
instanceSpec:
appConfig:
omniauth:
enabled: <bool>
allowBypassTwoFactor: <bool>
allowSingleSignOn: <bool|array>
autoLinkLdapUser: <bool>
autoLinkSamlUser: <bool>
autoLinkUser: <bool>
autoSignInWithProvider: <string>
blockAutoCreatedUsers: <bool>
syncProfileAttributes: <array>
syncProfileFromProvider: <array>
externalProviders: <array>
providers: <array>
rackAttack:
gitlabBasicAuth:
ipWhitelist: <array>
maxretry: <int>
findtime: <int>
bantime: <int>
signinEnabled: <bool>
signupEnabled: <bool>
usernameChangeEnabled: <bool>
targetUserCount: <int>
backup:
restoreFromBackupMode: <bool>
backupStorageGb: <int>
enabled: <bool>
s3:
bucketName: <string>
accessKey: <string>
provider: <string>
region: <string>
secretKey: <string>
cronSchedule: <string>
persistentVolumeClaim:
enabled: <bool>
storageClass: <string>
size: <string>
gitData:
storagePerReplicaGb: <int>
storageClass: <string>
storages:
postgres:
mode: <string>
external:
host: <string>
port: <int>
database: <string>
username: <string>
password: <string>
praefectDatabase: <string>
praefectUsername: <string>
praefectPassword: <string>
intenal: {}
redis:
mode: <string>
external:
auth:
enabled: <bool>
passowrd: <string>
host: <string>
port: <string>
sentinels: <array>
masterName: <string>
internal: {}
s3:
mode: <string>
bucketNames:
artifacts: <string>
ciSecureFiles: <string>
dependecyProxy: <string>
externalDiffs: <string>
lfs: <string>
packages: <string>
terraformState: <string>
uploads: <string>
external:
provider: <string>
region: <string>
endpoint: <string>
accessKey: <string>
secretKey: <string>
storageOptions:
serverSideEncryption: <string>
serverSideEncryptionKmsKeyId: <string>
internal: {}
network:
web:
hostname: <string>
annotations: {}
https:
mode: <string>
customCertificate:
secretName: <string>
certManager:
clusterIssuerName: <string>
gitSsh:
hostname: <string>
service:
annotations: {}
type: <string>
nodePort: <int>
features:
mail:
outgoingEmail:
displayName: <string>
from: <string>
replyTo: <string>
subjectSuffix: <string>
smtp:
enabled: <bool>
address: <string>
port: <int>
authentication: <string>
username: <string>
password: <string>
domain: <string>
tls: <bool>
starttlsAuto: <bool>
opensslVerifyMode: <string>
incomingEmail:
enabled: <bool>
address: <string>
host: <string>
port: <int>
ssl: <bool>
startTls: <bool>
user: <string>
password: <string>
serviceDeskEmail:
enabled: <bool>
address: <string>
host: <string>
port: <int>
ssl: <bool>
startTls: <bool>
user: <string>
password: <string>
pages:
enabled: <bool>
s3:
mode: <string>
bucketPrefix: <string>
internal: {}
external:
provider: <string>
region: <string>
endpoint: <string>
accessKey: <string>
secretKey: <string>
storageOptions:
serverSideEncryption: <string>
serverSideEncryptionKmsKeyId: <string>
registry:
enabled: <bool>
s3:
mode: <string>
bucketName: <string>
internal: {}
external:
provider: <string>
region: <string>
endpoint: <string>
accessKey: <string>
secretKey: <string>
ingress:
https:
mode: <string>
customCertificate:
secretName: <string>
certManager:
clusterIssuerName: <string>
maintenance:
readOnly: <bool>
uploadPuring:
enabled: <bool>
age: <string>
interval: <string>
dryrun: <bool>
runnerController:
enabled: <bool>
Подробное описание параметров ModuleConfig
Значение параметров:
enabled
— включает или отключает модульsettings
— общий раздел, который инкапсулирует все низкоуровневые параметры конфигурации модуляsettings.logLevel
- уровень логирования для оператора, занимающегося установкой и обслуживанием компонентов Deckhouse Codesettings.instanceSpec
- секция, содержащая все настройки инсталляции Deckhouse Codesettings.instanceSpec.targetUserCount
- сколько пользователей предполагается использовать приложение. Это влияет на множество внутренних аспектов, отвечающих за горизонтальное и вертикальное масштабирование приложения. Подробнее здесьsettings.instanceSpec.appConfig
- конфигурация приложения Code. Семантически идентичнаgitlab.rb
в GitLab для облегчения переноса настроек приложения из существующего экземпляраsettings.instanceSpec.appConfig.omniauth
- раздел с настройками Omniauth. Подробнее здесьsettings.instanceSpec.appConfig.omniauth.enabled
- включено ли Omniauthsettings.instanceSpec.appConfig.omniauth.allowBypassTwoFactor
- разрешить обход двухфакторной аутентификацииsettings.instanceSpec.appConfig.omniauth.allowSingleSignOn
- разрешить единый вход (SSO)settings.instanceSpec.appConfig.omniauth.autoLinkSamlUser
- автоматически связывать пользователей SAMLsettings.instanceSpec.appConfig.omniauth.autoLinkUser
- автоматически связывать пользователяsettings.instanceSpec.appConfig.omniauth.autoSignInWithProvider
- автоматический вход через провайдераsettings.instanceSpec.appConfig.omniauth.blockAutoCreatedUsers
- блокировать автоматически созданных пользователейsettings.instanceSpec.appConfig.omniauth.syncProfileAttributes
- синхронизировать атрибуты профиляsettings.instanceSpec.appConfig.omniauth.syncProfileFromProvider
- синхронизировать профиль с провайдераsettings.instanceSpec.appConfig.omniauth.externalProviders
- внешние провайдерыsettings.instanceSpec.appConfig.omniauth.providers
- провайдеры Omniauth
settings.instanceSpec.appConfig.rackAttack.gitlabBasicAuth
- ограничитель скорости, используемый GitLab для настройки блокировки и ограничения пользователей. Подробнее здесьsettings.instanceSpec.appConfig.rackAttack.gitlabBasicAuth.ipWhitelist
- список IP-адресов, не подпадающих под правила rackAttacksettings.instanceSpec.appConfig.rackAttack.gitlabBasicAuth.maxretry
- ограничение числа попыток аутентификации Git HTTP на IPsettings.instanceSpec.appConfig.rackAttack.gitlabBasicAuth.findtime
- сбросить счетчик попыток аутентификации на IP через N секундsettings.instanceSpec.appConfig.rackAttack.gitlabBasicAuth.bantime
- заблокировать IP на N секунд после слишком большого количества попыток
settings.instanceSpec.appConfig.signinEnabled
- включить ли страницу входаsettings.instanceSpec.appConfig.signupEnabled
- разрешить ли регистрацию новых пользователейsettings.instanceSpec.appConfig.usernameChangeEnabled
- разрешить изменение имен пользователей для существующих учетных записейsettings.instanceSpec.appConfig.defaultColorMode
- тема по умолчанию для интерфейса
settings.instanceSpec.backup
- раздел, связанный с процессом резервного копирования продуктаsettings.instanceSpec.backup.enabled
- включен ли процесс резервного копированияsettings.instanceSpec.backup.restoreFromBackupMode
- специальный режим приложения, используемый во время резервного копирования/восстановления. Нужен для отключения всех потенциальных потребителей приложения и предотвращения неконсистентности процессовsettings.instanceSpec.backup.cronSchedule
- расписание в формате cron для выполнения операций резервного копированияsettings.instanceSpec.backup.backupStorageGb
- ожидаемый общий размер резервных копий (архив tar) для настройки базового хранилищаsettings.instanceSpec.backup.s3
- раздел для описания параметров удаленного объектного хранилища, которое будет содержать резервные копииsettings.instanceSpec.backup.s3.bucketName
- имя бакета в объектном хранилищеsettings.instanceSpec.backup.s3.provider
- провайдер объектного хранилищаsettings.instanceSpec.backup.s3.region
- регион бакетаsettings.instanceSpec.backup.s3.accessKey
- ключ доступа для бакетаsettings.instanceSpec.backup.s3.secretKey
- секретный ключ для бакета
settings.instanceSpec.backup.persistentVolumeClaim
- раздел для описания параметров постоянного хранилища Kubernetes, используемого во время резервного копирования и восстановленияsettings.instanceSpec.backup.persistentVolumeClaim.enabled
- использовать ли постоянные тома. В противном случае будет использоватьсяemptyDir
settings.instanceSpec.backup.persistentVolumeClaim.storageClass
- использовать ли конкретный storageClass Kubernetes для постоянных томов
settings.instanceSpec.gitData
- все, что связано с вашими данными Gitsettings.instanceSpec.gitData.storageClass
- storageClass Kubernetes для использования с постоянными томамиsettings.instanceSpec.gitData.storagePerReplicaGb
- размер всех данных Git. Необходим для расчета размера томов для каждой репликиsettings.instanceSpec.gitData.resources
- секция определяет размер ресурсов на ресурсов, обслуживающих данные Git (gitaly)settings.instanceSpec.gitData.resources.memory
- выделенное количество RAMsettings.instanceSpec.gitData.resources.cpu
- выделенное количество CPU
settings.instanceSpec.storages
- все, что связано с хранилищами, используемымиCode
. В настоящее время поддерживаются только внешние хранилищаsettings.instanceSpec.storages.postgres
- раздел с настройками базы данных PostgreSQLsettings.instanceSpec.storages.postgres.mode
- использовать внешнюю или внутреннюю базу данныхsettings.instanceSpec.storages.postgres.external
- раздел с настройками внешней базы данных PostgreSQLsettings.instanceSpec.storages.postgres.external.host
- FQDN-адрес сервера базы данныхsettings.instanceSpec.storages.postgres.external.port
- порт базы данных PostgreSQLsettings.instanceSpec.storages.postgres.external.database
- основное имя базы данныхsettings.instanceSpec.storages.postgres.external.username
- имя пользователя для основной базы данныхsettings.instanceSpec.storages.postgres.external.password
- пароль для основной базы данныхsettings.instanceSpec.storages.postgres.external.praefectDatabase
- имя базы данных для Praefectsettings.instanceSpec.storages.postgres.external.praefectUsername
- имя пользователя для базы данных Praefectsettings.instanceSpec.storages.postgres.external.praefectPassword
- пароль для базы данных Praefect
settings.instanceSpec.storages.postgres.internal
- в настоящее время не поддерживается. Раздел для будущего использования
settings.instanceSpec.storages.redis
- раздел с настройками брокера сообщений Redissettings.instanceSpec.storages.redis.mode
- будет использоваться внешний или встроенный брокер сообщенийsettings.instanceSpec.storages.redis.external
- раздел с настройками внешнего брокера сообщений Redissettings.instanceSpec.storages.redis.external.auth
- раздел для аутентификации Redissettings.instanceSpec.storages.redis.external.auth.enabled
- включена ли аутентификация для внешнего Redissettings.instanceSpec.storages.redis.external.auth.password
- пароль для Redis, если аутентификация включена
settings.instanceSpec.storages.redis.external.host
- FQDN для единственного экземпляра Redis. Не требуется, если используются sentinelssettings.instanceSpec.storages.redis.external.port
- порт для единственного экземпляра Redis. Не требуется, если используются sentinelssettings.instanceSpec.storages.redis.external.sentinels
- раздел с массивом для карт хостов и портов sentinels. Необходим только при использовании sentinelssettings.instanceSpec.storages.redis.external.sentinels.host
- хост конкретного экземпляра sentinelsettings.instanceSpec.storages.redis.external.sentinels.port
- порт конкретного экземпляра sentinel
settings.instanceSpec.storages.redis.external.masterName
- имя мастер-узла. Используется только с sentinels
settings.instanceSpec.storages.redis.internal
- в настоящее время не поддерживается. Раздел для будущего использования
settings.instanceSpec.storages.s3
- раздел с настройками объектного хранилищаsettings.instanceSpec.storages.s3.mode
- будет использоваться внешнее или встроенное объектное хранилищеsettings.instanceSpec.storages.s3.bucketNames
- мапа (ключ-значение), указывающая имена для всех необходимых бакетовsettings.instanceSpec.storages.s3.bucketNames.artifacts
settings.instanceSpec.storages.s3.bucketNames.ciSecureFiles
settings.instanceSpec.storages.s3.bucketNames.dependencyProxy
settings.instanceSpec.storages.s3.bucketNames.externalDiffs
settings.instanceSpec.storages.s3.bucketNames.lfs
settings.instanceSpec.storages.s3.bucketNames.packages
settings.instanceSpec.storages.s3.bucketNames.terraformState
settings.instanceSpec.storages.s3.bucketNames.uploads
settings.instanceSpec.storages.s3.external
- раздел с параметрами для внешнего объектного хранилищаsettings.instanceSpec.storages.s3.external.provider
- провайдер объектного хранилищаsettings.instanceSpec.storages.s3.external.region
- регион бакетовsettings.instanceSpec.storages.s3.external.endpoint
- endpoint бакетовsettings.instanceSpec.storages.s3.external.accessKey
- ключ доступа к бакетамsettings.instanceSpec.storages.s3.external.secretKey
- секретный ключ для бакетовsettings.instanceSpec.storages.s3.external.storageOptions
- раздел с низкоуровневыми настройками шифрования для объектного хранилища компонентаsettings.instanceSpec.storages.s3.external.storageOptions.serverSideEncryption
- режим шифрования (AES256 или aws:kms)settings.instanceSpec.storages.s3.external.storageOptions.serverSideEncryptionKmsKeyId
- Amazon Resource Name. Необходим только при использовании aws:kms для serverSideEncryption
settings.instanceSpec.storages.s3.internal
- в настоящее время не поддерживается. Раздел для будущего использования
settings.instanceSpec.network
- раздел для настройки параметров сетиsettings.instanceSpec.network.web
- раздел для настройки сети веб-сервиса (UI)settings.instanceSpec.network.web.hostname
- верхний префикс для имени хоста UIsettings.instanceSpec.network.web.annotations
- дополнительные аннотации (в формате ключ-значение) для развертывания веб-сервисаsettings.instanceSpec.network.web.https
- раздел с настройками https, в частности с параметрами, связанными с сертификатамиsettings.instanceSpec.network.web.https.mode
- способ хранения/выдачи сертификата. Может быть custom/certManager/globalsettings.instanceSpec.network.web.https.customCertificate.secretName
- имя секрета, где хранится пользовательский сертификатsettings.instanceSpec.network.web.https.certManager.clusterIssuerName
- имя кластерного issuer для SSL-сертификатов
settings.instanceSpec.network.gitSsh
- раздел для настройки сети компонента shell (для поддержки git по SSH)settings.instanceSpec.network.gitSsh.hostname
- переопределение имени хоста shell для отличия от стандартногоsettings.instanceSpec.network.gitSsh.annotations
- дополнительные аннотации (в формате ключ-значение) для развертывания shellsettings.instanceSpec.network.gitSsh.service
- раздел с настройками kubernetes-сервиса для компонента shellsettings.instanceSpec.network.gitSsh.service.type
- тип kubernetes-сервиса для экспонирования компонента shell. Для одноузлового кластера подходит nodePort, для остальных рекомендуется LoadBalancersettings.instanceSpec.network.gitSsh.service.nodePort
- nodePort для экспонирования сервиса. Применимо только для service.type=NodePort
settings.instanceSpec.features
- другие необязательные компоненты, которые включаются по требованию. Вся конфигурация ниже относится к компонентамsettings.instanceSpec.features.runnerController
- раздел для включения и настройки компонента runner-controllersettings.instanceSpec.features.runnerController.enabled
- включать ли развертывание компонента
settings.instanceSpec.features.mail
- раздел с настройками для различных типов почты: входящей, исходящей, serviceDesksettings.instanceSpec.features.mail.outgoingEmail
- раздел с настройками для исходящей почты. Подробнее о параметрах можно прочитать здесьsettings.instanceSpec.features.mail.outgoingEmail.displayName
settings.instanceSpec.features.mail.outgoingEmail.from
settings.instanceSpec.features.mail.outgoingEmail.replyTo
settings.instanceSpec.features.mail.outgoingEmail.subjectSuffix
settings.instanceSpec.features.mail.outgoingEmail.smtp
settings.instanceSpec.features.mail.outgoingEmail.smtp.enabled
settings.instanceSpec.features.mail.outgoingEmail.smtp.address
settings.instanceSpec.features.mail.outgoingEmail.smtp.port
settings.instanceSpec.features.mail.outgoingEmail.smtp.authentication
settings.instanceSpec.features.mail.outgoingEmail.smtp.username
settings.instanceSpec.features.mail.outgoingEmail.smtp.password
settings.instanceSpec.features.mail.outgoingEmail.smtp.domain
settings.instanceSpec.features.mail.outgoingEmail.smtp.tls
settings.instanceSpec.features.mail.outgoingEmail.smtp.starttlsAuto
settings.instanceSpec.features.mail.outgoingEmail.smtp.opensslVerifyMode
settings.instanceSpec.features.mail.incomingEmail
- раздел с настройками для входящей почты. Подробнее о параметрах можно прочитать здесьsettings.instanceSpec.features.mail.incomingEmail.enabled
settings.instanceSpec.features.mail.incomingEmail.address
settings.instanceSpec.features.mail.incomingEmail.host
settings.instanceSpec.features.mail.incomingEmail.port
settings.instanceSpec.features.mail.incomingEmail.ssl
settings.instanceSpec.features.mail.incomingEmail.startTls
settings.instanceSpec.features.mail.incomingEmail.user
settings.instanceSpec.features.mail.incomingEmail.password
settings.instanceSpec.features.mail.serviceDeskEmail
- раздел с настройками для почты службы поддержки. Подробнее о параметрах можно прочитать здесьsettings.instanceSpec.features.mail.incomingEmail.enabled
settings.instanceSpec.features.mail.incomingEmail.address
settings.instanceSpec.features.mail.incomingEmail.host
settings.instanceSpec.features.mail.incomingEmail.port
settings.instanceSpec.features.mail.incomingEmail.ssl
settings.instanceSpec.features.mail.incomingEmail.startTls
settings.instanceSpec.features.mail.incomingEmail.user
settings.instanceSpec.features.mail.incomingEmail.password
settings.instanceSpec.features.pages
- раздел с настройками компонента Pagessettings.instanceSpec.features.pages.enabled
- включить ли компонентsettings.instanceSpec.features.pages.s3
- раздел с настройками объектного хранилища для компонентаsettings.instanceSpec.features.pages.s3.mode
- использовать внешнее или встроенное объектное хранилищеsettings.instanceSpec.features.pages.s3.bukcetPrefix
- префикс для имени бакетов. Финальные имена будут иметь вид {prefix}-{name}settings.instanceSpec.features.pages.s3.internal
- в настоящее время не поддерживается. Для будущего использованияsettings.instanceSpec.features.pages.s3.external
- раздел с настройками внешнего объектного хранилищаsettings.instanceSpec.features.pages.s3.external.endpoint
- пользовательский endpoint для объектного хранилищаsettings.instanceSpec.features.pages.s3.external.provider
- провайдер объектного хранилищаsettings.instanceSpec.features.pages.s3.external.region
- регион бакетовsettings.instanceSpec.features.pages.s3.external.accessKey
- ключ доступа к бакетуsettings.instanceSpec.features.pages.s3.external.secretKey
- секретный ключ для бакетаsettings.instanceSpec.features.pages.s3.external.azureAccountName
- имя учетной записи AzureRMsettings.instanceSpec.features.pages.s3.external.azureAccessKey
- ключ доступа к объектному хранилищу AzureRMsettings.instanceSpec.features.pages.s3.external.storageOptions
- раздел с низкоуровневыми настройками шифрования для объектного хранилища компонентаsettings.instanceSpec.features.pages.s3.external.storageOptions.serverSideEncryption
- режим шифрования (AES256 или aws:kms)settings.instanceSpec.features.pages.s3.external.storageOptions.serverSideEncryptionKmsKeyId
- Amazon Resource Name. Необходим только при использовании aws:kms для serverSideEncryption
settings.instanceSpec.features.registry
- раздел с настройками компонента Registrysettings.instanceSpec.features.registry.enabled
- включить ли компонентsettings.instanceSpec.features.registry.ingress
- раздел с настройками входящих сетевых соединений для компонентаsettings.instanceSpec.features.registry.ingress.https
- настройки https для входящих соединений компонентаsettings.instanceSpec.features.registry.ingress.https.mode
- способ хранения/выдачи сертификата. Может быть custom/certManager/globalsettings.instanceSpec.features.registry.ingress.https.certManager.clusterIssuerName
- имя кластерного issuer для SSL-сертификатовsettings.instanceSpec.features.registry.ingress.https.customCertificate.secretName
- имя секрета, где хранится пользовательский сертификат
settings.instanceSpec.features.registry.s3
- раздел с настройками объектного хранилища для компонентаsettings.instanceSpec.features.registry.s3.mode
- использовать внешнее или встроенное объектное хранилище для компонента Registrysettings.instanceSpec.features.registry.s3.bucketName
- имя бакета для компонента Registrysettings.instanceSpec.features.registry.s3.external
- раздел с настройками внешнего объектного хранилищаsettings.instanceSpec.features.registry.s3.external.provider
- провайдер объектного хранилищаsettings.instanceSpec.features.registry.s3.external.endpoint
- пользовательский endpoint для объектного хранилищаsettings.instanceSpec.features.registry.s3.external.region
- регион бакетовsettings.instanceSpec.features.registry.s3.external.accessKey
- ключ доступа к бакетуsettings.instanceSpec.features.registry.s3.external.secretKey
- секретный ключ для бакетаsettings.instanceSpec.features.registry.s3.external.azureAccountName
- имя учетной записи AzureRMsettings.instanceSpec.features.registry.s3.external.azureAccessKey
- ключ доступа к объектному хранилищу AzureRM
settings.instanceSpec.features.registry.s3.internal
- в настоящее время не поддерживается. Для будущего использованияsettings.instanceSpec.features.registry.s3.bucketName
- имя бакета, который будет использоваться как объектное хранилище для Registry
settings.instanceSpec.features.registry.maintenance
- раздел с настройками обслуживания Registrysettings.instanceSpec.features.registry.maintenance.readOnly
- перевести ли Registry в режим только для чтения во время обслуживанияsettings.instanceSpec.features.registry.maintenance.uploadPurging
- раздел описывает функцию обслуживания, удаляющую артефакты загрузки изображений из хранилища (данные изображений не удаляются)settings.instanceSpec.features.registry.maintenance.uploadPurging.enabled
- включить ли функцию uploadPurging. Выключено в режиме readOnlysettings.instanceSpec.features.registry.maintenance.uploadPurging.age
- возраст артефактов для удаления, измеряется в часахsettings.instanceSpec.features.registry.maintenance.uploadPurging.interval
- интервал запускаsettings.instanceSpec.features.registry.maintenance.uploadPurging.dryrun
- использовать ли в тестовом/проверочном режиме