# Configure ScyllaDB Operator

This page explains how to configure ScyllaDB Operator’s global settings using the `ScyllaOperatorConfig` resource.

## Overview

`ScyllaOperatorConfig` is a cluster-scoped singleton resource named `cluster`. ScyllaDB Operator creates it automatically on startup if it does not exist. It holds global settings that affect all ScyllaDB clusters managed by ScyllaDB Operator, such as auxiliary container images and the Kubernetes cluster domain.

Most users do not need to modify this resource. ScyllaDB Operator ships with sensible defaults that are updated automatically when you upgrade.

## View the current configuration

```shell
kubectl get scyllaoperatorconfig cluster -o yaml
```

The `status` section shows the resolved values that are actually in use, including auto-discovered defaults:

```yaml
status:
  scyllaDBUtilsImage: docker.io/scylladb/scylla:2025.1.9@sha256:...
  scyllaDBNodeExporterImage: quay.io/prometheus/node-exporter:v1.11.1
  bashToolsImage: registry.access.redhat.com/ubi9/ubi:9.5-...@sha256:...
  grafanaImage: docker.io/grafana/grafana:12.2.0@sha256:...
  prometheusVersion: v3.6.0
  clusterDomain: cluster.local
```

## Configurable fields

| Spec field                             | Description                                                                                                                                                                                                                                                      | Default                                                     |
|----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
| `scyllaUtilsImage`                     | ScyllaDB image used for running utility scripts (perftune, sysctl). Determines which tuning scripts are used for performance optimization.                                                                                                                       | Latest ScyllaDB image.                                      |
| `scyllaDBNodeExporterImage`            | `scylladb-node-exporter` image that ScyllaDB Operator runs as a sidecar to expose node-level OS metrics for ScyllaDB clusters. For versions before 2026.3.0, this field is ineffective because node-exporter is bundled and run directly within `scyllaDBImage`. | Latest scylladb-node-exporter image.                        |
| `configuredClusterDomain`              | Kubernetes cluster domain. Must be a fully qualified domain name.                                                                                                                                                                                                | Auto-discovered via DNS lookup of `kubernetes.default.svc`. |
| `unsupportedBashToolsImageOverride`    | Override the Bash tools image. **Unsupported** — for advanced use only.                                                                                                                                                                                          | UBI 9 image.                                                |
| `unsupportedGrafanaImageOverride`      | Override the Grafana image. **Unsupported** — for advanced use only.                                                                                                                                                                                             | Official Grafana image.                                     |
| `unsupportedPrometheusVersionOverride` | Override the Prometheus version. **Unsupported** — for advanced use only.                                                                                                                                                                                        | Latest tested Prometheus version.                           |

## Change the ScyllaDB utils image

By default, ScyllaDB Operator uses performance tuning scripts from the latest ScyllaDB image. To use a different image, set `scyllaUtilsImage`:

```yaml
apiVersion: scylla.scylladb.com/v1alpha1
kind: ScyllaOperatorConfig
metadata:
  name: cluster
spec:
  scyllaUtilsImage: "docker.io/scylladb/scylla-enterprise:2026.2.5"
```

Apply the change:

```shell
kubectl apply --server-side -f scyllaoperatorconfig.yaml
```

The NodeConfig DaemonSet picks up the new image and uses Enterprise-specific tuning scripts on the next reconciliation.

## Set the cluster domain

ScyllaDB Operator auto-discovers the Kubernetes cluster domain by performing a DNS CNAME lookup for `kubernetes.default.svc`. If your cluster uses a non-standard domain or the auto-discovery does not work, set it explicitly:

```yaml
apiVersion: scylla.scylladb.com/v1alpha1
kind: ScyllaOperatorConfig
metadata:
  name: cluster
spec:
  configuredClusterDomain: my-cluster.local
```

The cluster domain is used internally for Kubernetes DNS resolution. Most users do not need to override it.

## How settings propagate

ScyllaOperatorConfig settings are consumed by several Operator controllers:

| Consumer                      | Setting used                                                                                                                         |
|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| NodeConfig controller         | `scyllaDBUtilsImage` — configures the tuning DaemonSet with the correct ScyllaDB image for `perftune.py` and resource limits.        |
| ScyllaDBDatacenter controller | `scyllaDBNodeExporterImage` — configures the `scylladb-node-exporter` sidecar for ScyllaDB clusters running version 2026.3 or later. |
| ScyllaDBMonitoring controller | `grafanaImage`, `prometheusVersion` — configures the monitoring stack.                                                               |

Changes to `ScyllaOperatorConfig` trigger reconciliation in all dependent controllers. You do not need to restart Operator.

## Related pages

- [Configure nodes](https://operator.docs.scylladb.com/v1.22/deploy-scylladb/before-you-deploy/configure-nodes.md) — performance tuning that uses the `scyllaUtilsImage`.
- [Set up monitoring](https://operator.docs.scylladb.com/v1.22/deploy-scylladb/set-up-monitoring/index.md) — monitoring stack that uses the Grafana and Prometheus settings.
- [Tuning architecture](https://operator.docs.scylladb.com/v1.22/understand/tuning.md) — how tuning scripts are executed.
