After you apply a RegattaCluster resource, the operator continuously works to bring Kubernetes and RegattaDB into the state you described:
It creates or updates the StatefulSets, Services, ConfigMaps, and Secret your RegattaCluster resource requires.
It waits until the storage your Pods requested is bound, and every Pod is running and ready.
Once Kubernetes is ready, it configures and starts, or stops, RegattaDB through the System Manager (SM), using the Service addresses Kubernetes created.
It writes what it observed, including readiness, endpoints, and RegattaDB health, back into your RegattaCluster resource’s status, and repeats this cycle so any drift is corrected automatically, at least every five minutes even without any change.
Kubernetes objects being healthy is necessary but not sufficient: your RegattaCluster resource only reports readiness once RegattaDB itself confirms, through the System Manager, that it is active and healthy.
status is owned by the operator; never edit it yourself. Useful fields:
status.observedGeneration: the most recent spec generation the operator has reconciled. If this lags behind metadata.generation, the operator has not caught up yet.
status.endpoints.sm and status.endpoints.rdbs[]: the Service names, DNS names, ClusterIPs, and ports the operator advertised to RegattaDB. RegattaDB clients and management tools should use these addresses from status; spec never contains live connection addresses, only your desired configuration.
status.rdb: desiredReplicas, readyPods, configuredReplicas, and activeReplicas - how many RDB Pods exist, are ready, are configured in RegattaDB, and are active.
status.modules: per-module role summaries (total/active/down), as RegattaDB itself reports them.
status.devices: raw block device health, with a status, a healthy flag, a failed list of device names that are not healthy, and an items[] list. Each item includes the device’s name, path, node, and module.
status.regatta: the raw System Manager observation, including systemState, healthy, desiredState, and recent actions.
status.conditions follows the standard Kubernetes condition shape (type, status, reason, message):
Condition
True means
False means
Progressing
Waiting for infrastructure to become ready, or a RegattaDB action was just issued and a follow-up check is scheduled
Steady state with nothing pending (KubernetesResourcesApplied), or a permanent error blocked reconciliation - check Degraded and this condition’s message
StorageReady
Every expected PersistentVolumeClaim exists and is bound (StorageHealthy)
No PersistentVolumeClaims observed yet (WaitingForStorage), or some are missing, unbound, or otherwise unhealthy (PVCsNotBound)
KubernetesReady
Both StatefulSets are fully rolled out and every expected Pod is Running and Ready (WorkloadsReady)
Pods are not ready (PodsNotReady), or a StatefulSet has not rolled out (WorkloadsNotReady)
Ready
RegattaDB itself, through the System Manager, confirms it is active and healthy, in addition to Kubernetes being ready
Kubernetes is not ready yet (InfrastructureNotReady), or Kubernetes is ready but SM has not confirmed active and healthy yet (RegattaStatusPending)
Degraded
A permanent error blocked reconciliation - for example, reason ValidationFailed for spec values only caught at reconcile time; check the condition’s message for the cause
Normal operation, including a RegattaCluster resource you deliberately stopped (spec.lifecycle.start: false), which is not treated as degraded
RegattaStopped
Present only when spec.lifecycle.start: false. SM confirms RegattaDB is stopped
The stop is still in progress (RegattaStopping)
Ready=True always requires both Kubernetes readiness and SM-confirmed RegattaDB health together; Kubernetes readiness alone is never enough.
Once your RegattaCluster resource exists, a small set of fields remain mutable, though some have side effects worth planning for:
spec.image (tag, digest, pullPolicy, pullSecrets), as long as spec.version stays the same. The operator applies this as a same-version rolling update - see Configure Version And Image for what that means and what you can/cannot control.
config on any module. Note that changing it restarts the Pod or Pods that host the affected module.
spec.rdb.service.type and spec.rdb.service.port (the aggregate RDB Service’s own type and exposed port) only affect that Service object. RDB’s actual container port stays fixed, and Kubernetes forwards the externally exposed port to it correctly, so both are always safe to change.
spec.lifecycle.start: set to false to stop RegattaDB while keeping Kubernetes Pods running, and back to true to start it again.
Every other field covered in Configuration, including spec.version, spec.rdb.replicas, spec.rdb.devices, module port/service_port/num_threads/ram_MB, and every storage setting, is immutable once your RegattaCluster resource is created.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Regatta","colors":{"primary":"#ff6600","light":"#FF6600","dark":"#ff6600"},"logo":{"light":"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_Black_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=80ecf4af831aaabfecd51ca1c1dab7a7","dark":"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_White_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=1be4bc683939b389d14aa1eeda3216d9"},"favicon":"https://mintcdn.com/regatta/xrn8wIqTNfsgHe4O/images/favicon.svg?fit=max\u0026auto=format\u0026n=xrn8wIqTNfsgHe4O\u0026q=85\u0026s=c025dcbef503c87e965049f809c4a3c4","background":{"color":{"light":"#f7f8fa","dark":"#041225"}},"navbar":{"links":[{"href":"https://rdbproject.atlassian.net/servicedesk/customer/portals","label":"Support"}],"primary":{"type":"button","label":"Start Coding","href":"https://regatta.dev/"}},"footer":{"socials":{"x":"https://twitter.com/regatta_data","linkedin":"https://www.linkedin.com/company/regatta-data"}},"fonts":{"family":"Inter"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"regatta","hasAudioNarration":false,"actualSubdomain":"regatta","customDomains":["docs.regatta.dev"],"gitSource":{"type":"github","owner":"regattadata","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af1eeb6572291321c9713bb","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"SQL","count":84},{"language":"default","tag":"Self-Hosted Deployment","count":38},{"language":"default","tag":"Tuning Performance","count":20},{"language":"default","tag":"Regatta Deployment Tool","count":19},{"language":"default","tag":"Quickstart","count":18},{"language":"default","tag":"System Monitoring","count":18},{"language":"default","tag":"Drivers \u0026 Clients","count":16},{"language":"default","tag":"SQL Functions and Operators","count":15},{"language":"default","tag":"Kubernetes Deployment","count":13},{"language":"default","tag":"Hints","count":12}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"body::-webkit-scrollbar{width:5px}body::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px}body::-webkit-scrollbar-track{background-color:#f1f1f1}#sidebar-content::-webkit-scrollbar{display:none}table td:first-child,table th:first-child{max-width:16rem}table code{white-space:normal;overflow-wrap:break-word;word-break:break-word}"}],"page":{"pagePath":"self-hosted-deployment/kubernetes/operations","slug":"/self-hosted-deployment/kubernetes/operations","pageMetadata":{"title":"Operations","description":"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.","href":"/self-hosted-deployment/kubernetes/operations"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`how-the-operator-keeps-things-in-sync`,children:`How the operator keeps things in sync`}),`\n`,_jsxs(_components.p,{children:[`After you apply a `,_jsx(_components.code,{children:`RegattaCluster`}),` resource, the operator continuously works to bring Kubernetes and RegattaDB into the state you described:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`It creates or updates the StatefulSets, Services, ConfigMaps, and Secret your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource requires.`]}),`\n`,_jsx(_components.li,{children:`It waits until the storage your Pods requested is bound, and every Pod is running and ready.`}),`\n`,_jsx(_components.li,{children:`Once Kubernetes is ready, it configures and starts, or stops, RegattaDB through the System Manager (SM), using the Service addresses Kubernetes created.`}),`\n`,_jsxs(_components.li,{children:[`It writes what it observed, including readiness, endpoints, and RegattaDB health, back into your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource’s status, and repeats this cycle so any drift is corrected automatically, at least every five minutes even without any change.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Kubernetes objects being healthy is necessary but not sufficient: your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource only reports readiness once RegattaDB itself confirms, through the System Manager, that it is active and healthy.`]}),`\n`,_jsx(Heading,{level:`2`,id:`reading-regattacluster-status`,children:`Reading RegattaCluster status`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`status`}),` is owned by the operator; never edit it yourself. Useful fields:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.observedGeneration`}),`: the most recent `,_jsx(_components.code,{children:`spec`}),` generation the operator has reconciled. If this lags behind `,_jsx(_components.code,{children:`metadata.generation`}),`, the operator has not caught up yet.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.endpoints.sm`}),` and `,_jsx(_components.code,{children:`status.endpoints.rdbs[]`}),`: the Service names, DNS names, ClusterIPs, and ports the operator advertised to RegattaDB. RegattaDB clients and management tools should use these addresses from `,_jsx(_components.code,{children:`status`}),`; `,_jsx(_components.code,{children:`spec`}),` never contains live connection addresses, only your desired configuration.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.rdb`}),`: `,_jsx(_components.code,{children:`desiredReplicas`}),`, `,_jsx(_components.code,{children:`readyPods`}),`, `,_jsx(_components.code,{children:`configuredReplicas`}),`, and `,_jsx(_components.code,{children:`activeReplicas`}),` - how many RDB Pods exist, are ready, are configured in RegattaDB, and are active.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.modules`}),`: per-module role summaries (`,_jsx(_components.code,{children:`total`}),`/`,_jsx(_components.code,{children:`active`}),`/`,_jsx(_components.code,{children:`down`}),`), as RegattaDB itself reports them.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.devices`}),`: raw block device health, with a `,_jsx(_components.code,{children:`status`}),`, a `,_jsx(_components.code,{children:`healthy`}),` flag, a `,_jsx(_components.code,{children:`failed`}),` list of device names that are not healthy, and an `,_jsx(_components.code,{children:`items[]`}),` list. Each item includes the device’s `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`path`}),`, `,_jsx(_components.code,{children:`node`}),`, and `,_jsx(_components.code,{children:`module`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status.regatta`}),`: the raw System Manager observation, including `,_jsx(_components.code,{children:`systemState`}),`, `,_jsx(_components.code,{children:`healthy`}),`, `,_jsx(_components.code,{children:`desiredState`}),`, and recent `,_jsx(_components.code,{children:`actions`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`conditions`,children:`Conditions`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`status.conditions`}),` follows the standard Kubernetes condition shape (`,_jsx(_components.code,{children:`type`}),`, `,_jsx(_components.code,{children:`status`}),`, `,_jsx(_components.code,{children:`reason`}),`, `,_jsx(_components.code,{children:`message`}),`):`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Condition`}),_jsx(_components.th,{children:`True means`}),_jsx(_components.th,{children:`False means`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Progressing`})}),_jsx(_components.td,{children:`Waiting for infrastructure to become ready, or a RegattaDB action was just issued and a follow-up check is scheduled`}),_jsxs(_components.td,{children:[`Steady state with nothing pending (`,_jsx(_components.code,{children:`KubernetesResourcesApplied`}),`), or a permanent error blocked reconciliation - check `,_jsx(_components.code,{children:`Degraded`}),` and this condition’s `,_jsx(_components.code,{children:`message`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`StorageReady`})}),_jsxs(_components.td,{children:[`Every expected `,_jsx(_components.code,{children:`PersistentVolumeClaim`}),` exists and is bound (`,_jsx(_components.code,{children:`StorageHealthy`}),`)`]}),_jsxs(_components.td,{children:[`No `,_jsx(_components.code,{children:`PersistentVolumeClaims`}),` observed yet (`,_jsx(_components.code,{children:`WaitingForStorage`}),`), or some are missing, unbound, or otherwise unhealthy (`,_jsx(_components.code,{children:`PVCsNotBound`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KubernetesReady`})}),_jsxs(_components.td,{children:[`Both StatefulSets are fully rolled out and every expected Pod is Running and Ready (`,_jsx(_components.code,{children:`WorkloadsReady`}),`)`]}),_jsxs(_components.td,{children:[`Pods are not ready (`,_jsx(_components.code,{children:`PodsNotReady`}),`), or a StatefulSet has not rolled out (`,_jsx(_components.code,{children:`WorkloadsNotReady`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Ready`})}),_jsx(_components.td,{children:`RegattaDB itself, through the System Manager, confirms it is active and healthy, in addition to Kubernetes being ready`}),_jsxs(_components.td,{children:[`Kubernetes is not ready yet (`,_jsx(_components.code,{children:`InfrastructureNotReady`}),`), or Kubernetes is ready but SM has not confirmed active and healthy yet (`,_jsx(_components.code,{children:`RegattaStatusPending`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Degraded`})}),_jsxs(_components.td,{children:[`A permanent error blocked reconciliation - for example, reason `,_jsx(_components.code,{children:`ValidationFailed`}),` for spec values only caught at reconcile time; check the condition’s `,_jsx(_components.code,{children:`message`}),` for the cause`]}),_jsxs(_components.td,{children:[`Normal operation, including a `,_jsx(_components.code,{children:`RegattaCluster`}),` resource you deliberately stopped (`,_jsx(_components.code,{children:`spec.lifecycle.start: false`}),`), which is not treated as degraded`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RegattaStopped`})}),_jsxs(_components.td,{children:[`Present only when `,_jsx(_components.code,{children:`spec.lifecycle.start: false`}),`. SM confirms RegattaDB is stopped`]}),_jsxs(_components.td,{children:[`The stop is still in progress (`,_jsx(_components.code,{children:`RegattaStopping`}),`)`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Ready=True`}),` always requires both Kubernetes readiness and SM-confirmed RegattaDB health together; Kubernetes readiness alone is never enough.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`making-supported-changes`,children:`Making supported changes`}),`\n`,_jsxs(_components.p,{children:[`Once your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource exists, a small set of fields remain mutable, though some have side effects worth planning for:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`spec.image`}),` (`,_jsx(_components.code,{children:`tag`}),`, `,_jsx(_components.code,{children:`digest`}),`, `,_jsx(_components.code,{children:`pullPolicy`}),`, `,_jsx(_components.code,{children:`pullSecrets`}),`), as long as `,_jsx(_components.code,{children:`spec.version`}),` stays the same. The operator applies this as a same-version rolling update - see `,_jsx(_components.a,{href:`/self-hosted-deployment/kubernetes/configuration/overview#configure-version-and-image`,children:`Configure Version And Image`}),` for what that means and what you can/cannot control.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`config`}),` on any module. Note that changing it restarts the Pod or Pods that host the affected module.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`spec.rdb.service.type`}),` and `,_jsx(_components.code,{children:`spec.rdb.service.port`}),` (the aggregate RDB Service’s own type and exposed port) only affect that Service object. RDB’s actual container port stays fixed, and Kubernetes forwards the externally exposed port to it correctly, so both are always safe to change.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`spec.lifecycle.start`}),`: set to `,_jsx(_components.code,{children:`false`}),` to stop RegattaDB while keeping Kubernetes Pods running, and back to `,_jsx(_components.code,{children:`true`}),` to start it again.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Every other field covered in `,_jsx(_components.a,{href:`/self-hosted-deployment/kubernetes/configuration/overview`,children:`Configuration`}),`, including `,_jsx(_components.code,{children:`spec.version`}),`, `,_jsx(_components.code,{children:`spec.rdb.replicas`}),`, `,_jsx(_components.code,{children:`spec.rdb.devices`}),`, module `,_jsx(_components.code,{children:`port`}),`/`,_jsx(_components.code,{children:`service_port`}),`/`,_jsx(_components.code,{children:`num_threads`}),`/`,_jsx(_components.code,{children:`ram_MB`}),`, and every storage setting, is immutable once your `,_jsx(_components.code,{children:`RegattaCluster`}),` resource is created.`]}),`\n`,_jsx(Heading,{level:`2`,id:`deleting-a-regattacluster`,children:`Deleting a RegattaCluster`}),`\n`,_jsx(_components.p,{children:`Delete the resource like any other Kubernetes object:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`namespac`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`e`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delete`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rgc`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-regattadb`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Deletion:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Makes a bounded attempt, up to 30 seconds, to stop RegattaDB through the System Manager if it is running.`}),`\n`,_jsx(_components.li,{children:`Continues even if that stop attempt fails, recording a warning Event instead of blocking.`}),`\n`,_jsx(_components.li,{children:`Deletes the generated StatefulSets, Services, ConfigMaps, and the credentials Secret.`}),`\n`,_jsxs(_components.li,{children:[`Leaves every `,_jsx(_components.code,{children:`PersistentVolumeClaim`}),` in place, so your data is not deleted along with the `,_jsx(_components.code,{children:`RegattaCluster`}),` resource.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`If you are certain the data is no longer needed, delete the retained PVCs explicitly:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`namespac`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`e`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delete`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pvc`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -l`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` app.kubernetes.io/name=regatta,app.kubernetes.io/instance=my-regattadb,app.kubernetes.io/managed-by=regatta-operator`})]}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Operations","description":"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.","href":"/self-hosted-deployment/kubernetes/operations"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How the operator keeps things in sync","slug":"how-the-operator-keeps-things-in-sync","depth":2,"children":[]},{"title":"Reading RegattaCluster status","slug":"reading-regattacluster-status","depth":2,"children":[{"title":"Conditions","slug":"conditions","depth":3,"children":[]}]},{"title":"Making supported changes","slug":"making-supported-changes","depth":2,"children":[]},{"title":"Deleting a RegattaCluster","slug":"deleting-a-regattacluster","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"regatta","siteName":"Regatta","title":"Operations - Regatta","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T14:37:08.877Z","originalFileLocation":"self-hosted-deployment/kubernetes/operations.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Regatta\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Operations - Regatta\">\u003cmeta data-mint-head property=\"og:description\" content=\"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Regatta\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://regatta.mintlify.site/_mintlify/api/og/v2?division=Kubernetes+Deployment\u0026amp;title=Operations\u0026amp;description=How+the+operator+keeps+Kubernetes+and+RegattaDB+in+sync%2C+reading+status%2C+and+making+supported+changes.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=a28a438d6a14fa5c8f0ae769a81b8b87d4faec14eccd5fc2c096e41e9ecc4887\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Operations - Regatta\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://regatta.mintlify.site/_mintlify/api/og/v2?division=Kubernetes+Deployment\u0026amp;title=Operations\u0026amp;description=How+the+operator+keeps+Kubernetes+and+RegattaDB+in+sync%2C+reading+status%2C+and+making+supported+changes.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=a28a438d6a14fa5c8f0ae769a81b8b87d4faec14eccd5fc2c096e41e9ecc4887\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/regatta/gm5LFpBlkeZD76CN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Regatta\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff6600\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/self-hosted-deployment/kubernetes/operations.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.regatta.dev/#organization\",\"name\":\"Regatta\",\"url\":\"https://docs.regatta.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/regatta/HR4-Kyi3p6WFSWx7/logo/Regatta_Logo_Colors_Black_RGB_1.svg?fit=max\u0026auto=format\u0026n=HR4-Kyi3p6WFSWx7\u0026q=85\u0026s=80ecf4af831aaabfecd51ca1c1dab7a7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.regatta.dev#website\",\"name\":\"Regatta\",\"url\":\"https://docs.regatta.dev\",\"publisher\":{\"@id\":\"https://docs.regatta.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations#webpage\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations\",\"name\":\"Operations\",\"description\":\"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\",\"dateModified\":\"2026-09-28T14:37:08.877Z\",\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kubernetes Deployment\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Operations\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations#article\",\"headline\":\"Operations\",\"name\":\"Operations\",\"description\":\"How the operator keeps Kubernetes and RegattaDB in sync, reading status, and making supported changes.\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations\",\"mainEntityOfPage\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/operations#webpage\"},\"dateModified\":\"2026-09-28T14:37:08.877Z\",\"publisher\":{\"@id\":\"https://docs.regatta.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"}}]}\u003c/script>","agentPointerHref":"/self-hosted-deployment/kubernetes/operations.md","siteName":"Regatta","nav":{"global":null,"anchors":[{"anchor":"Docs Home","icon":"house","pages":[{"title":"Docs Home","href":"/home"}]},{"anchor":"Quickstart","pages":[{"title":"Quickstart","href":"/getting-started/getting-started-using-regatta-cloud"}]},{"anchor":"SQL","icon":"code","pages":[{"title":"SQL","href":"/sql/introduction"}]},{"anchor":"Regatta Cloud","icon":"cloud","pages":[{"title":"Regatta Cloud","href":"/regatta-cloud/regatta-cloud/regatta-cloud"}]},{"anchor":"Self-Hosted Deployment","icon":"server","groups":[{"group":"Self-Hosted Deployment","pages":[{"title":"Prerequisites","href":"/self-hosted-deployment/prerequisites"}]},{"group":"Manual Deployment","pages":[{"title":"RegattaDB Software Modules","href":"/self-hosted-deployment/manual-deployment/regattadb-software-modules"},{"title":"Prepare for Deployment","href":"/self-hosted-deployment/manual-deployment/prepare-for-deployment"},{"title":"High-Level Deployment Steps","href":"/self-hosted-deployment/manual-deployment/high-level-deployment-steps"},{"title":"Deployment Example","href":"/self-hosted-deployment/manual-deployment/deployment-example"}]},{"group":"Regatta Deployment Tool","pages":[{"title":"Introduction","href":"/self-hosted-deployment/rdt/introduction"},{"title":"Prerequisites","href":"/self-hosted-deployment/rdt/prerequisites"},{"title":"Installation","href":"/self-hosted-deployment/rdt/installation"},{"title":"Command Reference","href":"/self-hosted-deployment/rdt/command-reference"},{"group":"Configuration","pages":[{"title":"Configuration Overview","href":"/self-hosted-deployment/rdt/configuration/overview"},{"title":"Creating \u0026 Managing Configs","href":"/self-hosted-deployment/rdt/configuration/creating-and-managing-configs"}]},{"group":"System Setup","pages":[{"title":"System Setup Overview","href":"/self-hosted-deployment/rdt/system-setup/overview"},{"title":"RegattaDB Lifecycle","href":"/self-hosted-deployment/rdt/system-setup/lifecycle"}]},{"group":"Examples","pages":[{"title":"Quickstart: Single-Node RegattaDB","href":"/self-hosted-deployment/rdt/examples/quickstart-single-node"},{"title":"Example: Multi-Node Deployment","href":"/self-hosted-deployment/rdt/examples/multi-node-deployment"},{"title":"Config Recipes","href":"/self-hosted-deployment/rdt/examples/config-recipes"},{"title":"Example: Collecting Debug Information","href":"/self-hosted-deployment/rdt/examples/collecting-debug-info"}]},{"group":"Advanced","pages":[{"title":"Global Options \u0026 Credentials","href":"/self-hosted-deployment/rdt/advanced/global-options-and-credentials"},{"title":"Running RDT in a Container","href":"/self-hosted-deployment/rdt/advanced/running-rdt-in-a-container"},{"title":"Offline Installation","href":"/self-hosted-deployment/rdt/advanced/offline-installation"},{"title":"What Changes on Your Nodes","href":"/self-hosted-deployment/rdt/advanced/node-system-changes"},{"title":"Module \u0026 NUMA Configuration","href":"/self-hosted-deployment/rdt/advanced/module-and-numa-configuration"}]},{"title":"Troubleshooting","href":"/self-hosted-deployment/rdt/troubleshooting"},{"title":"Release Notes","href":"/self-hosted-deployment/rdt/release-notes"}]},{"group":"Kubernetes Deployment","pages":[{"title":"Introduction","href":"/self-hosted-deployment/kubernetes/introduction"},{"title":"Prerequisites","href":"/self-hosted-deployment/kubernetes/prerequisites"},{"title":"Installation","href":"/self-hosted-deployment/kubernetes/installation"},{"group":"Configuration","pages":[{"title":"Configuration Overview","href":"/self-hosted-deployment/kubernetes/configuration/overview"},{"title":"Storage","href":"/self-hosted-deployment/kubernetes/configuration/storage"},{"title":"Networking","href":"/self-hosted-deployment/kubernetes/configuration/networking"},{"title":"Security \u0026 Lifecycle","href":"/self-hosted-deployment/kubernetes/configuration/security-and-lifecycle"},{"title":"Resources \u0026 Scheduling","href":"/self-hosted-deployment/kubernetes/configuration/resources-and-scheduling"}]},{"group":"Examples","pages":[{"title":"Quickstart: Single-Node RegattaCluster","href":"/self-hosted-deployment/kubernetes/examples/quickstart-single-node"},{"title":"Example: Two Local NVMe Devices, One RDB Replica","description":"Bind pre-existing local NVMe devices to RDB using static RDB storage provisioning.","href":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme"}]},{"title":"Operations","href":"/self-hosted-deployment/kubernetes/operations"},{"title":"Troubleshooting","description":"Diagnose a RegattaCluster resource that isn't reaching Ready.","href":"/self-hosted-deployment/kubernetes/troubleshooting"},{"title":"Release Notes","href":"/self-hosted-deployment/kubernetes/release-notes"}]},{"group":"Collecting Data","hidden":true,"pages":[{"title":"Installation","href":"/self-hosted-deployment/collecting-data/installation"},{"title":"Setup","href":"/self-hosted-deployment/collecting-data/setup"},{"title":"Execution","href":"/self-hosted-deployment/collecting-data/execution"}]}]},{"anchor":"Drivers \u0026 Clients","icon":"download","pages":[{"title":"Drivers \u0026 Clients","href":"/drivers-and-clients/connecting-applications-to-regatta"}]},{"anchor":"Tuning Performance","icon":"rocket","pages":[{"title":"Tuning Performance","href":"/tuning-performance/introduction/introduction"}]}]},"basePath":"","title":"Operations - Regatta","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}