Keystone Gateway

Configuration reference

Configuration precedence is defaults, YAML passed with --config, KEYSTONE_GATEWAY_* environment variables, then serve flags. Convert a dotted YAML key to an environment variable by uppercasing it and replacing dots with underscores (for example KEYSTONE_GATEWAY_LEASES_DEFAULT_TTL_SECONDS). Every key also has a -- flag with dots replaced by hyphens. Unknown YAML keys are rejected. Restart to apply every configuration or license change; V1 has no reload.

Required means required in the stated deployment shape. Empty defaults require operator input.

Configuration reference
YAML keyDefaultRequired / valid valuesEffect
gateway_id—always; logical IDSigned deployment identity
api.https.enabled / api.http.enabledfalse / falseexactly one trueClient transport
api.https.listen, advertise_url—HTTPS; host:port, https:// URLBind and client address
api.https.server_cert_file, server_key_file—HTTPSServer TLS files
api.https.client_ca_file, principal_mappings_file—HTTPS + mtlsClient trust and CN mapping
api.http.listen, advertise_url—HTTP; host:port, http:// URLBind and client address
api.http.allow_insecure_httpfalsetrue for HTTPExplicit plaintext acknowledgement
api.http.bearer_credentials_file—HTTP + bearerSHA-256 credential mappings
api.auth.mode—none, bearer, mtlsAuthentication policy
api.auth.principal_id, api.auth.allowed_license_type, api.auth.operator—, —, falseonly none; type phocol or lmc_exporterOne shared perimeter-trust principal
storage.directory, encryption_key_file—alwaysEncrypted durable state and 32-byte key
storage.snapshot_directory—optional; compatibility onlyNot consumed by V1 runtime; actual HA snapshots are under storage.directory/raft/snapshots
storage.peer.replica_id, listen, target, reconcile_listen, reconcile_target—HA onlyOther replica and two peer channels
storage.peer.tls.cert_file, key_file, ca_file—HA onlyPeer mTLS files
license.file—alwaysSigned Gateway license
ha.enabledfalsebooleanTwo-node mode
ha.replica_id—always; logical IDThis replica’s signed identity
ha.bootstrap_expect11 standalone; 2 HARaft voter count
ha.peer_loss_timeout_seconds5>0Delay before degraded-active
ha.operator_recovery_enabledfalseboolean; reservedCompatibility setting; no V1 operational effect
leases.default_ttl_seconds120min ≤ default ≤ maxRequested default lease length
leases.min_ttl_seconds, max_ttl_seconds30, 300>0Lease TTL bounds
leases.max_clock_skew_seconds5≥0HA leadership skew bound
leases.expiry_sweep_seconds15>0Expired-record cleanup interval
telemetry.enabledfalsebooleanEnables customer OTLP export
telemetry.otlp_endpoint—enabled only; no userinfo, query, or fragmentCollector host/URL; use auth_headers for credentials
telemetry.protocolgrpcgrpc, http/protobufOTLP transport
telemetry.ca_file, auth_headersemptyoptionalCollector TLS trust and Name=Value secrets
telemetry.export_timeout_seconds10enabled; >0Shutdown export bound
reports.directory—alwaysReport directory configuration
reports.retention_days90≥0Report retention setting
logging.level, logging.formatinfo, jsondebug/info/warn/error; json/textStructured log output

reports.directory is a configuration input; V1’s report CLI writes to standard output and the Gateway does not currently create report files or expose a backup/restore CLI. storage.snapshot_directory is accepted for configuration compatibility but not used by V1 runtime; see backup and recovery. See examples, CLI flags, and security.

Principal and license-type cardinality

api.auth.allowed_license_type is a scalar used only by the single fixed principal in api.auth.mode: none; it accepts phocol or lmc_exporter, not a list. In mtls and bearer modes, leave all three fixed-principal fields empty and define callers in api.https.principal_mappings_file or api.http.bearer_credentials_file instead. Each mapping entry still authorizes exactly one license type. Add separate entries and principal IDs to authorize installations for both types.

Mapping files must contain at least one entry and must not exceed 1 MiB in total; there is no separate maximum number of entries. Common Names and bearer hashes must be unique. Reusing a principal_id is accepted only when every occurrence has identical authority. Each mapped license type must be declared by the verified Gateway license or startup fails. See client authentication for complete multi-principal examples.

Confirm