{"id":8646,"date":"2020-05-07T12:43:55","date_gmt":"2020-05-07T19:43:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8646"},"modified":"2025-06-13T23:42:38","modified_gmt":"2025-06-14T06:42:38","slug":"couchbase-mobile-on-kubernetes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/","title":{"rendered":"Deploying a Couchbase Mobile Backend on Kubernetes"},"content":{"rendered":"<p>The <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-autonomous-operator-2-0-for-kubernetes-is-now-ga\/\">Couchbase Autonomous Operator 2.0<\/a> release introduces a number of groundbreaking features and enhancements that make it easier than ever to deploy, provision, monitor and manage your Couchbase Server nodes on Kubernetes. In addition to Couchbase server nodes, \u00a0<a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/couchbase-mobile-index.html\">Couchbase Mobile<\/a> deployments include <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/introduction.html\">Sync Gateways<\/a>\u00a0that\u00a0provide secure data synchronization between <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/introduction.html\">Couchbase Lite<\/a> enabled clients and the cloud.\u00a0Couchbase Server is the persistent backing storage for Sync Gateway.<\/p>\n<p>The stateless nature of Sync Gateway lends itself well to Kubernetes. In this post, we provide an overview of how to deploy Sync Gateway on Kubernetes while leveraging the client authentication enhancements introduced in Couchbase Autonomous Operator 2.0.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/05\/couchbase-mobile-Copy-of-Page-1-e1588801735788.png\" alt=\"Couchbase Mobile Deployment\" \/><\/figure>\n<h3><\/h3>\n<p><!--more--><\/p>\n<h3 id=\"syncgatewayandcouchbaseautonomousoperator\">Sync Gateway and Couchbase Autonomous Operator<\/h3>\n<p>The Sync Gateway cluster is deployed and managed independently of the Couchbase Server cluster using a <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/deployment\/\">Kubernetes deployment<\/a> controller. While the Couchbase Operator to not used to deploy, provision, and manage the Sync Gateway, the\u00a0<a href=\"https:\/\/www.couchbase.com\/downloads\/\">download package<\/a> includes a sample Deployment template for deploying a Sync Gateway cluster and connecting it a Couchbase Server cluster.<\/p>\n<p>There are two main steps when it comes to deploying a Sync Gateway cluster.<\/p>\n<h3 id=\"connectingsyncgatewaytocouchbaseserver\">Connecting Sync Gateway to Couchbase Server<\/h3>\n<p>First, the Sync Gateway cluster must be bootstrapped with the appropriate Couchbase Server bucket, as specified in the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.7\/config-properties.html#databases-foo_db-server\">Sync Gateway server config<\/a> property. A Sync Gateway cluster can connect to a Couchbase Server using any of the following network configurations viz.-<\/p>\n<ul>\n<li>To a Couchbase Server on the same Kubernetes cluster (a.k.a <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-couchbase-networking.html#intra-kubernetes-networking\">\u201cintra-kubernetes\u201d<\/a>)<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/kubernetes-SGW-intra-cluster-1.png\" alt=\"Sync Gateway on same Kubernetes Cluster as server\" \/><\/li>\n<li>To a Couchbase server cluster in a separate Kubernetes cluster (a.k.a <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-couchbase-networking.html#inter-kubernetes-networking-with-forwarded-dns\">&#8220;inter-kubernetes&#8221;<\/a>)<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/kubernetes-SGW-inter-cluster.png\" alt=\"Sync Gateway on different Kubernetes Cluster as server\" \/><\/li>\n<\/ul>\n<p>This would require Sync Gateway versions 2.7.1 and later.<\/p>\n<ul>\n<li>To a Coucbase Server cluster over a public network (a.k.a <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-couchbase-networking.html#public-networking-with-external-dns\">&#8220;public networking&#8221;<\/a>).<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/kubernetes-public-network.png\" alt=\"Sync Gateway on different Kubernetes Cluster than server\" \/><\/li>\n<\/ul>\n<p>This would require Sync Gateway versions 2.7.1 and later.<\/p>\n<p>It is recommended that communication between Sync Gateway and the server be <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-tls.html\">secured over TLS<\/a> regardless of the network configuration.<\/p>\n<p>As such, while highly recommended, it is not required for the server to be deployed on Kubernetes.<\/p>\n<p>In addition to configuring the network to enable Sync Gateway connect to the server, the Sync Gateway nodes must authenticate with Couchbase Server. You have two options &#8211;<\/p>\n<h4 id=\"syncgatewayrbacuser\">Sync Gateway RBAC User<\/h4>\n<p>This is probably the most common authentication mechanism used in Couchbase Mobile deployments. Operator 2.0 introduces support for <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-user-rbac.html\">RBAC management<\/a>. You can use this capability to let the operator automatically manage the creation of Sync Gateway RBAC user. For this, you define a <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/reference-couchbaseuser.html\">Couchbase User<\/a> corresponding to the Sync Gateway user and create appropriate <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-user-rbac.html#user-role-binding\">User Role Binding<\/a> that will bind the Sync Gateway user with relevant administrative roles (<em>bucket_full_access<\/em>)as defined by a <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/reference-couchbasegroup.html\">Couchbase Group<\/a>.<\/p>\n<p>In order to leverage this capability, you will need to enable RBAC management.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/05\/rbac_managed-e1588803045738.png\" alt=\"Kubernetes Operator RBAC Management\" \/><\/p>\n<p>You still have a choice to not let the Operator manage the RBAC user, in which case, you would manually create the user on the server per <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.7\/gs-sgw-svr-cfg.html#step-2create-rbac-user\">usual procedures<\/a>.<\/p>\n<h4 id=\"tlsclientauthentication\">TLS Client Authentication<\/h4>\n<p>Operator 2.0 fully supports <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/concept-tls.html#tls-client-authentication\">mTLS<\/a>\u00a0(mutual TLS). This can be leveraged for authenticating the Sync Gateway using client certificates.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/05\/mTLS-e1588802690770.png\" alt=\"Mutual Authentication \" \/><\/figure>\n<p>Once the Sync Gateway is successfully connected to the server, the next step is to expose it to Couchbase Lite clients<\/p>\n<h3 id=\"exposingsyncgatewaytocouchbaseliteclients\">Exposing Sync Gateway to Couchbase Lite Clients<\/h3>\n<p>A typical Couchbase Mobile deployment consists of one or more Sync Gateway nodes fronted by a load balancer. Couchbase Lite clients connect to the load balancer. Communication from the clients to the Sync Gateway is secured via TLS. You have a couple of deployment choices &#8211;<\/p>\n<h4 id=\"loadbalanceraspass-through\">Load Balancer as Pass-through<\/h4>\n<p>In this option, the load balancer operating at <a href=\"https:\/\/www.nginx.com\/resources\/glossary\/layer-4-load-balancing\/\">Layer 4 of the network stack<\/a> is a pass-through for traffic between Couchbase Lite clients and Sync Gateway. TLS connections are end-to-end and terminate at the Sync Gateway. This option works for cloud providers supporting external <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/service\/#loadbalancer\">load balancers<\/a>. You can provision a Load Balancer for Sync Gateway service.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/kubernetes-SGW-Load-Balancer-Pass-through.png\" alt=\"Layer 4 load balancer with Sync Gateway\" \/><\/p>\n<h4 id=\"loadbalancerastlstermination\">Load Balancer as TLS Termination<\/h4>\n<p>In this option, an <a href=\"https:\/\/www.nginx.com\/resources\/glossary\/layer-7-load-balancing\/\">application-level load balancer<\/a> acts as a proxy intercepting communications between Couchbase Lite clients and Sync Gateway, and load balancing decisions are made by inspecting the packet contents. TLS connections are terminated at the load balancer, alleviating the load on the Sync Gateway. This is a very common deployment model for Couchbase Mobile.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/kubernetes-SGW-Load-Balancer-SSL-Terminator.png\" alt=\"TLS Termination Point with App Gateway\" \/><\/figure>\n<h3 id=\"tutorial\">Walkthrough<\/h3>\n<p>We have put together a three-part tutorial that provides step-by-step instructions to<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-sync-gateway.html\">Deploy<\/a> a Sync Gateway cluster and connect it to the server<\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-sync-gateway-clients.html\">Expose<\/a> the Sync Gateway deployment to external Couchbase Lite and RESTful clients and<\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-sync-gateway-manage.html\">Manage<\/a>\u00a0the Sync Gateway cluster<\/li>\n<\/ul>\n<p>It includes a discussion of best practices and sample .yaml config files which can be used as a reference and customized for your deployment.<\/p>\n<p>The instructions in the tutorial apply to any Kubernetes environment. The differences that you will encounter between the managed Kubernetes environments will primarily be in the network configuration and configuration of platform-specific load balancers.<\/p>\n<p>Here are the direct links for setting up Couchbase server cluster on popular managed Kubernetes environments using Autonomous Operator. Once the Couchbase Server is deployed, follow the steps described in the tutorial above to deploy the Sync Gateway cluster.<\/p>\n<ul>\n<li>Instructions for setting up Couchbase Server cluster with Amazon Elastic Container Service for Kubernetes (EKS) on Amazon Web Services (AWS) is outlined in this <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-eks.html\">tutorial<\/a><\/li>\n<li>Instructions for setting up Couchbase Server cluster with Azure Container Service (AKS) on Azure Cloud Platform is outlined in this <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-aks.html\">tutorial<\/a><\/li>\n<li>Instructions for setting up Couchbase Server cluster with Amazon Elastic Container Service for Kubernetes (EKS) on Amazon Web Services (AWS) is outlined in this <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/tutorial-gke.html\">tutorial<\/a><\/li>\n<\/ul>\n<h3 id=\"deployingusinghelm\">Deploying using Helm<\/h3>\n<p>The operator <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/helm-setup-guide.html\">chart<\/a> is now extended to support Sync Gateway. So you can deploy the Operator, the Couchbase server and the Sync Gateway clusters in a single step! Of course, the chart can be used to deploy the Sync Gateway cluster exclusively connected to a Couchbase Server that is not deployed using Helm. The Sync Gateway installation is disabled by default.<\/p>\n<p>If you want to deploy the Sync Gateway, create an appropriate <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/helm-setup-guide.html#custom-installation\">override<\/a> for the <a href=\"https:\/\/github.com\/couchbase-partners\/helm-charts\/blob\/master\/couchbase-operator\/values.yaml\"><code>values.yaml<\/code><\/a> customizing it to suit your deployment needs and install it.<\/p>\n<pre><code>$ helm install sync-gateway-helm \u2013values myvalues.yaml couchbase\/couchbase-operator<\/code><\/pre>\n<h3 id=\"whatnext\">What Next<\/h3>\n<p>From the tutorials, you\u2019d see that it only takes a couple of steps to deploy your Sync Gateway containers using Kubernetes.<\/p>\n<p>If\u00a0you have questions or feedback, please leave a comment below or feel free to reach out to me at Twitter\u00a0<a href=\"https:\/\/twitter.com\/rajagp\">@rajagp<\/a>\u00a0or <a href=\"mailto:priya.rajagopal@couchbase.com\">email me<\/a>. \u00a0The\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">Couchbase Forums<\/a> are another good place to reach out with\u00a0questions.<\/p>\n<h3 id=\"acknowledgements\">Acknowledgments<\/h3>\n<p>I would like to thank <a href=\"https:\/\/github.com\/spjmurray?tab=overview&amp;org=couchbase\">Simon Murray<\/a> for his feedback on the tutorial.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Couchbase Autonomous Operator 2.0 release introduces a number of groundbreaking features and enhancements that make it easier than ever to deploy, provision, monitor and manage your Couchbase Server nodes on Kubernetes. In addition to Couchbase server nodes, \u00a0Couchbase Mobile [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":8658,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,9284,2225,1810,1816,2322,2366],"tags":[2358],"ppma_author":[8948],"class_list":["post-8646","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-autonomous-operator","category-cloud","category-couchbase-mobile","category-couchbase-server","category-kubernetes","category-sync-gateway","tag-couchbase-mobile-2-x"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Deploying a Couchbase Mobile Backend on Kubernetes - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"We discuss best practices to deploy &amp; manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying a Couchbase Mobile Backend on Kubernetes\" \/>\n<meta property=\"og:description\" content=\"We discuss best practices to deploy &amp; manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-07T19:43:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:42:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"553\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Deploying a Couchbase Mobile Backend on Kubernetes\",\"datePublished\":\"2020-05-07T19:43:55+00:00\",\"dateModified\":\"2025-06-14T06:42:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/\"},\"wordCount\":1066,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2020\\\/05\\\/Container-Blog-Feature.jpg\",\"keywords\":[\"couchbase mobile 2.x\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Autonomous Operator\",\"Couchbase Capella\",\"Couchbase Mobile\",\"Couchbase Server\",\"Kubernetes\",\"Sync Gateway\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/\",\"name\":\"Deploying a Couchbase Mobile Backend on Kubernetes - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2020\\\/05\\\/Container-Blog-Feature.jpg\",\"datePublished\":\"2020-05-07T19:43:55+00:00\",\"dateModified\":\"2025-06-14T06:42:38+00:00\",\"description\":\"We discuss best practices to deploy & manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2020\\\/05\\\/Container-Blog-Feature.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2020\\\/05\\\/Container-Blog-Feature.jpg\",\"width\":1400,\"height\":553,\"caption\":\"Sync Gateway container cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-mobile-on-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying a Couchbase Mobile Backend on Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/rajagp\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/author\\\/priya-rajagopalcouchbase-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Deploying a Couchbase Mobile Backend on Kubernetes - The Couchbase Blog","description":"We discuss best practices to deploy & manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Deploying a Couchbase Mobile Backend on Kubernetes","og_description":"We discuss best practices to deploy & manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-05-07T19:43:55+00:00","article_modified_time":"2025-06-14T06:42:38+00:00","og_image":[{"width":1400,"height":553,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg","type":"image\/jpeg"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Deploying a Couchbase Mobile Backend on Kubernetes","datePublished":"2020-05-07T19:43:55+00:00","dateModified":"2025-06-14T06:42:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/"},"wordCount":1066,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg","keywords":["couchbase mobile 2.x"],"articleSection":["Best Practices and Tutorials","Couchbase Autonomous Operator","Couchbase Capella","Couchbase Mobile","Couchbase Server","Kubernetes","Sync Gateway"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/","name":"Deploying a Couchbase Mobile Backend on Kubernetes - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg","datePublished":"2020-05-07T19:43:55+00:00","dateModified":"2025-06-14T06:42:38+00:00","description":"We discuss best practices to deploy & manage Couchbase mobile on Kubernetes. Couchbase Mobile enables secure data sync between mobile clients and the cloud","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/05\/Container-Blog-Feature.jpg","width":1400,"height":553,"caption":"Sync Gateway container cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-mobile-on-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Deploying a Couchbase Mobile Backend on Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Senior Director, Product Management","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/"}]}},"acf":[],"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=8646"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8646\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/8658"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=8646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=8646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=8646"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=8646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}