Preliminary version. The functionality may change, but the basic features will be preserved. Compatibility with future versions is ensured, but may require additional migration actions.

Code components overview

Section provides high-level overview of existing components and their functions

  1. Gitaly - git RPC service for handling all Git calls made by GitLab
  2. Praefect - a transparent proxy between any Git client and Gitaly storage nodes.
  3. Sidekiq - background jobs processor
  4. Webservice - exposes product UI and public API
  5. Webservice-internal-api - serves API request from other components of Gitlab
  6. Shell - a program designed at GitLab to handle SSH-based git sessions, and modifies the list of authorized keys
  7. Toolbox - a swiss-knife that enables administrators to do restore from backups or use rails-console
  8. Exporter - process designed in house that allows us to export metrics about Code application internals to Prometheus
  9. MRA - stands for merge request approval. A service that implements corresponding Gitlab functionality along with CODEOWNERS feature
  10. Migrations-job - job that does database migrations
  11. Backup-cronjob - cronjob responsible for backup process
  12. Pages - a feature that allows you to publish static websites directly from a repository in GitLab. Optional component
  13. Registry - Container registry, allows pushing and pulling of images. Optional component

To learn more about specific components and their purposes you can do here in official documentation.


Full CodeInstance CRD

Take into account that some parameters might be mutually exclusive (like redis.host and redis.sentinel)

apiVersion: deckhouse.io/v1
kind: CodeInstance
metadata:
  name: code
spec:
  appConfig:
    contentSecurityPolicy:
      enabled: <bool>
      reportOnly: <bool>
      directives: { }
    cronJobs:
      <cron job name>:
        cron: string
        jobClass: string
    customHtmlHeaderTags: <string>
    ldap:
      preventSignin: <bool>
      servers:
        main:
          label: <string>
          host: <string>
          port: <int>
          uid: <string>
          base: <string>
          encryption: <string>
          verifyCertificates: <bool>
          timeout: <int>
          activeDirectory: <bool>
          allowUsernameOrEmailLogin: <bool>
          blockAutoCreatedUsers: <bool>
          userFilter: <string>
          lowercaseUsernames: <bool>
          bindDn: <string>
          password: <string>
          attributes:
            username: <array>
            email: <array>
            name: <string>
            firstName: <string>
            lastName: <string>
    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>
  backup:
    backupBeforeUpdate: <bool>
    backupStorageGb: <int>
    enabled: <bool>
    s3:
      bucketName: <string>
      tmpBucketName: <string>
      external:
        accessKey: <string>
        endpoint: <string>
        provider: <string>
        region: <string>
        secretKey: <string>
    cronSchedule: <string>
    skipComponents: <array>
    nodeSelector: {}
    tolerations: {}
    persistentVolumeClaim:
      enabled: <bool>
      storageClass: <string>
  gitData:
    storagePerReplicaGb: <int>
    storageClass: <string>
    resources:
      memory: <string>
      cpu: <string>
  storages:
    postgres:
      mode: <string>
      external:
        host: <string>
        port: <int>
        database: <string>
        username: <string>
        password: <string>
        praefectDatabase: <string>
        praefectUsername: <string>
        praefectPassword: <string>
        sslMode: <string>
      intenal: { }
    redis:
      mode: <string>
      external:
        auth:
          enabled: <bool>
          passowrd: <string>
          username: <string>
        host: <string>
        port: <string>
        sentinels: <array>
        masterName: <string>
        scheme: <string>
        serverCA: <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>
        proxyDownload: <bool>
        storageOptions:
          serverSideEncryption: <string>
          serverSideEncryptionKmsKeyId: <string>
      internal: { }
  network:
    ingressClass: <string>
    useOwnLoadBalancer: <bool>
    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:
        annotations: {}
        hostname: <string>
        https:
          mode: <string>
          customCertificate:
            secretName: <string>
          certManager:
            clusterIssuerName: <string>
      maintenance:
        readOnly:
          enabled: <bool>
        uploadPuring:
          enabled: <bool>
          age: <string>
          interval: <string>
          dryrun: <bool>
  scaling:
    highAvailability: <bool>
    targetUserCount: <int>

Detailed fields description

If you look for allowed or default values for specific parameter - please check that section. Most of parameters are optional and have reasonable defaults. Specific examples of configurations for particular sections can be found here

  • appConfig - application-config of Code. Semantically identical to gitlab.rb of Gitlab to facilitate ease of transferring app settings from existing instance
    • appConfig.contentSecurityPolicy - section with Content Security Policy settings. Read more here
      • appConfig.contentSecurityPolicy.enabled - Enable Content Security Policy
      • appConfig.contentSecurityPolicy.reportOnly - Enable Content Security Policy in report-only mode
      • appConfig.contentSecurityPolicy.directives - Content Security Policy directives
    • appConfig.cronJobs - List of periodically executed jobs, to self-heal, do external synchronizations, etc.
      • appConfig.cronJobs.<cron_job_name>.cron - Schedule for job
      • appConfig.cronJobs.<cron_job_name>.jobClass - Override job class
    • appConfig.customHtmlHeaderTags - set additional custom HTML header tags for UI
    • appConfig.omniauth - section with omniauth Read more here
      • appConfig.omniauth.enabled - enable OmniAuth
      • appConfig.omniauth.allowBypassTwoFactor - sign in without using two-factor authentication (2FA) with certain OmniAuth provider
      • appConfig.omniauth.allowSingleSignOn - defines the list of providers that can be used for single sign-on
      • appConfig.omniauth.autoLinkLdapUser - automatically link OmniAuth users with existing GitLab users if their email addresses match
      • appConfig.omniauth.autoLinkSamlUser - automatically link OmniAuth users with existing GitLab users if their email addresses match
      • appConfig.omniauth.autoLinkUser - automatically link OmniAuth users with existing GitLab users if their email addresses match
      • appConfig.omniauth.autoSignInWithProvider - to redirect login requests to your OmniAuth provider for authentication
      • appConfig.omniauth.blockAutoCreatedUsers - Places automatically-created users in a pending approval state (unable to sign in) until they are approved by an administrator
      • appConfig.omniauth.syncProfileAttributes - List of profile attributes to sync from the provider when signing in
      • appConfig.omniauth.syncProfileFromProvider - List of provider names that GitLab should automatically sync profile information from
      • appConfig.omniauth.externalProviders - Enables you to define which OmniAuth providers you want to be external, so that all users creating accounts, or signing in through these providers are unable to access internal projects
      • appConfig.omniauth.providers - The provider names are available in the supported providers list
    • appConfig.ldap - section with LDAP integration settings.
      • appConfig.ldap.preventSignin - Disable web sign in for LDAP users.
      • appConfig.ldap.servers
        • appConfig.ldap.servers.main.label - A human-friendly name for LDAP server.
        • appConfig.ldap.servers.main.host - FQDN-address of LDAP server.
        • appConfig.ldap.servers.main.port - The port to connect with on LDAP server.
        • appConfig.ldap.servers.main.uid - The LDAP attribute that maps to the username that users use to sign in.
        • appConfig.ldap.servers.main.base - Base DN where we can search for users.
        • appConfig.ldap.servers.main.encryption - Encryption method for connection.
        • appConfig.ldap.servers.main.verifyCertificates - Enables SSL certificate verification if encryption method is “StartTls” or “SimpleTls”.
        • appConfig.ldap.servers.main.timeout - Set a timeout, in seconds, for LDAP queries.
        • appConfig.ldap.servers.main.activeDirectory - setting specifies if LDAP server is Active Directory LDAP server.
        • appConfig.ldap.servers.main.allowUsernameOrEmailLogin - If enabled, GitLab ignores everything after the first @ in the LDAP username submitted by the user on sign-in.
        • appConfig.ldap.servers.main.blockAutoCreatedUsers - Setting to keep new users blocked until they have been cleared by an administrator.
        • appConfig.ldap.servers.main.userFilter - Filter LDAP users. Follows the format of RFC 4515.
        • appConfig.ldap.servers.main.lowercaseUsernames - If enabled, GitLab converts the name to lower case.
        • appConfig.ldap.servers.main.bindDn - The full DN of the user you bind with.
        • appConfig.ldap.servers.main.password - The password of the bind user.
        • appConfig.ldap.servers.main.attributes - Settings with LDAP attributes mapping.
          • appConfig.ldap.servers.main.attributes.username - The @username that the Code account will be provisioned with. If the value contains an email address, the Code username is the part of the email address before the @.
          • appConfig.ldap.servers.main.attributes.email - LDAP attribute for user email.
          • appConfig.ldap.servers.main.attributes.name - LDAP attribute for user display name.
          • appConfig.ldap.servers.main.attributes.firstName - LDAP attribute for user first name.
          • appConfig.ldap.servers.main.attributes.lastName - LDAP attribute for user last name.
        • appConfig.ldap.servers.main.syncName - Sync user name from LDAP
        • appConfig.ldap.servers.main.groupSync - Settings for group and membership sync
          • appConfig.ldap.servers.main.groupSync.createGroups - Create groups automatically
          • appConfig.ldap.servers.main.groupSync.base - Base DN where we can search for groups
          • appConfig.ldap.servers.main.groupSync.filter - Filter LDAP groups. Follows the format of RFC 4515
          • appConfig.ldap.servers.main.groupSync.prefix - Defines which attributes contains info about parent group. If attribute not found, default value is used
            • appConfig.ldap.servers.main.groupSync.prefix.attribute - name of LDAP group attribute containing info about parent group
            • appConfig.ldap.servers.main.groupSync.prefix.default - default Gitlab group to be parent if prefix.attribute is empty for certain LDAP group
          • appConfig.ldap.servers.main.groupSync.topLevelGroup - Top level group where groups will be created. Omit if you need top level groups
          • appConfig.ldap.servers.main.groupSync.nameMaksk - Regular expressions to retrieve group name from DN
          • appConfig.ldap.servers.main.groupSync.owner - User to set as owner of all created groups
          • appConfig.ldap.servers.main.groupSync.scope - Search scope (0 — Base, 1 — SingleLevel, 2 — WholeSubtree)
          • appConfig.ldap.servers.main.groupSync.roleMapping - List of role mapping dictionaries. Each dictionary should contain byName and gitlabRole keys. byName is a regular expression for group name. If group name matches expressions, permissions will be granted according to gitlabRole parameter
    • appConfig.rackAttack.gitlabBasicAuth - rate limiter Gitlab uses to customize throttling and blocking users. More info here
      • appConfig.rackAttack.gitlabBasicAuth.ipWhitelist - list of IPs not falling under the rackAttack rules
      • appConfig.rackAttack.gitlabBasicAuth.maxretry - Limit the number of Git HTTP authentication attempts per IP
      • appConfig.rackAttack.gitlabBasicAuth.findtime - Reset the auth attempt counter per IP after N seconds
      • appConfig.rackAttack.gitlabBasicAuth.bantime - Ban an IP for N seconds after too many auth attempts
    • appConfig.signinEnabled - whether to enable sign-in page or not
    • appConfig.signupEnabled - whether to allow sign-up for new users or not
    • appConfig.usernameChangeEnabled - allow username changes for existing users
    • appConfig.defaultColorMode - UI default color theme
  • backup - section related to product backup process
    • backup.enabled - whether backup process enabled or not
    • backup.backupBeforeUpdate - automatic creation of a full backup of GitLab components before updating the module
    • backup.cronSchedule - cron-like schedule when to run backup operations
    • backup.backupStorageGb - expected overall size of backups (tar archive) to tune up underlying storage
    • backup.nodeSelector - kubernetes selector to choose node where to run backup process from (by toolbox)
    • backup.tolerations - tolerations for backup pod(toolbox). Used during scheduling
    • backup.skipComponents - list of components to skip during backup
    • backup.s3 - section to describe params of remote object storage that will keep your backups
      • backup.s3.external - configuration block for setting up parameters of the S3 storage. If this section is not specified at all, the settings from the storages.s3.external section will be used, and it will be sufficient to just specify backup.s3.bucketName
        • backup.s3.bucketName - name of the bucket in object storage
        • backup.s3.tmpBucketName - name of the temp bucket where backups will be stored before upload to objectStorage
        • backup.s3.external.provider - object storage provider
        • backup.s3.external.region - bucket region
        • backup.s3.external.endpoint - buckets endpoint
        • backup.s3.external.accessKey - access key for the bucket
        • backup.s3.external.secretKey - secret key for the bucket
    • backup.persistentVolumeClaim - section to describe params of persistent k8s storage used during backup and restore
      • backup.persistentVolumeClaim.enabled - whether to use persistent volumes. Otherwise emptyDir will be used
      • backup.persistentVolumeClaim.storageClass - whether to use specific k8s storageClass for persistence volumes
  • gitData - everything related to your Git data and their storage
    • gitData.storageClass - kubernetes storageClass to be used for persistence volumes
    • gitData.storagePerReplicaGb - size of all your git data. Needed to calculate size of Volumes for each replica
    • gitData.resources - section defines amount of resources for single workload hosting Git data (gitaly)
      • gitData.resources.memory - amount of RAM allocated to host git data
      • gitData.resources.cpu - amount of RAM allocated to host git data
  • storages - everything related to storages used by Code. Currently only external storages are supported
    • storages.postgres - section with settings for postgres database
      • storages.postgres.mode - whether external or internal database will be used
      • storages.postgres.external - section with settings for external postgres database
        • storages.postgres.external.host - FQDN address of database server
        • storages.postgres.external.port - port exposed by postgres database for connection
        • storages.postgres.external.database - main database name
        • storages.postgres.external.username - username for main database
        • storages.postgres.external.password - password for main database
        • storages.postgres.external.praefectDatabase - praefect(secondary) database name
        • storages.postgres.external.praefectUsername - username for praefect database
        • storages.postgres.external.praefectPassword - password for praefect database
        • storages.postgres.external.sslMode - SSL connection priority
      • storages.postgres.internal - currently not supported. Section is for future use
    • storages.redis - section with settings for redis message broker
      • storages.redis.mode - whether external or internal message broker will be used
      • storages.redis.external - section with settings for external redis message broker
        • storages.redis.external.auth - redis auth section
          • storages.redis.external.auth.enabled - whether authentication for external redis enabled or not
          • storages.redis.external.auth.password - redis password, if auth is enabled
          • storages.redis.external.auth.username - redis username, if auth is enabled
        • storages.redis.external.host - FQDN for single redis instance. Not needed when sentinels used
        • storages.redis.external.port - port for single redis instance. Not needed when sentinels used
        • storages.redis.external.serverCA - CA certificate for redis server
        • storages.redis.external.sentinels - section with array for sentinels host and port maps. Needed only if sentinel used
          • storages.redis.external.sentinels.host - host of particular sentinel instance
          • storages.redis.external.sentinels.port - port of particular sentinel instance
        • storages.redis.external.scheme - redis connection scheme
        • storages.redis.external.masterName - name of master node. For sentinels only
      • storages.redis.internal - currently not supported. Section is for future use
    • storages.s3 - section with settings for object storage
      • storages.s3.mode - whether external or internal object storage will be used
      • storages.s3.bucketNames - section with map that specifies names to be used for all needed buckets
        • storages.s3.bucketNames.artifacts - name of the bucket for artifacts
        • storages.s3.bucketNames.ciSecureFiles - name of the bucket for CI secure files like CI secrets
        • storages.s3.bucketNames.dependencyProxy - name of the bucket for dependency proxy
        • storages.s3.bucketNames.externalDiffs - name of the bucket for MR diffs
        • storages.s3.bucketNames.lfs - name of the bucket for git-lfs
        • storages.s3.bucketNames.packages - name of the bucket for packages
        • storages.s3.bucketNames.terraformState - name of the bucket for terraform states
        • storages.s3.bucketNames.uploads - name of the bucket for uploads
      • storages.s3.external - section with parameters for external object storage
        • storages.s3.external.provider - object storage provider
        • storages.s3.external.region - buckets region
        • storages.s3.external.endpoint - buckets endpoint
        • storages.s3.external.proxyDownload - Option allows to reduce egress traffic as this allows clients to download directly from remote storage instead of proxying all data
        • storages.s3.external.accessKey - access key for the buckets
        • storages.s3.external.secretKey - secret key for the buckets
        • storages.s3.external.storageOptions - section contains low-level encryption configuration for component’s object storage
          • storages.s3.external.storageOptions.serverSideEncryption - Encryption mode (AES256 or aws:kms)
          • storages.s3.external.storageOptions.serverSideEncryptionKmsKeyId - Amazon Resource Name. Only needed when aws:kms is used for serverSideEncryption
      • storages.s3.internal - currently not supported. Section is for future use
  • network - section for network configuration customization
    • network.ingressClass - ingress class to use in module
    • network.useOwnLoadBalancer - if true define one LoadBalance service for both Git SSH and UI.
    • network.web - section for webservice (UI) network customization
      • network.web.hostname - top-level custom prefix for UI hostname
      • network.web.annotations - map of additional annotations(key-value format) to be populated for webservice deployment
      • network.web.https - section describes https settings, specifically parameters related to certificates
        • network.web.https.mode - way you store/issue certificate. Might be custom/certManager/global
          • network.web.https.customCertificate.secretName - name of secret where custom certificate is stored
          • network.web.https.certManager.clusterIssuerName - name of cluster issuer of SSL certificates
    • network.gitSsh - section for shell (component intended for git support over SSH) network customization
      • network.gitSsh.hostname- override shell-hostname name to be different rather than default one
      • network.gitSsh.service - section contains settings related to kubernetes service for shell component
        • network.gitSsh.service.annotations - map of additional annotations(key-value format) to be populated for shell deployment
        • network.gitSsh.service.type - type of kubernetes service for exposing your shell component. For singleNode cluster nodePort is reasonable, otherwise LoadBalancer is recommended
        • network.gitSsh.service.nodePort - nodePort used to expose your service. Applicable only for service.type=NodePort
  • features - other optional components to be enabled on-demand basis. So all configuration below is component-based
    • features.mail - section contains settings for different emails: incoming / outgoing / serviceDesk
      • features.mail.outgoingEmail - section contains configuration for outgoing email. Read more about params here
        • features.mail.outgoingEmail.displayName - Name that appears as the sender for emails from GitLab
        • features.mail.outgoingEmail.from - Email address that appears as the sender for emails from GitLab
        • features.mail.outgoingEmail.replyTo - Reply-to email listed in emails from GitLab
        • features.mail.outgoingEmail.subjectSuffix - Suffix on the subject of all outgoing email from GitLab
        • features.mail.outgoingEmail.smtp
          • features.mail.outgoingEmail.smtp.enabled - enable outgoing email
          • features.mail.outgoingEmail.smtp.address - Hostname or IP of the remote mail server
          • features.mail.outgoingEmail.smtp.port - Port for SMTP
          • features.mail.outgoingEmail.smtp.authentication - Type of SMTP authentication (“plain”, “login”, “cram_md5”, or "" for no authentication)
          • features.mail.outgoingEmail.smtp.username - Username for SMTP authentication https
          • features.mail.outgoingEmail.smtp.password - SMTP password
          • features.mail.outgoingEmail.smtp.domain - Optional HELO domain for SMTP
          • features.mail.outgoingEmail.smtp.tls - Enables SMTP/TLS (SMTPS: SMTP over direct TLS connection)
          • features.mail.outgoingEmail.smtp.starttlsAuto - Use STARTTLS if enabled on the mail server
          • features.mail.outgoingEmail.smtp.opensslVerifyMode TLS verification mode (“none”, “peer”, “client_once”, or “fail_if_no_peer_cert”)
      • features.mail.incomingEmail - section contains configuration for incoming email. Read more about params here
        • features.mail.incomingEmail.enabled - enable incoming email
        • features.mail.incomingEmail.address - The email address to reference the item being replied to (example: gitlab-incoming+%{key}@gmail.com). Note that the +%{key} suffix should be included in its entirety within the email address and not replaced by another value.
        • features.mail.incomingEmail.host - Host for IMAP
        • features.mail.incomingEmail.port - Port for IMAP
        • features.mail.incomingEmail.ssl - Whether IMAP server uses SSL
        • features.mail.incomingEmail.startTls - Whether IMAP server uses StartTLS
        • features.mail.incomingEmail.user - Username for IMAP authentication
        • features.mail.incomingEmail.password - IMAP password
        • features.mail.serviceDeskEmail - section contains configuration for service desk email. Read more about params here
          • features.mail.incomingEmail.serviceDeskEmail.enabled - Enable Service Desk email
          • features.mail.incomingEmail.serviceDeskEmail.address - The email address to reference the item being replied to (example: project_contact+%{key}@gmail.com)
          • features.mail.incomingEmail.serviceDeskEmail.host - Host for IMAP
          • features.mail.incomingEmail.serviceDeskEmail.port - Port for IMAP
          • features.mail.incomingEmail.serviceDeskEmail.ssl - Whether IMAP server uses SSL
          • features.mail.incomingEmail.serviceDeskEmail.startTls - Whether IMAP server uses StartTLS
          • features.mail.incomingEmail.serviceDeskEmail.user - Username for IMAP authentication
          • features.mail.incomingEmail.serviceDeskEmail.password - IMAP password
    • features.pages - section contains configuration parameters for Page component
      • features.pages.enabled - whether enable component or not
      • features.pages.s3 - section contains configuration parameters for component’s object storage
        • features.pages.s3.mode - whether use external or internal object storage
        • features.pages.s3.bukcetPrefix - prefix for buckets names. Real bucket name will-be {prefix}-{name}
        • features.pages.s3.internal - not currently supported. For future use
        • features.pages.s3.external - section with parameters for external object storage
          • features.pages.s3.external.endpoint - custom endpoint for object storage
          • features.pages.s3.external.provider - object storage provider
          • features.pages.s3.external.region - buckets region
          • features.pages.s3.external.accessKey - access key for the bucket
          • features.pages.s3.external.secretKey - secret key for the bucket
          • features.pages.s3.external.storageOptions - section contains low-level encryption configuration for component’s object storage
            • features.pages.s3.external.storageOptions.serverSideEncryption - Encryption mode (AES256 or aws:kms)
            • features.pages.s3.external.storageOptions.serverSideEncryptionKmsKeyId - Amazon Resource Name. Only needed when aws:kms is used for serverSideEncryption
    • features.registry - section contains configuration parameters for Registry component
      • features.registry.enabled - whether enable component or not
      • features.registry.ingress - section contains configuration parameters for component’s ingress(incoming) network connections
        • features.registry.ingress.annotations - map of additional annotations to be populated for registry service
        • features.registry.ingress.hostname - top-level prefix for registry hostname
        • features.registry.ingress.https - https configuration for component’s ingress(incoming) network connections
          • features.registry.ingress.https.mode - way you store/issue certificate. Might be custom/certManager/global
          • features.registry.ingress.https.certManager.clusterIssuerName - name of cluster issuer of SSL certificates
          • features.registry.ingress.https.customCertificate.secretName - name of secret where custom certificate is stored
      • features.registry.s3 - section contains configuration parameters for component’s object storage
        • features.registry.s3.mode - whether use external or internal object storage for Registry component
        • features.registry.s3.bucketName - name of registry’s bucket
        • features.registry.s3.external - section with parameters for external object storage
          • features.registry.s3.external.provider - object storage provider
          • features.registry.s3.external.endpoint - custom endpoint for object storage
          • features.registry.s3.external.region - buckets region
          • features.registry.s3.external.accessKey - access key for the bucket
          • features.registry.s3.external.secretKey - secret key for the bucket
        • features.registry.s3.internal - not currently supported. For future use
        • features.registry.s3.bucketName - name of the bucket to be used as object storage for Registry
      • features.registry.maintenance - section contains Registry maintenance settings
        • features.registry.maintenance.readOnly.enabled - Enable read-only mode for registry for maintenance purposes
        • features.registry.maintenance.uploadPurging - section describes another maintenance feature that deletes image upload artifacts from the storage backend, the upload purger does not delete any image data (only upload artifacts)
          • features.registry.maintenance.uploadPurging.enabled - whether to enable uploadPurging or not. Disabled while in readOnly mode
          • features.registry.maintenance.uploadPurging.age - age thresholds for artifacts to be deleted. Measured in hours
          • features.registry.maintenance.uploadPurging.interval - interval of run
          • features.registry.maintenance.uploadPurging.dryrun - whether to use in test / dry-run mode or not
  • scaling
    • scaling.targetUserCount - how many users are expected to use the app. That impacts a lot of underlying aspects responsible for horizontal and vertical app’s scaling. Read more here
    • scaling.highAvailability - whether High Availability (HA) mode enabled or not