<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>DocumentDB Blog</title>
  <subtitle>Insights, updates, and deep dives into the world of document databases and open-source innovation.</subtitle>
  <id>https://documentdb.io/blogs/</id>
  <link href="https://documentdb.io/blogs/"/>
  <link href="https://documentdb.io/blogs/feed.xml" rel="self"/>
  <updated>2026-03-19T00:00:00+00:00</updated>
  <author><name>DocumentDB</name></author>
  
  <entry>
    <title>Meet the DocumentDB Kubernetes Operator</title>
    <id>https://documentdb.io/blogs/posts/meet-documentdb-kubernetes-operator/</id>
    <link href="https://documentdb.io/blogs/posts/meet-documentdb-kubernetes-operator/"/>
    <updated>2026-03-19T00:00:00+00:00</updated>
    <author><name>DocumentDB team</name></author>
    <summary>Preview an open-source operator that brings declarative deployment, secure connectivity, high availability, backup and restore, and automated multi-cloud deployment to DocumentDB on Kubernetes.</summary>
    <content type="html">&lt;p&gt;The DocumentDB Kubernetes Operator brings MongoDB API compatible document database management to any Kubernetes cluster — with declarative deployment, automatic high availability, backup and restore, TLS, and a documented multi-cloud deployment path across AKS, GKE, and EKS — all fully open source under the MIT license.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb&quot;&gt;DocumentDB&lt;/a&gt; is an open-source, MongoDB API compatible document database engine built on PostgreSQL, governed by the Linux Foundation. It powers vCore-based Azure Cosmos DB for MongoDB and provides native support for BSON data types, aggregation pipelines, change streams, vector search, and ACID transactions. The Kubernetes Operator runs and manages DocumentDB on Kubernetes: when you deploy a cluster, it creates and manages PostgreSQL instances, the DocumentDB Gateway, and the supporting Kubernetes resources around them. The gateway translates the MongoDB wire protocol, so existing MongoDB drivers — PyMongo, Node.js, Java, Go, C++ — work without code changes, and teams can keep using familiar clients such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mongosh&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;why-this-matters&quot;&gt;Why this matters&lt;/h2&gt;

&lt;p&gt;Kubernetes teams have strong patterns for stateless applications, but data services often still depend on custom runbooks and fragile operational glue. The DocumentDB Kubernetes Operator closes that gap for DocumentDB by giving platform teams a single declarative control surface for deployment, availability, security, and recovery.&lt;/p&gt;

&lt;p&gt;With the preview release, you can:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;install the operator with Helm&lt;/li&gt;
  &lt;li&gt;have the Helm chart install CloudNativePG as a dependency&lt;/li&gt;
  &lt;li&gt;deploy DocumentDB through a Kubernetes custom resource&lt;/li&gt;
  &lt;li&gt;connect with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mongosh&lt;/code&gt; and other MongoDB API compatible tooling&lt;/li&gt;
  &lt;li&gt;explore a public multi-cloud deployment playground spanning AKS, GKE, and EKS&lt;/li&gt;
  &lt;li&gt;manage backup, restore, TLS, and promotion workflows through Kubernetes-native APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;from-quickstart-to-useful-data-fast&quot;&gt;From quickstart to useful data fast&lt;/h2&gt;

&lt;p&gt;The quickstart is intentionally direct. Install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cert-manager&lt;/code&gt;, install the operator, create a Secret for gateway credentials, and apply a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DocumentDB&lt;/code&gt; resource. The public preview docs target Kubernetes 1.35+ and call out local development with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kind&lt;/code&gt; (v0.31+) and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minikube&lt;/code&gt;, while also showing cloud-friendly access patterns through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LoadBalancer&lt;/code&gt; services on AKS, EKS, and GKE.&lt;/p&gt;

&lt;p&gt;At the heart of that flow is a simple custom resource:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;apiVersion&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;documentdb.io/preview&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;kind&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;DocumentDB&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;metadata&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;documentdb-preview&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;namespace&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;documentdb-preview-ns&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;spec&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;nodeCount&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;instancesPerNode&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;documentDbCredentialSecret&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;documentdb-credentials&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;storage&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;pvcSize&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;10Gi&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;exposeViaService&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;serviceType&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ClusterIP&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Once the cluster reports a healthy state, you can connect locally with port forwarding or expose it through a load balancer in supported environments. The result is a much shorter path from cluster creation to a live MongoDB API compatible endpoint.&lt;/p&gt;

&lt;h2 id=&quot;built-for-day-two-operations&quot;&gt;Built for day-two operations&lt;/h2&gt;

&lt;p&gt;Bringing up a cluster is only the beginning, so the operator is opinionated about day-two workflows as well.&lt;/p&gt;

&lt;p&gt;Set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;instancesPerNode: 3&lt;/code&gt; and the operator creates one primary instance and two replicas for local high availability and automatic failover. Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Backup&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ScheduledBackup&lt;/code&gt; resources for on-demand and scheduled backups, retention policies, and restore workflows into a new cluster. And when operators need visibility into what is happening, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubectl documentdb&lt;/code&gt; plugin adds purpose-built commands: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;status&lt;/code&gt; for cluster-wide inspection, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;events&lt;/code&gt; for event triage, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;promote&lt;/code&gt; for controlled primary promotion.&lt;/p&gt;

&lt;p&gt;That makes the operator interesting not only for first deployment, but for the operational rhythm that follows: health checks, recovery planning, planned changes, and repeatable workflows that fit naturally into Kubernetes.&lt;/p&gt;

&lt;h2 id=&quot;security-and-connectivity-without-reinventing-the-basics&quot;&gt;Security and connectivity without reinventing the basics&lt;/h2&gt;

&lt;p&gt;Secure connectivity is built into the model from the start. The DocumentDB gateway always encrypts client connections; the TLS mode controls how certificates are managed. In practice, that means teams can choose the workflow that matches their environment:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SelfSigned&lt;/code&gt; for development and test environments&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CertManager&lt;/code&gt; for clusters that already standardize on cert-manager&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Provided&lt;/code&gt; for organizations that manage certificates through their own PKI processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same pattern carries into networking. The docs cover local development through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ClusterIP&lt;/code&gt; plus port forwarding, and cloud exposure through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LoadBalancer&lt;/code&gt; services where that model makes sense. The operator keeps those choices declarative instead of forcing each team to reinvent them.&lt;/p&gt;

&lt;h2 id=&quot;a-standout-multi-cloud-deployment-story&quot;&gt;A standout multi-cloud deployment story&lt;/h2&gt;

&lt;p&gt;The operator already has a public multi-cloud deployment playground spanning AKS, GKE, and EKS. With a single &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./deploy.sh&lt;/code&gt; workflow, teams can stand up the infrastructure, join clusters into AKS Fleet, configure Istio multi-cluster service mesh, and prepare the operator for cross-cloud replication. A companion &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./deploy-documentdb.sh&lt;/code&gt; workflow then deploys DocumentDB, selects a primary cluster, and outputs connection details plus failover commands.&lt;/p&gt;

&lt;p&gt;That is what makes the multi-cloud story worth highlighting: this is not just a vague promise of “runs anywhere,” but a concrete, hands-on path to run a MongoDB API compatible database across the three major managed Kubernetes platforms. And for hybrid environments, the repo also includes a KubeFleet-based guide for spanning AKS and an on-premises Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;Just as importantly, the operator keeps sensitive workflows explicit. Promotion is an intentional operational action, surfaced through Kubernetes resources and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubectl documentdb promote&lt;/code&gt; workflow, which is often exactly the right design when changes cross infrastructure or compliance boundaries.&lt;/p&gt;

&lt;h2 id=&quot;why-try-it-now&quot;&gt;Why try it now&lt;/h2&gt;

&lt;p&gt;The project is in public preview, which makes now the ideal time to evaluate it and influence its direction before general availability. This preview gives you a concrete way to see how DocumentDB fits into your Kubernetes platform: start locally, inspect the declarative control model, test backup and restore, evaluate TLS options, and explore the full operator experience.&lt;/p&gt;

&lt;p&gt;The public docs are clear that the operator is not yet recommended for production workloads — but that is exactly why early feedback matters. Try it, push on the edges, and &lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/issues&quot;&gt;let the team know&lt;/a&gt; what you need for GA.&lt;/p&gt;

&lt;h2 id=&quot;start-exploring&quot;&gt;Start exploring&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator&quot;&gt;GitHub repository&lt;/a&gt; — star the project, file issues, and contribute&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/blob/main/docs/operator-public-documentation/preview/index.md&quot;&gt;Quickstart guide&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/blob/main/docs/operator-public-documentation/preview/backup-and-restore.md&quot;&gt;Backup and restore guide&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/blob/main/docs/operator-public-documentation/preview/kubectl-plugin.md&quot;&gt;kubectl-documentdb plugin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/blob/main/docs/operator-public-documentation/preview/configuration/tls.md&quot;&gt;TLS configuration guide&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/documentdb/documentdb-kubernetes-operator/blob/main/documentdb-playground/multi-cloud-deployment/README.md&quot;&gt;Multi-cloud deployment playground (AKS + GKE + EKS)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    <category term="Kubernetes"/><category term="Operator"/><category term="DocumentDB"/><category term="Open Source"/>
  </entry>
  
</feed>
