How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.
The operator gives every module a stable Kubernetes Service, so its address does not change even if Kubernetes reschedules its Pod to a different node:
The SM Pod gets one Service, always ClusterIP, reachable only from inside your Kubernetes cluster.
Every RDB Pod gets its own Service, also always ClusterIP. The operator and SM use these directly for topology-aware routing to a specific RDB replica.
All RDB Pods together also get one aggregate Service, ClusterIP by default or LoadBalancer if you set spec.rdb.service.type. This is a simple entry point for clients that do not need to target a specific RDB replica.
Setting spec.rdb.service.type: LoadBalancer requests an externally reachable address for the aggregate Service. Kubernetes does not fulfill this by itself: it depends on a load-balancer integration already being available in your cluster - built in on managed offerings such as GKE, EKS, and AKS, or provided by an on-prem controller such as MetalLB. If your cluster has no such integration, the Service simply stays <pending> with no external IP. When the address is provisioned, traffic sent to it is forwarded to the Service, which then load-balances it across every RDB Pod, the same way any Kubernetes Service load-balances across its backing Pods, and is shared across every client that connects to it rather than reserved for one. It does not target one specific RDB Pod: a client connecting through the aggregate Service may reach any RDB replica.You can additionally restrict which source IPs may reach it with spec.rdb.service.loadBalancerSourceRanges (a list of CIDR blocks). Just like type: LoadBalancer itself, Kubernetes does not enforce this field directly: it is fulfilled by the same load-balancer integration, and enforcement varies by platform - for example GKE’s translates it into a firewall rule at the network edge, while other cloud providers and on-prem controllers differ or may not support it at all. Verify traffic is actually restricted on your platform rather than assuming it always is; if the integration ignores the field, the Service stays reachable from anywhere.
The aggregate RDB Service is the only Service the operator itself can expose outside your Kubernetes cluster: the SM Service and per-RDB Services are always generated as ClusterIP, with no built-in option to change that. This means RegattaDB management operations have no supported external access path out of the box - it does not mean SM is unreachable from outside the cluster. Nothing stops you from creating your own additional Service (or Ingress) pointed at the SM Pod’s selector labels to expose it yourself; the operator simply does not do this for you, will not manage or secure it, and will not know about it.
If you need to run RegattaDB management commands from an external host, run your client as a Pod inside the Kubernetes cluster, use a standard Kubernetes technique such as kubectl port-forward to reach SM temporarily, or create your own additional Service restricted to trusted source ranges and take responsibility for securing it. spec.rdb.service.type only supports ClusterIP/LoadBalancer today; if you specifically need a NodePort-style Service, the same applies - you could create your own additional Service alongside the operator-managed ones.
Was this page helpful?
{"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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"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/configuration/networking","slug":"/self-hosted-deployment/kubernetes/configuration/networking","pageMetadata":{"title":"Networking","description":"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.","href":"/self-hosted-deployment/kubernetes/configuration/networking"},"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 exposes SM and RDB Pods inside and outside your Kubernetes cluster.\"\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={code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The operator gives every module a stable Kubernetes Service, so its address does not change even if Kubernetes reschedules its Pod to a different node:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The SM Pod gets one Service, always `,_jsx(_components.code,{children:`ClusterIP`}),`, reachable only from inside your Kubernetes cluster.`]}),`\n`,_jsxs(_components.li,{children:[`Every RDB Pod gets its own Service, also always `,_jsx(_components.code,{children:`ClusterIP`}),`. The operator and SM use these directly for topology-aware routing to a specific RDB replica.`]}),`\n`,_jsxs(_components.li,{children:[`All RDB Pods together also get one aggregate Service, `,_jsx(_components.code,{children:`ClusterIP`}),` by default or `,_jsx(_components.code,{children:`LoadBalancer`}),` if you set `,_jsx(_components.code,{children:`spec.rdb.service.type`}),`. This is a simple entry point for clients that do not need to target a specific RDB replica.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Setting `,_jsx(_components.code,{children:`spec.rdb.service.type: LoadBalancer`}),` requests an externally reachable address for the aggregate Service. Kubernetes does not fulfill this by itself: it depends on a load-balancer integration already being available in your cluster - built in on managed offerings such as GKE, EKS, and AKS, or provided by an on-prem controller such as MetalLB. If your cluster has no such integration, the Service simply stays `,_jsx(_components.code,{children:`\u003cpending>`}),` with no external IP. When the address is provisioned, traffic sent to it is forwarded to the Service, which then load-balances it across every RDB Pod, the same way any Kubernetes Service load-balances across its backing Pods, and is shared across every client that connects to it rather than reserved for one. It does not target one specific RDB Pod: a client connecting through the aggregate Service may reach any RDB replica.`]}),`\n`,_jsxs(_components.p,{children:[`You can additionally restrict which source IPs may reach it with `,_jsx(_components.code,{children:`spec.rdb.service.loadBalancerSourceRanges`}),` (a list of CIDR blocks). Just like `,_jsx(_components.code,{children:`type: LoadBalancer`}),` itself, Kubernetes does not enforce this field directly: it is fulfilled by the same load-balancer integration, and enforcement varies by platform - for example GKE’s translates it into a firewall rule at the network edge, while other cloud providers and on-prem controllers differ or may not support it at all. Verify traffic is actually restricted on your platform rather than assuming it always is; if the integration ignores the field, the Service stays reachable from anywhere.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The aggregate RDB Service is the only Service the operator itself can expose outside your Kubernetes cluster: the SM Service and per-RDB Services are always generated as `,_jsx(_components.code,{children:`ClusterIP`}),`, with no built-in option to change that. This means RegattaDB management operations have no supported external access path out of the box - it does not mean SM is unreachable from outside the cluster. Nothing stops you from creating your own additional Service (or Ingress) pointed at the SM Pod’s selector labels to expose it yourself; the operator simply does not do this for you, will not manage or secure it, and will not know about it.`]})}),`\n`,_jsxs(_components.p,{children:[`If you need to run RegattaDB management commands from an external host, run your client as a Pod inside the Kubernetes cluster, use a standard Kubernetes technique such as `,_jsx(_components.code,{children:`kubectl port-forward`}),` to reach SM temporarily, or create your own additional Service restricted to trusted source ranges and take responsibility for securing it. `,_jsx(_components.code,{children:`spec.rdb.service.type`}),` only supports `,_jsx(_components.code,{children:`ClusterIP`}),`/`,_jsx(_components.code,{children:`LoadBalancer`}),` today; if you specifically need a NodePort-style Service, the same applies - you could create your own additional Service alongside the operator-managed ones.`]})]})}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":"Networking","description":"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.","href":"/self-hosted-deployment/kubernetes/configuration/networking"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"regatta","siteName":"Regatta","title":"Networking - Regatta","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T14:37:08.880Z","originalFileLocation":"self-hosted-deployment/kubernetes/configuration/networking.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 exposes SM and RDB Pods inside and outside your Kubernetes cluster.\">\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=\"Networking - Regatta\">\u003cmeta data-mint-head property=\"og:description\" content=\"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.\">\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/configuration/networking\">\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=Configuration\u0026amp;title=Networking\u0026amp;description=How+the+operator+exposes+SM+and+RDB+Pods+inside+and+outside+your+Kubernetes+cluster.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=3378dfda827e0ac03a30aed1c6889ef258dfe6b099ef910d898bf519af4743eb\">\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=\"Networking - Regatta\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://regatta.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Networking\u0026amp;description=How+the+operator+exposes+SM+and+RDB+Pods+inside+and+outside+your+Kubernetes+cluster.\u0026amp;theme=acca279d31253fc5f4f921a2\u0026amp;signature=3378dfda827e0ac03a30aed1c6889ef258dfe6b099ef910d898bf519af4743eb\">\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/configuration/networking\">\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/configuration/networking.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/configuration/networking#webpage\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking\",\"name\":\"Networking\",\"description\":\"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.\",\"dateModified\":\"2026-09-28T14:37:08.880Z\",\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kubernetes Deployment\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Networking\",\"item\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking#article\",\"headline\":\"Networking\",\"name\":\"Networking\",\"description\":\"How the operator exposes SM and RDB Pods inside and outside your Kubernetes cluster.\",\"url\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking\",\"mainEntityOfPage\":{\"@id\":\"https://docs.regatta.dev/self-hosted-deployment/kubernetes/configuration/networking#webpage\"},\"dateModified\":\"2026-09-28T14:37:08.880Z\",\"publisher\":{\"@id\":\"https://docs.regatta.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.regatta.dev#website\"}}]}\u003c/script>","agentPointerHref":"/self-hosted-deployment/kubernetes/configuration/networking.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","description":"Configure RDB block storage, repo and log storage, and raw block device access.","href":"/self-hosted-deployment/kubernetes/configuration/storage"},{"title":"Networking","href":"/self-hosted-deployment/kubernetes/configuration/networking"},{"title":"Security \u0026 Lifecycle","description":"Configure the Pod security context, RegattaDB's credentials, and whether the operator starts or stops it.","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","href":"/self-hosted-deployment/kubernetes/examples/static-storage-local-nvme"}]},{"title":"Operations","href":"/self-hosted-deployment/kubernetes/operations"},{"title":"Troubleshooting","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":"Networking - Regatta","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}