Skip to main content

Additional settings

This guide describes the various optional settings that can be configured in your values.yaml, along with their default values. The settings in uppercase are the ones that can be configured in the env section of your values.yaml, the others are regular YAML keys at the top level of the file.

API settings

These settings define how the MintPress API will be exposed on the network. Modifying any of these settings requires a full redeployment of the MintPress application.

OPSCHAIN_API_CERTIFICATE_SECRET_NAME

Default value: none

The Kubernetes TLS secret name containing a custom certificate to be used for the HTTPS listener. When this is set, OPSCHAIN_API_HOST_NAME must also be configured. Learn more.

OPSCHAIN_API_EXTERNAL_PORT

Default value: 3000

The port that will be exposed for accessing the MintPress API service.

env.OPSCHAIN_API_HOST_NAME and api.hostName

Default value: opschain-api

The host name that will be configured for the MintPress API HTTPS listener. This is not required for HTTP access to the API, only for HTTPS access. Learn more

note

These two values must match.

OPSCHAIN_INSECURE_HTTP_PORT_ENABLED

Default value: true

Defines whether the MintPress Ingress should provide an insecure HTTP port to be used for accessing the MintPress API. Learn more.

api.env

Default value: none

Environment variables to be set for the API container.

GUI settings

OPSCHAIN_GUI_BASE_URL

Default value: none

The base URL for the MintPress GUI (e.g. https://opschain.example.com). It is required to ensure links within external notifications are valid and the MintPress API pod will fail to startup if it is not configured.

API/worker database settings

These settings affect how the MintPress API and worker interact with the database.

OPSCHAIN_API_DATABASE_STATEMENT_TIMEOUT

Default values: 50s (50 seconds)

Configures the database statement_timeout for API requests to the MintPress API. This means queries to the database will be terminated if this timeout is exceeded.

Set to 0 to disable this feature (meaning queries will not be terminated).

Queries are terminated to prevent overloading the database.

note

This value would be in milliseconds if no suffix was added. Add the suffix s for seconds (as the default does), min for minutes, h for hours.

OPSCHAIN_WORKER_DATABASE_STATEMENT_TIMEOUT

Default values: 0 (do not timeout)

Configures the database statement_timeout for SQL statements executed within the OpsChain worker. This means queries to the database will be terminated if this timeout is exceeded.

note

This value would be in milliseconds if no suffix was added. Add the suffix s for seconds, min for minutes, h for hours.

Database connection pooling

MintPress can optionally run a CloudNative PostgreSQL (CNPG) session-mode connection pooler in front of the database, reducing the per-connection setup cost (TCP/TLS handshake and authentication) under heavy connection churn. See the database connection pooling guide for when to use it, how to verify it, and how to roll it back.

db.cnpg.pooler.enabled

Default value: false

Whether to deploy a CNPG Pooler (PgBouncer) in front of the database and route PGHOST/PGPORT through it.

note

Mutually exclusive with db.cnpg.primaryHeadlessService.enabled — do not enable both at once.

db.cnpg.pooler.instances

Default value: 2

The number of PgBouncer replicas to deploy for the pooler.

db.cnpg.pooler.pgbouncer.parameters

Default value: {default_pool_size: "300", max_client_conn: "1000"}

Additional PgBouncer parameters, passed through as-is. The defaults raise PgBouncer's own out-of-the-box limits (default_pool_size: 20, max_client_conn: 100), which are lower than MintPress's typical connection volume in session mode. See the database connection pooling guide for how to size the pool for your deployment, and the CNPG connection pooling documentation for the full list of available options.

Database primary headless service

By default, MintPress pods reach the database through the CNPG cluster's primary service, which is a regular ClusterIP service. Kubernetes implements those using network address translation, and a burst of pods connecting at the same moment - for example a large batch of runner pods all starting together - can race the kernel's connection tracking table. The connections that lose the race are dropped, appearing as connection reset by peer in the database logs and as connection pool errors in the runners.

Routing database traffic through a headless service instead removes that translation step, so connections resolve straight to the primary pod's own IP address. Enable it only if you are seeing the connection resets described above - it is not required for typical installations, and it changes nothing about how many connections the database will accept.

db.cnpg.primaryHeadlessService.enabled

Default value: false

Whether to deploy a headless service targeting the database primary and route PGHOST/DATABASE_URL to it, for the API, workers, runners, backups and the secret vault. The service tracks the primary across a failover exactly as the cluster's own primary service does.

note

Mutually exclusive with db.cnpg.pooler.enabled - do not enable both at once, as the two settings resolve PGHOST differently.

A rollout restart is required

As with the connection pooler, Kubernetes does not restart pods automatically when the ConfigMap they read PGHOST from changes. After the helm upgrade, restart the API and worker deployments:

kubectl -n ${KUBERNETES_NAMESPACE} rollout restart deployment/opschain-api deployment/opschain-api-worker

Database backup settings

MintPress can automatically back up its database on a schedule, and again before each upgrade. Scheduled backups are enabled by default. The most commonly adjusted settings are listed below; see the backup & restore guide for the full backup and recovery procedure, and obtaining a full values.yaml from the chart for every available option (retention by age, storage class, pre-deploy tuning, and more).

db.backup.periodic.enabled

Default value: true

Whether scheduled database backups run.

db.backup.periodic.schedule

Default value: 0 2 * * *

The cron expression that controls when scheduled backups run.

db.backup.periodic.method

Default value: physical

The method used for scheduled backups: physical (a full base backup) or logical (a portable dump).

db.backup.retention.count

Default value: 7

The number of most recent backups to keep.

db.backup.storage.size

Default value: 20Gi

The size of the volume that stores backups. Size it for your largest database multiplied by the retention count, with some headroom.

db.backup.preDeploy.enabled

Default value: false

Whether to take a backup automatically before each helm upgrade.

db.backup.imagePullPolicy

Default value: Always

The image pull policy for the backup, recovery and init pods. Always ensures an updated opschain-db image is picked up automatically. Once your nodes have the updated image you may set it to IfNotPresent to skip the per-run registry check.

Authentication settings

OPSCHAIN_AUTH_STRATEGY

Default value: ldap
Accepted values: ldap, local

This setting can be updated via system configuration post installation.

Defines which authentication strategy will be used for user authentication. Currently, only one can be active at any given moment.

Locked out?

If a change to this setting prevents you from signing in (for example, switching to a strategy that no users can authenticate against), you can recover by overriding the setting from a deploy.

warning

Users that are authenticated via LDAP will not be able to login when this variable is set to local and vice-versa.

OPSCHAIN_ENABLE_BASIC_AUTH

Default value: true

Whether to enable basic authentication for the MintPress API. When this is disabled, the only authentication method available is bearer token authentication.

Security implications

When basic authentication is used, the username and password for MintPress are sent in plain text on each request. If the OPSCHAIN_INSECURE_HTTP_PORT_ENABLED setting is also set to true and a client connects via HTTP, their credentials are in greater risk of being compromised.

Token authentication and HTTP

When this setting is false and OPSCHAIN_TOKEN_ENABLE_COOKIES is true, connecting to the MintPress GUI should be done via HTTPS. Otherwise, your session will end on token expiry and you'll need to login again.

OPSCHAIN_TOKEN_ACCESS_EXPIRY

Default value: 240

The number of minutes before a bearer access token expires.

OPSCHAIN_TOKEN_ENABLE_COOKIES

Default value: true

Whether to enable cookies for bearer tokens. When this is true, the bearer tokens will be stored in the client's browser cookies and sent with each request to the MintPress API. When this is false, the bearer tokens will be stored in the client's browser local storage instead.

Secure cookies

Secure cookies cannot be stored in the user's browser cookies if the MintPress GUI is accessed via insecure HTTP. This means that insecure HTTP sessions will end on token expiry and you'll need to login again.

To prevent that, you can set this setting to false or connect to the MintPress GUI via HTTPS.

OPSCHAIN_TOKEN_REFRESH_EXPIRY

Default value: 10080

The number of minutes before a bearer refresh token expires.

Change running settings

apiWorker.replicas

Default value: 1

The number of worker pods that will be deployed to process change and workflow steps.

note

The number of steps that can be processed by MintPress is limited to the number of threads per worker multiplied by this value. E.g. Two workers with five threads per worker can process ten steps concurrently.

apiWorker.terminationGracePeriodSeconds

Default value: 3600

The time, in seconds, given to the worker pods to gracefully shutdown before they are forcefully terminated.

apiWorker.env

Default value: none

Environment variables to be set for the API worker container.

mintModelStepsApi.env

Default value: none

Environment variables to be set for the MintModel Steps API container.

OPSCHAIN_PARALLEL_CHANGE_WORKER_STEPS

Default value: 10

The number of steps that can be run in parallel for a single change.

note

This option should not be set to a value greater than the number of threads per worker multiplied by the number of workers.

OPSCHAIN_REPO_FOLDER

Default value: .mintpress

This setting can be updated via system configuration post installation.

Folder in the Git repositories where OpsChain properties and custom Dockerfiles will be imported from when running a change. Can be overriden by projects, environments, assets or on a per-change basis.

OPSCHAIN_SSH_KNOWN_HOSTS_CONFIG_MAP

Default value: none

MintPress uses a bundled SSH known_hosts file for authentication. It has certificates for a number of common source code hosting platforms, including:

  • Bitbucket
  • GitHub
  • GitLab

There are two ways to customise the file: add entries via the known_hosts global setting (recommended), or fully replace the file with a custom config map.

Adding entries via the known_hosts setting

To add trusted hosts without replacing the bundled file, set the known_hosts setting to an array of known_hosts lines. The entries are merged with the bundled defaults and are preserved across upgrades and redeploys. See the known_hosts settings reference for the full details.

Replacing the file with a custom config map

If you'd like to have support for other platforms, you can create a new config map with the desired contents and update this setting to use your custom config map name instead.

known_hosts file template

You can use the following command to export the bundled known_hosts file to a YAML file as a template:

kubectl -n ${KUBERNETES_NAMESPACE} get ConfigMap opschain-ssh-known-hosts -o yaml > custom-opschain-ssh-known-hosts.yaml

You can then edit the exported resource, ensure you update the metadata.name field to a different config map name, and then update the file contents under the known_hosts key. Once the resource definition has been updated, use kubectl to create the custom config map:

kubectl -n ${KUBERNETES_NAMESPACE} apply -f custom-opschain-ssh-known-hosts.yaml

Once the custom config map has been created, you can update the OPSCHAIN_SSH_KNOWN_HOSTS_CONFIG_MAP setting to use the custom config map name instead. After doing so, you need to restart the MintPress API pod for the changes to take effect. In high availability setups, you'll need to make this change on all clusters.

OPSCHAIN_THREADS_PER_WORKER

Default value: 5
Minimum value: 2

The number of threads each worker process will run. Note that increasing this number further may actually decrease concurrency due to context switching. We recommend that you consider increasing the number of workers before considering increasing this value.

OPSCHAIN_TRACE

Default value: false

If set to true, additional logging will be generated when changes are run, allowing for more detailed debugging of changes.

Log aggregator settings

logAggregator.env

Default value: none

Environment variables to be set for the log aggregator container.

Image building settings

These settings define how MintPress will build the Docker images for running changes.

buildService.env

Default value: none

Environment variables to be set for the image build container.

buildService.rootless

Default value: true

Whether to use the Buildkit rootless mode for the image build container. Using rootless mode provides a more secure and isolated environment at the cost of build performance.

Kernel version

If you are using a kernel version older than 5.11, you'll also need to enable the fuseDevicePlugin.enabled setting.

You can check your kernel version by running the following command:

uname -a

buildService.volume.size

Default value: 50Gi

Volume claim size for the image build container cache.

fuseDevicePlugin.enabled

Default value: false

Whether to enable the FUSE device plugin used by the image build container. This is required for rootless mode to work on kernels older than 5.11. This will only have an effect if buildService.rootless is set to true.

tip

This will add a daemonset to the cluster. If the build service is stuck in a Pending state during an upgrade, delete the pod for the fuse-device-plugin and it will recover properly.

fuseDevicePlugin.version

Default value: 0.1.0

The image tag of the FUSE device plugin to use.

fuseDevicePlugin.env

Default value: none

Environment variables to be set for the FUSE device plugin container.

Image registry settings

External image registry settings

OPSCHAIN_DOCKER_USER

Default value: none

Docker Hub username to be used for accessing the MintPress images on the external image registry.

OPSCHAIN_DOCKER_PASSWORD

Default value: none

Docker Hub password/token to be used for accessing the MintPress images on the external image registry.

Internal image registry settings

Image cleanup settings

To enable the automatic image cleanup from the internal image registry. See the container image cleanup guide for more details.

registryReconcile.enabled

Default value: true

Whether to enable the automatic image cleanup from the internal image registry.

registryReconcile.schedule

Default value: 0 3 * * *

The cron expression to schedule the automatic image cleanup from the internal image registry.

registryReconcile.successfulJobsHistoryLimit

Default value: 1

The number of successful job pods to keep.

registryReconcile.failedJobsHistoryLimit

Default value: 2

The number of failed job pods to keep.

registryReconcile.env

Default value: none

Environment variables to be set for the registry reconcile job container.

OPSCHAIN_IMAGE_REGISTRY_HOST

Default value: opschain-image-registry.local.gd

Internally used hostname that needs to resolve to the Kubernetes node, but be different to the API hostname. In the MintPress host server, ensure you add a DNS entry for the internal image registry host name to your hosts file to allow MintPress to access the image registry, for example:

echo "127.0.0.1 opschain-image-registry.local.gd" >> /etc/hosts

trow.env

Default value: none

Environment variables to be set for the internal image registry.

imageCopyJob.env

Default value: none

Environment variables to be set for the runner image job container.

Image warm job settings

imageWarmJob.enabled

Default value: true

Whether the runner and MintModel API images are pulled onto a node as part of an install or upgrade, rather than when they are first needed. Without this, the first change waits for the runner image and the first MintModel render waits for the MintModel API image, each around 2GB.

The pull runs once the images have been copied into the internal image registry, so an install or upgrade takes as long as the pulls, and a node that cannot reach the internal registry fails the release rather than the first change.

Set to false to skip it. It is also skipped when env.OPSCHAIN_VERSION is local, as the runner image job does not populate the internal registry for local images.

imageWarmJob.timeoutSeconds

Default value: 900 (15 minutes)

How long the pulls may take before they are abandoned and the release is reported as failed. Keep this below the --timeout used for the installation or upgrade.

Ingress settings

OPSCHAIN_INGRESS_TLS_PORT

Default value: 443

The TLS port that Kong's proxy service publishes - how the cluster network, and every node's container runtime, addresses the ingress. It is used to build the internal image registry references that Kubernetes pulls runner, agent and MintModel API images from, the matching entry in the image pull secret, and the API address handed to agent pods.

This must match kong.proxy.tls.servicePort. A mismatch is otherwise only discovered later, when a node cannot pull an image, so a fresh install refuses to proceed if the two disagree. An existing instance is upgraded rather than blocked — it has been running that way, so its clients evidently reach Kong on the port they resolve — but the upgrade reports a warning asking you to confirm the difference is deliberate.

Not the port your users dial

This is the port on the cluster network, which is not necessarily the port clients reach MintPress on from outside. If you run a load balancer in front of the cluster that translates the port - for example it listens on 443 and forwards to the node on 17001 - this setting is the port the load balancer forwards to (17001 in that example). The externally dialled port only needs recording separately for the secret vault, as global.secretVaultExternalPort.

Kubernetes deployment settings

OPSCHAIN_KUBERNETES_NAMESPACE

Default value: mintpress

The Kubernetes namespace where MintPress will be deployed.

OPSCHAIN_RUNNER_NODE_SELECTOR

Default value: {}

This setting can be updated via system configuration post installation.

Kubernetes nodeSelector value that will be used to select the Kubernetes node where step runner pods will be deployed. Must be specified as a JSON string.

Use the default value unless running on a multi-node cluster.

LDAP/AD settings

Deploy-managed vs runtime-editable

The settings that configure the bundled OpsChain LDAP server - ldap.*, env.OPSCHAIN_LDAP_DOMAIN, env.OPSCHAIN_LDAP_ORGANISATION and env.OPSCHAIN_LDAP_LOG_LEVEL - are provided via values.yaml at install time and are required when the bundled LDAP server is enabled.

The remaining LDAP settings configure how MintPress connects to a LDAP server. They default to the bundled-server values on first install and can be updated via system configuration afterwards.

An example of configuring access to an external AD server is shown in the OpsChain LDAP guide.

ldap.env

Default value: none

Environment variables to be set for the LDAP container.

MintPress provides an LDAP server for authentication out-of-the-box. If you'd prefer to use your own LDAP server, follow the OpsChain LDAP guide to alter these settings. All the default values shown below refer to the out-of-the-box LDAP server that MintPress provides.

OPSCHAIN_LDAP_ADMIN

Default value: cn=admin,dc=opschain,dc=io

LDAP/AD administrator DN to connect to.
Note: As MintPress does not write to the LDAP database, this only needs to be a DN with permission to search all users and groups.

OPSCHAIN_LDAP_BASE_DN

Default value: dc=opschain,dc=io

LDAP/AD base DN value.

OPSCHAIN_LDAP_CACHE_TTL

Default value: 0

The time to live for the LDAP group membership cache in seconds. When set to 0, the cache will be disabled.

OPSCHAIN_LDAP_DOMAIN

Default value: opschain.io

LDAP/AD domain.

OPSCHAIN_LDAP_ENABLE_SSL

Default value: false

Whether to enable SSL for the LDAP connection.

OPSCHAIN_LDAP_GROUP_ATTRIBUTE

Default value: member

LDAP/AD group attribute containing MintPress user DNs.

OPSCHAIN_LDAP_GROUP_BASE

Default value: ou=groups,dc=opschain,dc=io

LDAP/AD base DN to search for groups.

OPSCHAIN_LDAP_GROUPS_FILTER

Default value: (objectClass=groupOfNames)

LDAP/AD filter to use when searching for groups.

OPSCHAIN_LDAP_HC_USER

Default value: healthcheck

To verify the LDAP server is available, MintPress performs a regular query of the LDAP database for the username supplied here.
Note: If you do not wish to perform this check, leave this blank.

OPSCHAIN_LDAP_HOST

Default value: opschain-ldap

LDAP/AD host name (or IP address).

OPSCHAIN_LDAP_LOG_LEVEL

Default value: 1024

The log level the LDAP server should use.

OPSCHAIN_LDAP_LOGGING_ENABLED

Default value: true

Whether to enable logging for the LDAP server.

OPSCHAIN_LDAP_MAIL_ATTRIBUTE

Default value: mail

LDAP/AD user attribute used to fetch LDAP users' email addresses.

OPSCHAIN_LDAP_ORGANISATION

Default value: OpsChain

Organisation name for the LDAP server.

OPSCHAIN_LDAP_PORT

Default value: 389

LDAP/AD host port to connect to.

OPSCHAIN_LDAP_USE_ADMIN_TO_BIND

Default value: false

Whether to use the LDAP administrator DN to bind to the LDAP server.

OPSCHAIN_LDAP_USER_ATTRIBUTE

Default value: uid

LDAP/AD user attribute used as the MintPress username.

OPSCHAIN_LDAP_USER_BASE

Default value: ou=users,dc=opschain,dc=io

LDAP/AD base DN to search for users.

OPSCHAIN_LDAP_USERS_FILTER

Default value: (objectClass=inetOrgPerson)

LDAP/AD filter to use when searching for users.

Secret vault settings

This is an exhaustive list of all the settings that can be configured for the OpsChain secret vault in the values.yaml file.

High availability setup

To support a high availability setup using the OpsChain vault as the global default, you must configure its service to allow incoming connections from the other instances:

secretVault:
...
externalService:
enabled: true
# Default value - can be overridden
nodePort: 30201

Make sure that the nodePort is accessible from the other instances in the high availability setup.

global.secretVaultExternalPort

Default value: none - follows kong.proxy.tls.servicePort, which is 443 when that is itself unset.

The port an external client dials to reach the OpsChain secret vault at global.secretVaultExternalHostName.

The secret vault runs as several replicas, and a request that lands on a standby replica is answered with a redirect to the active one at this hostname and port. The redirect is followed by the original caller — an OpsChain step, for example — so the address must be one that caller can reach.

Leave this unset unless you need it. It then follows the port Kong's proxy service publishes, which is correct whenever clients reach Kong on the same port the cluster does.

Set it when a load balancer in front of the cluster translates the port: if it accepts connections on 443 and forwards to Kong on 17001, then global.secretVaultExternalPort is 443 while OPSCHAIN_INGRESS_TLS_PORT stays 17001.

global:
secretVaultExternalHostName: "vault.my-company.com"
secretVaultExternalPort: 443
Changing this requires the secret vault replicas to be recycled

Each replica reads the address into its environment when it starts, so a deploy that changes it leaves the running replicas advertising the old one until they are recycled.

Nothing verifies that the address can be reached, and a wrong value fails intermittently — only the requests that land on a standby replica are affected, and a single-replica secret vault never redirects at all — so the problem can lie dormant. See secret vault requests fail with no route to host for how to check the address in use and recycle the replicas safely.

Previously global.ingressTlsPort

This value was called global.ingressTlsPort before it was renamed, to distinguish it from OPSCHAIN_INGRESS_TLS_PORT — a different port, despite the similar name. The old name still works but reports a warning after each deploy; rename it in your values.yaml.

OPSCHAIN_VAULT_ADDRESS

Default value: none

The address of the external secret vault that MintPress will use, including the port, e.g http://vault.example.com:8200.

OPSCHAIN_VAULT_AUTH_METHOD

Default value: none

Accepted values: token, userpass, ldap

The authentication method that MintPress will use to authenticate with the external secret vault.

OPSCHAIN_VAULT_TOKEN

Default value: none

The token that MintPress will use to authenticate with the external secret vault. Required if the authentication method is token.

OpsChain secret vault token

When using the OpsChain secret vault, the token will be automatically generated by MintPress and is necessary for root access to the secret vault. You can extract the token from the opschain-vault-config secret by running the following command:

kubectl -n ${KUBERNETES_NAMESPACE} get secret opschain-vault-config -o jsonpath="{.data.OPSCHAIN_VAULT_TOKEN}" | base64 -d

Note that this token provides root access to the secret vault and should be kept secure.

OPSCHAIN_VAULT_USERNAME

Default value: none

The username that MintPress will use to authenticate with the external secret vault. Required if the authentication method is userpass or ldap.

OPSCHAIN_VAULT_PASSWORD

Default value: none

The password that MintPress will use to authenticate with the external secret vault. Required if the authentication method is userpass or ldap.

OPSCHAIN_VAULT_MOUNT_PATH

Default value: none

The mount path for the KV secret store in the external secret vault.

OPSCHAIN_VAULT_USE_MINT_ENCRYPTION

Default value: true

Whether to use MintPress's encryption to encrypt the values before storing them in the external secret vault. If this is set to true, the values will be encrypted twice.

OPSCHAIN_VAULT_CLIENT_OPTIONS

Default value: none

A hash of options to pass to the external vault client, in JSON format. Refer to the Vault Ruby Client Gem usage instructions for the available options.

Post-install system configuration

When starting MintPress for the first time, most of the settings above are stored in MintPress's database and can be updated at any time via the MintPress GUI or API. See the API documentation for more details.

Settings managed by the deployment

A defined set of settings is owned by the deployment. These are configured in your values.yaml file, applied at install or upgrade time, and cannot be edited via the MintPress GUI or API. They are:

  • API host and port
  • Build service host and port
  • Default vault settings
  • Image registry host and internal host
  • Image pull secret name
  • Ingress TLS port
  • Kubernetes namespace
  • Rails environment, log level and max threads
  • Server timing
  • Timezone
  • The bundled OpsChain LDAP server' settings

To change one of these, update your values.yaml file and redeploy. Every other setting listed in this guide is editable through the GUI or API after installation.

Overriding a database setting from a deploy

Once a setting has been stored in the database, the value in your values.yaml file is no longer applied to it on subsequent deploys — the database is the source of truth and the setting is managed through the GUI or API. This can leave you stuck if a stored setting holds a value that prevents you from signing in to fix it, for example, a misconfigured authentication setting.

To recover, you can override any database-backed setting from a deploy by adding an environment variable to the env section of your values.yaml file, named OPSCHAIN_OVERRIDE_ followed by the setting's variable name. For example, to force OPSCHAIN_AUTH_STRATEGY back to local:

env:
...
OPSCHAIN_OVERRIDE_AUTH_STRATEGY: local

For nested settings, use the same name as the setting's environment variable — for example OPSCHAIN_OVERRIDE_LDAP_HOST overrides the LDAP host. The override is re-applied to the setting every time the MintPress API pod restarts.

Each time an override is applied, MintPress records an event in the audit history, so the change is visible to administrators. Secret values are encrypted in the recorded event; non-secret values are shown in the clear.

warning

The override takes precedence while it is set, so any change you make to that setting via the GUI or API will be reverted on the next deploy. To recover, correct the setting via the GUI or API, then remove the OPSCHAIN_OVERRIDE_ variable from your values.yaml file and redeploy so the setting can be managed normally again.

note

Only editable (database-backed) settings can be overridden this way. Settings managed by the deployment are already applied on every deploy, so they do not use this prefix.

What to do next