ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Understand Ignition

Ignition¶

This page explains the ignition mechanism that gates ScyllaDB startup until all prerequisites are satisfied.

Why ignition exists¶

ScyllaDB must not start until:

  • Node-level tuning is complete — performance settings (IRQ affinity, sysctl values, CPU frequency governors) must be applied before ScyllaDB begins benchmarking IO or pinning threads. Starting too early produces incorrect IO calibration and suboptimal performance.

  • Network identity is assigned — the pod must have an IP address, and if LoadBalancer broadcasting is used, the load balancer must have provisioned an ingress address.

  • The container is ready — the ScyllaDB container must be running (container ID assigned) so that per-container tuning can target it.

Without ignition gating, the ScyllaDB process could start before tuning DaemonSets finish their work or before the cloud provider assigns a load balancer IP, leading to misconfiguration that is difficult to correct without a restart.

Signal-file mechanism¶

Ignition uses a simple file-based signal on the shared emptyDir volume mounted at /mnt/shared:

  1. The scylladb-ignition sidecar container runs the ignition controller, which continuously evaluates prerequisites.

  2. When all prerequisites are met, the controller creates the file /mnt/shared/ignition.done.

  3. The scylla container’s entrypoint polls for this file in a shell loop. Once the file appears, it execs into the sidecar binary that configures and starts ScyllaDB.

  4. The ScyllaDB Manager Agent container (when present) uses the same wait loop, ensuring the agent does not start before ScyllaDB is configured.

Prerequisites evaluated¶

The ignition controller checks the following conditions. All must be true before the signal file is created:

#

Condition

Why

1

LoadBalancer ingress available (only when broadcast address type is ServiceLoadBalancerIngress)

The broadcast address cannot be resolved until the cloud provider assigns an external IP or hostname to the member Service.

2

Pod has an IP (status.podIP is set)

ScyllaDB needs a listen address. The sidecar cannot resolve PodIP-type broadcast addresses without it.

3

ScyllaDB container has a container ID (containerStatuses[].containerID is set)

Per-container tuning (CPU pinning, cgroup settings) targets a specific container ID. Tuning cannot complete until the container exists.

4

Tuning ConfigMap exists with matching container ID

A ConfigMap labeled for this pod must exist, created by the tuning infrastructure. Its ContainerID field must match the current ScyllaDB container ID, confirming that tuning ran for this specific container instance.

5

No blocking NodeConfigs in the tuning ConfigMap

The ConfigMap must report that all NodeConfig resources have completed tuning. If any are still in progress, ignition waits.

Cleanup on shutdown¶

The scylla container’s preStop hook removes the signal file:

rm -f /mnt/shared/ignition.done

This ensures that if the container restarts (due to a crash or rolling update), the ignition controller must re-evaluate all prerequisites before ScyllaDB starts again. This is important because a container restart assigns a new container ID, invalidating previous tuning results.

Force override¶

For debugging or recovery scenarios, the annotation internal.scylla-operator.scylladb.com/force-ignition-value on the node’s member Service can override the ignition decision:

Value

Effect

"true"

Ignition proceeds immediately, bypassing all prerequisite checks.

"false"

Ignition is blocked indefinitely, regardless of prerequisite status.

Caution

The force override is an internal mechanism intended for debugging. Forcing ignition to true while tuning is incomplete results in degraded performance. Forcing it to false prevents the ScyllaDB node from starting.

Readiness probe¶

The ignition container exposes a readiness endpoint at /readyz on port 42081. It returns HTTP 200 only after the signal file has been created. This allows external tools and monitoring to determine whether a pod has passed the ignition gate.

Related pages¶

  • Sidecar and pod anatomy — the full container list and how they coordinate.

  • Tuning — the node and container tuning that must complete before ignition.

  • Bootstrap synchronisation — the init container barrier that runs before ignition.

  • Security — TLS certificate provisioning that feeds into ignition prerequisites.

Was this page helpful?

PREVIOUS
Sidecar and pod anatomy
NEXT
Pod disruption budgets
  • Create an issue
  • Edit this page

On this page

  • Ignition
    • Why ignition exists
    • Signal-file mechanism
    • Prerequisites evaluated
    • Cleanup on shutdown
    • Force override
    • Readiness probe
    • Related pages
ScyllaDB Operator
Search Ask AI
  • v1.21
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2