The runtime configuration specifies the location of the local file
system tree that contains re-loadable configuration elements. If runtime is not configured, a “null”
provider is used which has the effect of using all defaults built into the code.

Various sections of the configuration guide describe the runtime settings that are available.
For example, here are the runtime settings for
upstream clusters.

Assume that the folder /srv/runtime/v1 points to the actual file system path where global
runtime configurations are stored. The following would be a typical configuration setting for
runtime:

symlink_root: /srv/runtime/current

subdirectory: envoy

override_subdirectory: envoy_override

Where /srv/runtime/current is a symbolic link to /srv/runtime/v1.

Each ‘.’ in a runtime key indicates a new directory in the hierarchy, rooted at symlink_root +
subdirectory. For example, the health_check.min_interval key would have the following full
file system path (using the symbolic link):

/srv/runtime/current/envoy/health_check/min_interval

The terminal portion of a path is the file. The contents of the file constitute the runtime value.
When reading numeric values from a file, spaces and new lines will be ignored.

The override_subdirectory is used along with the --service-cluster CLI option. Assume
that --service-cluster has been set to my-cluster. Envoy will first look for the
health_check.min_interval key in the following full file system path:

There are two steps to update any runtime value. First, create a hard copy of the entire runtime
tree and update the desired runtime values. Second, atomically swap the symbolic link root from the
old tree to the new runtime tree, using the equivalent of the following command:

/srv/runtime:~$ ln -s /srv/runtime/v2 new && mv -Tf new current

It’s beyond the scope of this document how the file system data is deployed, garbage collected, etc.