{"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\/es\/kubernetes-operators-game-changer\/","title":{"rendered":"Por qu\u00e9 los operadores de Kubernetes cambian las reglas del juego"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Toda la comunidad de desarrolladores web est\u00e1 entusiasmada con Kubernetes (K8s). No es de extra\u00f1ar que sea el tema m\u00e1s candente en las conferencias y eventos para desarrolladores a los que he asistido el \u00faltimo a\u00f1o.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No es s\u00f3lo una herramienta para gestionar contenedores, de hecho, K8s le permite a\u00f1adir f\u00e1cilmente <\/span><i><span style=\"font-weight: 400;\">equilibrio de carga <\/span><\/i><span style=\"font-weight: 400;\">y evita la necesidad de un <\/span><i><span style=\"font-weight: 400;\">capa de descubrimiento de servicios<\/span><\/i><span style=\"font-weight: 400;\"> (ya no necesita <\/span><a href=\"https:\/\/github.com\/Netflix\/eureka\"><span style=\"font-weight: 400;\">eureka<\/span><\/a><span style=\"font-weight: 400;\"> por ejemplo).  K8s tambi\u00e9n automatiza los despliegues y actualizaciones de aplicaciones y, lo que es m\u00e1s importante, le permite conectar\/escribir controladores personalizados para su infraestructura.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fant\u00e1stico, \u00bfverdad? Pero la gesti\u00f3n de contenedores sin estado no es tan complicada, despu\u00e9s de todo, son esencialmente ef\u00edmeros y puede matar y girar instancias como desee sin efectos secundarios considerables. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pero esto es la mitad de la historia, en general, las aplicaciones no pueden ser totalmente sin estado, y en la mayor\u00eda de los casos, simplemente empujamos el estado a las capas inferiores. Entonces, \u00bfc\u00f3mo lidiamos con aplicaciones con estado en K8s? Afortunadamente, desde la versi\u00f3n 1.5 existe algo llamado StatefulSets.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><b>Contenedores con estado<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Kubernetes StatefulSets te da un conjunto de recursos para manejar contenedores con estado, tales como: vol\u00famenes, ids de red estables, \u00edndices ordinales de 0 a N, etc. Los vol\u00famenes son una de las caracter\u00edsticas clave que nos permiten ejecutar aplicaciones con estado sobre Kubernetes, veamos los dos tipos principales soportados actualmente:<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Almacenamientos ef\u00edmeros<\/b>\u00a0<strong>v<\/strong><b>olumes<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">El comportamiento de los almacenamientos ef\u00edmeros es diferente a lo que est\u00e1s acostumbrado en Docker, en Kubernetes el volumen sobrevive a cualquier contenedor que se ejecute dentro del Pod y los datos se conservan a trav\u00e9s de reinicios de contenedores. Pero si el Pod muere, el volumen se elimina autom\u00e1ticamente. <\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Vol\u00famenes de almacenamiento persistentes<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">En un almacenamiento persistente, como su nombre indica, el tiempo de vida de los datos es independiente del tiempo de vida del Pod. As\u00ed, incluso cuando el Pod muere o es movido a otro nodo, esos datos persisten hasta que son expl\u00edcitamente borrados por el usuario. En ese tipo de vol\u00famenes, los datos se almacenan t\u00edpicamente <\/span><b>a distancia<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Estamos deseando que la compatibilidad con Kubernetes llegue a <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=GAuWDeaVjng\"><span style=\"font-weight: 400;\">Almacenes locales persistentes<\/span><\/a><span style=\"font-weight: 400;\"> ya que sin duda ser\u00e1 el m\u00e1s adecuado para ejecutar bases de datos, pero mientras tanto, utilizamos almacenamientos ef\u00edmeros por defecto. Llegados a este punto, puede que te preguntes por qu\u00e9 utilizamos almacenamientos ef\u00edmeros en lugar de persistentes. No es sorprendente, hay muchas razones para ello:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Los almacenamientos ef\u00edmeros son m\u00e1s r\u00e1pidos y baratos que los persistentes. Utilizar almacenamientos persistentes requiere m\u00e1s infraestructura y redes, ya que hay que enviar los datos de un lado a otro.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Presentaci\u00f3n de K8s 1.9 <\/span><a href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/storage\/raw-block-pv.md\"><span style=\"font-weight: 400;\">Soporte para bloques en bruto<\/span><\/a><span style=\"font-weight: 400;\">que le permite acceder a los discos f\u00edsicos de su instancia VM para utilizarlos en su aplicaci\u00f3n.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Mantener los sistemas de almacenamiento en red no es trivial<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Siempre puedes intentar reiniciar primero el contenedor en lugar de matar todo el 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;\">Puedes configurar Couchbase para que replique autom\u00e1ticamente tus datos, de modo que incluso si N Pods muere, no se perder\u00e1 ning\u00fan dato.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Parte del trabajo de K8 es hacer funcionar Pods en diferentes racks para evitar fallos masivos.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Sin embargo, hay algunos escenarios en los que utilizar Almacenamientos Remotos Persistentes merecer\u00eda la pena por el coste extra de latencia, como en bases de datos masivas, por ejemplo, cuando el proceso de reequilibrado tarda varios minutos en finalizar. Por eso tambi\u00e9n a\u00f1adiremos soporte para Almacenamientos Remotos Persistentes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Uno de los inconvenientes de Statefulsets es la gesti\u00f3n limitada, por eso decidimos e<\/span><span style=\"font-weight: 400;\">xtendemos la API de Kubernetes mediante el uso de una Custom Resource Definition (CRD), que nos permite crear un recurso nativo personalizado en Kubernetes similar a un StatefulSet o un Deployment, pero dise\u00f1ado espec\u00edficamente para gestionar instancias de Couchbase.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a1Genial! Entonces, con StatefulSets\/CRDs tenemos todas las operaciones de hardware arregladas, s\u00f3lo falta una \"peque\u00f1a\" cosa aqu\u00ed, \u00bfqu\u00e9 pasa con el estado de la propia aplicaci\u00f3n? En una base de datos, por ejemplo, la adici\u00f3n de un nuevo nodo al cl\u00faster no es suficiente, todav\u00eda ser\u00eda necesario desencadenar algunos procesos, como el reequilibrio para mover \/ replicar algunos de los datos en el nodo reci\u00e9n a\u00f1adido para que sea plenamente operativo. Esa es exactamente la raz\u00f3n por la que los Operadores K8s entraron en el juego.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><b>Operadores de Kubernetes<\/b><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Kubernetes 1.7 <\/span><span style=\"font-weight: 400;\">ha a\u00f1adido una importante funci\u00f3n denominada\u00a0<\/span><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/api-extension\/custom-resources\/\"><span style=\"font-weight: 400;\">Controladores personalizados<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><span style=\"font-weight: 400;\">\u00a0En resumen, permite<\/span><span style=\"font-weight: 400;\"> desarrolladores para ampliar y a\u00f1adir nuevas funcionalidades, sustituir las existentes (como sustituir kube-proxy, por ejemplo) y, por supuesto, automatizar las tareas de administraci\u00f3n. <\/span><span style=\"font-weight: 400;\">como si fueran un componente nativo de Kubernetes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un Operador no es m\u00e1s que un conjunto de controladores personalizados espec\u00edficos de una aplicaci\u00f3n. Entonces, \u00bfpor qu\u00e9 es un cambio de juego? Bueno, los controladores tienen acceso directo a la API de Kubernetes, lo que significa que pueden supervisar el cl\u00faster, cambiar pods\/servicios, escalar hacia arriba\/hacia abajo y llamar a endpoints de las aplicaciones en ejecuci\u00f3n, todo ello de acuerdo con reglas personalizadas escritas dentro de esos controladores. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para ilustrar este comportamiento, veamos c\u00f3mo funciona el Operador de Couchbase cuando se mata un Pod:<\/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;\">M\u00e1s informaci\u00f3n sobre los operadores <a href=\"https:\/\/coreos.com\/blog\/introducing-operators.html\">aqu\u00ed<\/a><\/h6>\n<p><span style=\"font-weight: 400;\">Como puede verse en la figura anterior, el Operador supervisa y analiza el cl\u00faster y, bas\u00e1ndose en un conjunto de par\u00e1metros, desencadena una serie de acciones para alcanzar el estado deseado. Este proceso de reconciliaci\u00f3n est\u00e1 en todas partes en K8s. Pero no todas las acciones son iguales, en nuestro ejemplo, tenemos dos categor\u00edas distintas:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>Infraestructura - a\u00f1adir un nuevo nodo<\/b><span style=\"font-weight: 400;\">: El operador solicita a trav\u00e9s de la API de Kubernetes lanzar un nuevo Pod ejecutando Couchbase Server.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Espec\u00edfico de dominio - A\u00f1adir nodo al cl\u00faster\/ Activar el reequilibrio de datos: <\/b><span style=\"font-weight: 400;\">El operador sabe c\u00f3mo funciona Couchbase y llama al punto final rest correcto para a\u00f1adir el nuevo nodo al cl\u00faster y activar el reequilibrio de datos.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Ese es el verdadero poder de los Operadores, <em><strong>permiten escribir una aplicaci\u00f3n para gestionar completamente otra<\/strong><\/em>\u00bfY adivina qu\u00e9 tipo de aplicaciones con estado son las m\u00e1s dif\u00edciles de gestionar? Pues s\u00ed: Las bases de datos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los desarrolladores siempre han esperado que las bases de datos funcionen a la primera, cuando en realidad, hist\u00f3ricamente son exactamente lo contrario. Incluso tenemos un nombre espec\u00edfico para la persona responsable de cuidar la base de datos, nuestros queridos DBA.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Couchbase's Operator se cre\u00f3 como un esfuerzo para cambiar este escenario y hacer que las bases de datos sean f\u00e1ciles de gestionar sin atarte a un proveedor de nube espec\u00edfico. Actualmente, soporta el aprovisionamiento automatizado de cl\u00fasteres, escalabilidad el\u00e1stica, auto-recuperaci\u00f3n, registro y acceso a la consola web, pero muchas m\u00e1s caracter\u00edsticas vendr\u00e1n en el futuro. Si desea obtener m\u00e1s informaci\u00f3n, consulte <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-operator\/\"><span style=\"font-weight: 400;\">este art\u00edculo<\/span><\/a><span style=\"font-weight: 400;\"> o consulte la documentaci\u00f3n oficial de Couchbase <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\"><span style=\"font-weight: 400;\">aqu\u00ed<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tambi\u00e9n tengo que mencionar que es el primer operador oficial lanzado para una base de datos, y hay algunos peque\u00f1os proyectos de la comunidad ya tratando de construir operadores para MySQL, <\/span><a href=\"https:\/\/github.com\/zalando-incubator\/postgres-operator\"><span style=\"font-weight: 400;\">Postrgres<\/span><\/a><span style=\"font-weight: 400;\"> y otras bases de datos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El ecosistema del operador crece r\u00e1pidamente, <\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/github.com\/rook\/rook\">graja<\/a><\/span><span style=\"font-weight: 400;\">\u00a0por ejemplo, permite desplegar algo muy similar a AWS S3. El operador Apache Kafka Kubernetes llegar\u00e1 pronto y existen muchas otras iniciativas. Esperamos un gran impulso en el n\u00famero de operadores en los pr\u00f3ximos meses, ahora que todos los principales proveedores de nube soportan K8s.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Por \u00faltimo, Kubernetes proporciona un despliegue y una gesti\u00f3n de aplicaciones agn\u00f3sticos respecto a la nube. Es tan potente que podr\u00eda llevarnos a tratar a los proveedores de nube casi como una mercanc\u00eda, ya que podr\u00e1s migrar libremente entre ellos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En el futuro, elegir un proveedor de nube podr\u00eda ser s\u00f3lo cuesti\u00f3n de cu\u00e1l ofrece el mejor rendimiento\/coste. El impacto de este cambio radical en el mercado a\u00fan no est\u00e1 claro, pero los desarrolladores somos sin duda los grandes beneficiados.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>ACTUALIZACI\u00d3N: Aunque este art\u00edculo se escribi\u00f3 no hace mucho, muchas cosas ya han cambiado. Ahora tenemos el <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/operator-config.html\">Operador aut\u00f3nomo Couchbase 1.2<\/a>, <a href=\"https:\/\/kubernetes.io\/blog\/2019\/04\/04\/kubernetes-1.14-local-persistent-volumes-ga\/\">Almacenamiento local persistente<\/a> es GA, y hay un <a href=\"https:\/\/operatorhub.io\/\">Operador Hub<\/a> para centralizar todos los operadores de c\u00f3digo abierto.<\/p>\n<p>Si tiene alguna pregunta, no dude en tuitearme en <a href=\"https:\/\/twitter.com\/deniswsrosa\">@deniswsrosa<\/a><\/p>","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>","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\/es\/kubernetes-operators-game-changer\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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 minutos\" \/>\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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\/es\/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\/es\/kubernetes-operators-game-changer\/","og_locale":"es_MX","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\/es\/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 minutos"},"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":"es","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":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-operators-game-changer\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@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 es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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","first_name":"Denis","last_name":"Rosa, Developer Advocate, Couchbase","user_url":"","author_category":"","description":"Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4848"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4848\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=4848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4848"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}