Skip to main content

Configuration Overview

configuration infographic

Use this section when you already know what Bloodraven does and need to choose the right configuration surface.

Pick the right page

NeedStart here
Smallest working manifestGetting Started
Production installation pathProduction Install
Every CRD field and defaultCRD Reference
Per-role users and MySQL TLSCredentials and TLS
Node labels, zones, and taintsPlacement Contract
Application connection behaviorApp Integration
Security boundaries and network surfacesSecurity Model
Go-live requirementsProduction Hardening

Configuration model

Bloodraven has three layers:

LayerResourceOwner
Operator installHelm release, CRDs, RBAC, metrics ServicePlatform team
Failover groupMysqlFailoverGroupDatabase/platform team
Application accessMySQL Services, optional Dragonfly Service, Secrets, DNS nameApplication team with platform guardrails
  • Use spec.credentials instead of legacy spec.secretName.
  • Use distinct Secrets for operator, app, read-only, monitor, and backup users.
  • Set spec.tls and require client TLS in application connection strings.
  • Pin operator, sidecar, MySQL, and backup images.
  • If you enable spec.dragonfly, pin spec.dragonfly.image to Dragonfly v1.38.0+ and route applications to the Bloodraven-created active Dragonfly Service.
  • Configure backups before production traffic starts.
  • Enable Prometheus scraping, Grafana dashboards, and alerts.
  • Link alerts to Runbooks.

Resource defaults

Bloodraven now sets a default resources.requests on every container it creates, so the operator's workloads can be scheduled on clusters that enforce a ResourceQuota or a LimitRange requiring requests. Where the user already has a CR override field, that field continues to win; only previously-unset containers picked up a default.

WorkloadContainerResource source
MySQL Deployment (per site)mysqlspec.sites[].resources (user-supplied)
MySQL Deployment (per site)sidecarspec.sidecarResources (user-supplied)
Dragonfly StatefulSetdragonflyspec.dragonfly.resources (user-supplied)
Backup Jobmysqlsh / mysqlsh-dump / backup-encrypt-uploadspec.backup.resources
Cleanup Jobmysqlshspec.backup.resources
Verification Jobmysqlshspec.verification.resources
Verification Job initdecrypt-downloadspec.backup.resources when set, else 100m CPU / 128Mi memory (requests only)
Restore Job (bootstrap + in-place)mysqlshspec.backup.resources when set, else 100m CPU / 128Mi memory (requests only)
Restore Job initpitr-download, decrypt-downloadspec.backup.resources when set, else 100m CPU / 128Mi memory (requests only)
Operator (Helm)operator.Values.resources in charts/bloodraven/values.yaml

The 100m/128Mi init-container default matches the operator's own request in the Helm chart. It is intentionally conservative: the AES-GCM decrypt stream and the PITR archive walker tolerate small requests when the container can burst on the host. Override by setting spec.backup.resources on the failover group; the same value flows to the init containers.

The cleanup Job reuses spec.backup.resources because it runs the same cleanup.py payload sized by the same backup profile parameters. If a future workload needs a separate budget, we add a dedicated field then.

Security context defaults

Two new opt-in fields let cluster operators apply Kubernetes Restricted PSS to the MySQL Deployments and Dragonfly StatefulSets without forcing a uid/gid migration on existing clusters:

  • spec.podSecurityContext and spec.containerSecurityContext — applied to the MySQL Deployment pod and to its mysql and sidecar containers.
  • spec.dragonfly.podSecurityContext and spec.dragonfly.containerSecurityContext — applied to the Dragonfly StatefulSet.

When these fields are nil (the default), Bloodraven leaves the workload's PodSpec untouched; existing CRs render identical pods to before. When they are set, the operator applies the value verbatim — it does not merge with internal hardened defaults. The user owns the uid, gid, fsGroup, seccomp profile, and capability set, because the right values depend on which MySQL and Dragonfly images you run.

See Production Hardening → Opt-in Restricted PSS for MySQL and Dragonfly for worked examples and the upgrade procedure for existing clusters whose /var/lib/mysql PVCs were created without an fsGroup.