Override the Default System YAML File in Helm Installation

Override system.yaml in Helm deployments using extraSystemYaml, extraEnvironmentVariables, or systemYamlOverride secret.

The system.yaml is one of the most important configuration files for JFrog products. The Helm charts populate it with default values you can modify in values.yaml, such as artifactory.database.maxOpenConnections.

In advanced cases, you may need values that values.yaml cannot set directly.

You can use the following methods to override the system.yaml in the order of preference:

  1. Using extraSystemYaml
  2. Using extraEnvironmentVariables
  3. Using External system.yaml (systemYamlOverride secret)

Using extraSystemYaml

📘

Note

Starting from Artifactory version 107.84.x, use extraSystemYaml to override the system.yaml file.

Add the values to override in the following sections:

  • artifactory.extraSystemYaml for Artifactory
  • xray.extraSystemYaml for Xray
  • distribution.extraSystemYaml for Distribution

The chart merges entries under extraSystemYaml with the system.yaml file at (files/system.yaml) to create the final system.yaml. Add values correctly — the product silently ignores typos and wrong keys:

Artifactory

artifactory:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120

Xray

xray:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120

Distribution

distribution:
  extraSystemYaml:
    shared:
      security:
        bootstrapKeysReadTimeoutSecs: 120

Using extraEnvironmentVariables

You can also modify system.yaml parameters via environment variables. Variables must start with JF, use underscores between key segments, and use all-uppercase keys.

For example, the system.yaml parameter shared.security.bootstrapKeysReadTimeoutSecs=120 maps to the environment variable JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS.

Add the values to override in the following sections:

  • artifactory.extraEnvironmentVariables for Artifactory
  • xray.extraEnvironmentVariables for Xray
  • distribution.extraEnvironmentVariables for Distribution

Artifactory

artifactory:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"

Xray

xray:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"

Distribution

distribution:
  extraEnvironmentVariables:
    - name: JF_SHARED_SECURITY_BOOTSTRAPKEYSREADTIMEOUTSECS
      value: "120"

Using External System.yaml Secret

⚠️

Warning

This method is not recommended because system.yaml is already generated under files/system.yaml, by incorporating values from values.yaml. Using this method forces you to manage system.yaml manually and should only be used for legacy regressions.

Follow these steps to create an external system.yaml as a Kubernetes secret:

  1. Create an external system.yaml file for one of the services. For example, Xray, and create an external system.yaml with the filename (xray-cus-sy.yaml):

    configVersion: 1
    shared:
        logging:
            consoleLog:
                enabled: true
        jfrogUrl: "http://artifactory-artifactory.rt:8082"
        database:
            type: "postgresql"
            driver: "org.postgresql.Driver"
            username: "xray"
            url: "postgres://xray-postgresql:5432/xraydb?sslmode=disable"
    server:
        mailServer: ""
        indexAllBuilds: "true"
  2. Create a Kubernetes secret for the external system.yaml file (xray-cus-sy.yaml):

    kubectl create secret generic sy --from-file ./xray-cus-sy.yaml
  3. Reference the secret and its key under the systemYamlOverride section. These steps are the same for Artifactory and Distribution charts:

    systemYamlOverride:
      existingSecret: sy
      dataKey: xray-cus-sy.yaml