{"id":4848,"date":"2018-03-19T09:17:21","date_gmt":"2018-03-19T16:17:21","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4848"},"modified":"2020-11-12T11:37:08","modified_gmt":"2020-11-12T19:37:08","slug":"kubernetes-operators-game-changer","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/","title":{"rendered":"Why Kubernetes Operators Are a Game Changer"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">The whole web developer community is\u00a0excited about Kubernetes (K8s). No wonder it is the hottest topic at the conferences and developer events that I have been to the last year.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It is not just a tool for managing containers, in fact, K8s allows you to easily add <\/span><i><span style=\"font-weight: 400;\">load balancing <\/span><\/i><span style=\"font-weight: 400;\">and avoids the need of a <\/span><i><span style=\"font-weight: 400;\">service discovery layer<\/span><\/i><span style=\"font-weight: 400;\"> (you no longer need <\/span><a href=\"https:\/\/github.com\/Netflix\/eureka\"><span style=\"font-weight: 400;\">eureka<\/span><\/a><span style=\"font-weight: 400;\"> for instance). \u00a0K8s also automate application deployments and updates, and most importantly, let you plug\/write custom controller for your infrastructure.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fantastic, right? But managing stateless containers isn\u2019t that complicated, after all, they are essentially ephemeral and you can kill and spin up instances as you wish without any considerable side effects. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">But this is half of the story, in general, applications can\u2019t be entirely stateless, and in most cases, we simply push the state to the layers down below. So, how do we deal with stateful applications in K8s? Luckily, since version 1.5 there is something called StatefulSets.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><b>Stateful Containers<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Kubernetes StatefulSets gives you a set of resources to deal with stateful containers, such as: volumes, stable network ids, ordinal indexes from 0 to N, etc. Volumes are one of the key features which allow us to run stateful applications on top of Kubernetes, let\u2019s see the two main types currently supported:<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Ephemeral storages<\/b>\u00a0<strong>v<\/strong><b>olumes<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">The behavior of ephemeral storages is different than what you are used to in Docker, in Kubernetes the volume outlives any containers that run within the Pod and the data is preserved across container restarts. But if the Pod gets killed, the volume is automatically removed. <\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Persistent storage volumes<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">In a persistent storage, as the name suggests, the data lifetime is independent of the Pod\u2019s lifetime. So, even when the Pod dies or is moved to another node, that data still persists until it is explicitly deleted by the user. In those kinds of volumes, the data is stored typically <\/span><b>remotely<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">We are looking forward to Kubernetes support to <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=GAuWDeaVjng\"><span style=\"font-weight: 400;\">Local Persistent Storages<\/span><\/a><span style=\"font-weight: 400;\"> as it will definitely be the best fit for running databases, but in the meantime, we use ephemeral storages by default. At this point, you might wonder why we are using ephemeral storages instead of the persistent ones. Not surprisingly, there are many reasons for that:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Ephemeral storages are faster and cheaper than persistent, it would require more infrastructure\/networking to use persistent storages as you need to send the data back and forth<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">K8s 1.9 introduced <\/span><a href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/storage\/raw-block-pv.md\"><span style=\"font-weight: 400;\">Raw Block Support<\/span><\/a><span style=\"font-weight: 400;\">, which allows you to access physical disks in your VM instance to use it in your application.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Maintain networked storage systems is not trivial<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">You can always try to reboot the container first instead of killing the whole Pod:<\/span><\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u00a0\u00a0<\/span><\/span>\n<pre class=\"lang:default decode:true \">kubectl exec POD_NAME -c CONTAINER_NAME reboot<\/pre>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">You can configure Couchbase to automatically replicate your data, so even if N Pods dies, no data will be lost.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Part of K8s job is to run Pods in different racks to avoid massive failures.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">However, there are a few scenarios where using Remote Persistent Storages would be worth the extra latency cost, like in massive databases for instance, when the rebalancing process takes several minutes to finish. That is why we also will add support for Remote Persistent Storages.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One of the downsides of Statefulsets is the limited management, that is why we decided to e<\/span><span style=\"font-weight: 400;\">xtend the Kubernetes API through the use of a Custom Resource Definition (CRD), which allows us to create a custom native resource in Kubernetes similar to a StatefulSet or a Deployment, but designed specifically for managing Couchbase instances.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Great! So, with StatefulSets\/CRDs we have all the hardware operations arranged, there is just a \u201csmall\u201d thing missing here, what about the state of the application itself? In a database, for instance, adding a new node to the cluster is not nearly enough, you would still be required to trigger some processes, such as rebalancing to move\/replicate some of the data to the newly added node to make it fully operational. That is exactly why K8s Operators joined the game.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><b>Kubernetes Operators<\/b><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Kubernetes 1.7 <\/span><span style=\"font-weight: 400;\">has added an important feature called\u00a0<\/span><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/api-extension\/custom-resources\/\"><span style=\"font-weight: 400;\">Custom Controllers<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><span style=\"font-weight: 400;\">\u00a0In summary, it enables<\/span><span style=\"font-weight: 400;\"> developers to extend and add new functionalities, replace existing ones (like replacing kube-proxy for instance), and of course, automate administration tasks <\/span><span style=\"font-weight: 400;\">as if they were a native Kubernetes component.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">An Operator is nothing more than a set of application-specific custom controllers. So, why is it a game changer? Well, controllers have direct access to Kubernetes API, which means they can monitor the cluster, change pods\/services, scale up\/down and call endpoints of the running applications, all according to custom rules written inside those controllers. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">To illustrate this behavior, let\u2019s see how Couchbase\u2019s Operator works when a Pod gets killed:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4850\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/Picture1.png\" alt=\"\" width=\"746\" height=\"467\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/Picture1.png 796w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/Picture1-300x188.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/Picture1-768x480.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/Picture1-20x13.png 20w\" sizes=\"auto, (max-width: 746px) 100vw, 746px\" \/><\/p>\n<h6 style=\"text-align: center;\">You can find out more about operators <a href=\"https:\/\/coreos.com\/blog\/introducing-operators.html\">here<\/a><\/h6>\n<p><span style=\"font-weight: 400;\">As you can see in the figure above, the Operator monitors and analyzes the cluster, and based on a set of parameters, triggers a series of actions to achieve the desired state. This reconciliation process is all over the place in K8s. But not all actions are equal, in our example, we have two distinct categories:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>Infrastructure &#8211; add a new node<\/b><span style=\"font-weight: 400;\">: The operator requests via Kubernetes API to launch a new Pod running Couchbase Server.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Domain Specific \u2013 Add node to the cluster\/ Trigger data rebalancing: <\/b><span style=\"font-weight: 400;\">The operator knows how Couchbase works and calls the correct rest endpoint to add the new node to the cluster and trigger data rebalancing.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">That is the real power of Operators, <em><strong>they allow you to write an application to fully manage another<\/strong><\/em>, and guess which kind stateful applications are the hardest to manage? You are right: Databases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Developers have always expected databases to work out-of-the-box, when in fact, they historically are exactly the opposite. We even have a specific name for the person responsible for taking care of the database, our beloved DBAs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Couchbase\u2019s Operator was created as an effort to change this scenario and make databases easy to manage without locking you to a specific cloud vendor. Currently, it supports automated cluster provisioning, elastic scalability, auto-recovery, logging and access to the web console, but many more features are coming in the future. If you want to read more about it, please check out <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-operator\/\"><span style=\"font-weight: 400;\">this article<\/span><\/a><span style=\"font-weight: 400;\"> or refer to Couchbase\u2019s official documentation <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I also have to mention that It is the very first official operator launched for a database, and there are some small community projects\u00a0already trying to build operators for MySQL, <\/span><a href=\"https:\/\/github.com\/zalando-incubator\/postgres-operator\"><span style=\"font-weight: 400;\">Postrgres<\/span><\/a><span style=\"font-weight: 400;\"> and other databases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Operator\u2019s ecosystem is growing quickly, <\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/github.com\/rook\/rook\">rook<\/a><\/span><span style=\"font-weight: 400;\">\u00a0for instance, lets you deploy something very similar to AWS S3. The Apache Kafka Kubernetes operator is coming soon and there are many other initiatives out there. We expect a major boost in the number of operators in the upcoming months now that all major cloud providers support K8s.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finally, Kubernetes provides a cloud-agnostic application deployment and management. It is so powerful that it might lead us to treat cloud providers almost like a commodity, as you will be able to migrate freely between them.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the future, choosing a cloud provider could be just a matter of which one offers the best performance\/cost. The market impact of this radical shift is still unclear, but as developers, we are certainly the biggest winners.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>UPDATE: Even though this article was written not so long ago, a lot of things have already changed. We have now the <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/operator-config.html\">Couchbase Autonomous Operator 1.2<\/a>, <a href=\"https:\/\/kubernetes.io\/blog\/2019\/04\/04\/kubernetes-1.14-local-persistent-volumes-ga\/\">Local Persistent Storage<\/a> is GA, and there is an <a href=\"https:\/\/operatorhub.io\/\">Operator Hub<\/a> to centralize all open-source operators.<\/p>\n<p>If you have any questions, feel free to tweet me at <a href=\"https:\/\/twitter.com\/deniswsrosa\">@deniswsrosa<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The whole web developer community is\u00a0excited about Kubernetes (K8s). No wonder it is the hottest topic at the conferences and developer events that I have been to the last year. It is not just a tool for managing containers, in [&hellip;]<\/p>\n","protected":false},"author":8754,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1821],"tags":[1545,2138],"ppma_author":[9059],"class_list":["post-4848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-architecture","tag-kubernetes","tag-kubernetes-operator"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Why Kubernetes Operators Are a Game Changer - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.\" \/>\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\/kubernetes-operators-game-changer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Kubernetes Operators Are a Game Changer\" \/>\n<meta property=\"og:description\" content=\"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-19T16:17:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-12T19:37:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@deniswsrosa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\"},\"author\":{\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\"},\"headline\":\"Why Kubernetes Operators Are a Game Changer\",\"datePublished\":\"2018-03-19T16:17:21+00:00\",\"dateModified\":\"2020-11-12T19:37:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\"},\"wordCount\":1290,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"kubernetes\",\"kubernetes operator\"],\"articleSection\":[\"Couchbase Architecture\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\",\"name\":\"Why Kubernetes Operators Are a Game Changer - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-03-19T16:17:21+00:00\",\"dateModified\":\"2020-11-12T19:37:08+00:00\",\"description\":\"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why Kubernetes Operators Are a Game Changer\"}]},{\"@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\/fe3c5273e805e72a5294611a48f62257\",\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"caption\":\"Denis Rosa, Developer Advocate, Couchbase\"},\"description\":\"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.\",\"sameAs\":[\"https:\/\/x.com\/deniswsrosa\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why Kubernetes Operators Are a Game Changer - The Couchbase Blog","description":"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.","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\/kubernetes-operators-game-changer\/","og_locale":"en_US","og_type":"article","og_title":"Why Kubernetes Operators Are a Game Changer","og_description":"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.","og_url":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-03-19T16:17:21+00:00","article_modified_time":"2020-11-12T19:37:08+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Denis Rosa, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@deniswsrosa","twitter_misc":{"Written by":"Denis Rosa, Developer Advocate, Couchbase","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/"},"author":{"name":"Denis Rosa, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257"},"headline":"Why Kubernetes Operators Are a Game Changer","datePublished":"2018-03-19T16:17:21+00:00","dateModified":"2020-11-12T19:37:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/"},"wordCount":1290,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["kubernetes","kubernetes operator"],"articleSection":["Couchbase Architecture"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/","url":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/","name":"Why Kubernetes Operators Are a Game Changer - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-03-19T16:17:21+00:00","dateModified":"2020-11-12T19:37:08+00:00","description":"Kubernetes operatord have taken the software development world by storm. Learn more about stateful containers, Kubernetes 1.7, and custom controllers.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Why Kubernetes Operators Are a Game Changer"}]},{"@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\/fe3c5273e805e72a5294611a48f62257","name":"Denis Rosa, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6","url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","caption":"Denis Rosa, Developer Advocate, Couchbase"},"description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/"}]}},"authors":[{"term_id":9059,"user_id":8754,"is_guest":0,"slug":"denis-rosa","display_name":"Denis Rosa, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","author_category":"","last_name":"Rosa, Developer Advocate, Couchbase","first_name":"Denis","job_title":"","user_url":"","description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4848","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\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4848"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4848\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4848"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}