spec.id | No | (auto-generated ULID) | Stable unique identifier for the instance, used as the metadata account ID. Immutable once set. |
spec.metadata | Yes | - | Metadata service configuration (can be empty {} for defaults) |
spec.metadata.postgres | No | (internal) | External PostgreSQL connection. If omitted, the Firebolt Operator deploys an internal PostgreSQL StatefulSet. |
spec.metadata.postgres.host | Yes* | - | PostgreSQL hostname |
spec.metadata.postgres.port | No | 5432 | PostgreSQL port |
spec.metadata.postgres.database | Yes* | - | Database name |
spec.metadata.postgres.credentialsSecretRef.name | Yes* | - | Secret with username and password keys |
spec.metadata.replicas | No | 1 | Number of metadata service pods (only 1 is currently supported). |
spec.metadata.template | No | (Firebolt Operator default) | Pod template merged with the Firebolt Operator-rendered metadata container. See Firebolt Operator-owned fields. Image: spec.metadata.template.spec.containers[name=="metadata"].image. When imagePullPolicy is unset, the Kubernetes tag rule applies, with the mutable dev tag treated like latest. |
spec.metadata.engineRegistration | No | false | Register Engine objects in the metadata service for SQL-level RBAC. |
spec.gateway | Yes | - | Envoy gateway proxy configuration (can be empty {} for defaults) |
spec.gateway.replicas | No | 2 | Number of gateway pods. See Gateway sizing. |
spec.gateway.metricsPort | No | 9090 | Container port exposing Envoy’s Prometheus metrics endpoint. The Firebolt Operator stamps a corresponding metrics port on the container. |
spec.gateway.template | No | (Firebolt Operator default) | Pod template merged with the Firebolt Operator-rendered Envoy container. See Firebolt Operator-owned fields. Image: spec.gateway.template.spec.containers[name=="envoy"].image. When imagePullPolicy is unset, the Kubernetes tag rule applies. |
spec.auth | No | disabled | Instance-wide authentication. Applies to every Engine in the Instance; there is no per-Engine authentication. See Authentication and transport encryption. |
spec.auth.enabled | No | false | Turn authentication on. When true, spec.auth.local is required. |
spec.auth.local | Yes* | - | The local user store and the JWT parameters every Engine shares. |
spec.auth.local.admin.name | No | firebolt | Admin username. |
spec.auth.local.admin.password.name | Yes | - | Secret holding the admin password. You create it; the Firebolt Operator never generates one. |
spec.auth.local.admin.password.key | Yes | - | Key within that Secret. |
spec.auth.local.passwordLogin | No | admin_only | Who may log in by password once OIDC is configured: admin_only or any_user. Ignored when spec.auth.oidc is absent. |
spec.auth.local.signingAlgorithm | No | ES384 | JWT signing algorithm. Immutable once set, and must pair with the signing key’s algorithm and size. |
spec.auth.local.tokenExpiry | No | (packdb default) | Lifetime of issued access tokens, as a Go duration. |
spec.auth.local.maxTokenAge | No | (packdb default 1d) | Upper bound on a token’s iat age. Sets the floor for retainDuration. |
spec.auth.local.clockSkewTolerance | No | (packdb default 30s) | Permitted clock drift when validating temporal claims. Added to the retainDuration floor. |
spec.auth.local.signingKeys | No | (single permanent key) | JWT signing-key policy. cert-manager only; there is no bring-your-own path for signing keys. |
spec.auth.local.signingKeys.certManager.issuerRef.name | Yes | - | Issuer or ClusterIssuer that issues signing keys. Immutable once set. |
spec.auth.local.signingKeys.certManager.issuerRef.kind | No | ClusterIssuer | Issuer or ClusterIssuer. |
spec.auth.local.signingKeys.certManager.algorithm | No | ECDSA | ECDSA or RSA. Immutable once set. |
spec.auth.local.signingKeys.certManager.size | No | 384 | Key size. Immutable once set, and must pair with signingAlgorithm. |
spec.auth.local.signingKeys.rotationInterval | No | (no rotation) | How often to rotate the signing key, as a Go duration. Setting it opts the Instance into operator-coordinated rotation; leaving it unset keeps a single permanent key. Requires retainDuration. |
spec.auth.local.signingKeys.retainDuration | No | - | How long a demoted key keeps validating tokens, measured from confirmed post-promotion convergence. Required with rotationInterval, and must be at least maxTokenAge + clockSkewTolerance. |
spec.auth.oidc | No | - | Trusted OIDC providers whose tokens Engines accept, in addition to local login. |
spec.auth.oidc.providers[].name | Yes | - | Provider identifier, as advertised to clients. |
spec.auth.oidc.providers[].discoveryURL | Yes | - | The provider’s OIDC discovery document URL. |
spec.auth.oidc.providers[].usernameMapping | Yes | - | Template mapping token claims to a Firebolt username, e.g. {{ email }}. |
spec.auth.oidc.providers[].audience | No | (the Instance resource) | Expected aud when the provider mints its own audience rather than honouring the resource parameter. |
spec.auth.oidc.providers[].jitProvisioning | No | disabled | Create users automatically on first login. |
spec.auth.preferredAuthorizationServer | No | - | Which authorization server clients should default to: _local, or a configured provider name. Advisory to clients only. |
spec.tls | No | disabled | Transport encryption. Engine and Gateway TLS are independent and separately opt-in. |
spec.tls.engine | No | disabled | Terminates TLS on each Engine’s query listener. TLS replaces plaintext on the same port. |
spec.tls.gateway | No | disabled | Terminates client-facing TLS on the Gateway listener. |
spec.tls.*.enabled | No | false | Turn this listener’s TLS on. Requires exactly one of certManager or secretRef. |
spec.tls.*.certManager.issuerRef.name | Yes* | - | Issuer or ClusterIssuer that issues this certificate. Immutable while TLS stays enabled. |
spec.tls.*.certManager.issuerRef.kind | No | ClusterIssuer | Issuer or ClusterIssuer. |
spec.tls.*.certManager.algorithm | No | ECDSA | ECDSA or RSA. |
spec.tls.*.certManager.size | No | 384 | Key size. |
spec.tls.*.secretRef.name | Yes* | - | Bring-your-own certificate: a Secret carrying tls.crt and tls.key. Mutually exclusive with certManager. |
spec.tls.*.clientCASecretRef.name | No | - | Client CA to verify client certificates against. On the Gateway this upgrades the listener to mutual TLS. Replacing it is a tightening transition and is staged fail-closed. |
spec.tls.*.dnsNames | No | (in-cluster Service names) | Extra SANs the Firebolt Operator cannot derive itself, such as an externally-visible hostname. |