{"id":8583,"date":"2020-05-06T10:50:47","date_gmt":"2020-05-06T17:50:47","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8583"},"modified":"2025-06-13T21:33:08","modified_gmt":"2025-06-14T04:33:08","slug":"unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/","title":{"rendered":"Unicornio desatado: Subiendo de nivel con el Operador Aut\u00f3nomo"},"content":{"rendered":"<p>No, no he perdido la cabeza.  Unicornio es el nombre en c\u00f3digo interno de Couchbase Autonomous Operator 2.0.0.  Para un lanzamiento de esta envergadura quer\u00edamos algo m\u00edtico y fant\u00e1stico que resumiera el esfuerzo y la pasi\u00f3n que se ha puesto en \u00e9l.  Tambi\u00e9n es ligeramente divertido dar a la direcci\u00f3n una plataforma en la que <em>tienen<\/em> \u00a1para hablar de unicornios y duendecillos!  Para subrayar la dificultad de este lanzamiento, nos centraremos en un aspecto clave del Operador: Los recursos personalizados de Kubernetes.  Los recursos personalizados son la base de todo lo que hace Operator.<\/p>\n<p>Esta entrada forma parte de una serie de blogs t\u00e9cnicos que profundizan en el funcionamiento interno de Operator.  Este blog se centrar\u00e1 en <em>ir de A a B<\/em>.  Parece sencillo, \u00bfverdad? (O vago...) Como ver\u00e1n, fue todo menos eso. Definiremos lo que queremos decir con esto, examinaremos los retos t\u00e9cnicos y, por \u00faltimo, llegaremos a la conclusi\u00f3n de por qu\u00e9 decidimos hacer lo que hicimos.<\/p>\n<p>Desde el equipo de desarrollo hasta usted, el usuario final, esperamos que tenga una experiencia de uso tan buena como la que hemos tenido cre\u00e1ndola.<\/p>\n<h2>\u00bfDe A a B con CRD?<\/h2>\n<p>\u00bfQu\u00e9 queremos decir con esto?  En primer lugar, veamos por qu\u00e9 necesitamos una B.  Operator 1.x gestiona clusters Couchbase con un \u00fanico objeto de configuraci\u00f3n, un <em>recurso personalizado<\/em> en terminolog\u00eda de Kubernetes.  Este enfoque tiene sus ventajas -todo se controla de forma centralizada-, pero tambi\u00e9n tiene sus inconvenientes: para realizar cualquier cambio en el cl\u00faster es necesario tener acceso a todos los aspectos del mismo.<\/p>\n<p>Me gusta el primer enfoque, y se lo digo al equipo todo el tiempo:<\/p>\n<blockquote><p><a href=\"https:\/\/en.wikipedia.org\/wiki\/KISS_principle\">Que sea sencillo, est\u00fapido.<\/a><\/p><\/blockquote>\n<p>Sin embargo, ante todo proporcionamos un servicio empresarial.  La seguridad debe ser una preocupaci\u00f3n primordial, desde la capa de red hasta los procesos empresariales que existen durante la vida \u00fatil de un cl\u00faster.<\/p>\n<h3>Separaci\u00f3n de preocupaciones<\/h3>\n<p>Un requisito empresarial claro era que un usuario pudiera crear un cubo de datos privado y utilizarlo.  Ese mismo usuario no deber\u00eda poder hacer nada m\u00e1s.  No deb\u00eda permitirse escalar el cl\u00faster, ya que esto podr\u00eda causar interrupciones a otros usuarios.  Nuestros objetivos eran, por tanto:<\/p>\n<ul>\n<li>Definici\u00f3n de roles en Kubernetes\n<ul>\n<li>Los usuarios pueden gestionar cubos y procesar datos sin afectar a otros usuarios<\/li>\n<li>Los administradores pueden modificar la topolog\u00eda del cluster seg\u00fan las necesidades<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Adem\u00e1s de ofrecer fuertes garant\u00edas de seguridad, los roles separan las preocupaciones.  Los usuarios finales s\u00f3lo necesitan saber c\u00f3mo manipular documentos y ejecutar consultas N1QL.  Las principales preocupaciones de los administradores son el cumplimiento de las normas de seguridad, la utilizaci\u00f3n de los recursos y el coste.  Sin embargo, hay una contrapartida.  Limitar el conocimiento a dominios espec\u00edficos tambi\u00e9n erige barreras entre esos dominios.  La soluci\u00f3n necesita flexibilidad para ofrecer la posibilidad de elegir <em>donde<\/em> existen barreras.<\/p>\n<h3>Descomposici\u00f3n personalizada de recursos<\/h3>\n<p>La clave para alcanzar nuestros objetivos es Kubernetes RBAC.  Kubernetes RBAC permite a usuarios espec\u00edficos realizar acciones espec\u00edficas en tipos de recursos espec\u00edficos.  Avanzamos hacia nuestro objetivo dividiendo nuestro recurso de cl\u00faster monol\u00edtico Couchbase en tipos de recursos separados de cl\u00faster central y cubo.  Cada tipo de recurso puede tener un conjunto separado de usuarios que est\u00e1n autorizados a utilizarlos.<\/p>\n<p>Otra consideraci\u00f3n con la que tenemos que lidiar es c\u00f3mo el hecho de poder configurar un aspecto del cl\u00faster puede comprometer otro.  Operator 2.0 introduce la gesti\u00f3n de la replicaci\u00f3n entre centros de datos (XDCR).  Estar\u00eda bien permitir a los usuarios de buckets configurar sus propias estrategias de replicaci\u00f3n.  Para configurar una replicaci\u00f3n es necesario conectarse a un cl\u00faster remoto.  Esto requiere credenciales que est\u00e1n configuradas con secretos Kubernetes.  Al conceder a un usuario acceso a los secretos, se revelan todas las contrase\u00f1as y claves privadas TLS del espacio de nombres.<\/p>\n<p>Por lo tanto, consideramos <em>cualquier<\/em> que requiere el acceso a los secretos como una operaci\u00f3n \"s\u00f3lo para administradores\".  Esto ayuda a limitar el alcance entre los dominios de conocimiento lo mejor que podemos.<\/p>\n<h3>Agregaci\u00f3n de recursos personalizada<\/h3>\n<p>La configuraci\u00f3n de un cluster de Couchbase est\u00e1 ahora distribuida a trav\u00e9s de muchos recursos diferentes.  Estos son controlados por muchas personas diferentes con roles espec\u00edficos.  El Operador, sin embargo, necesita ver el <em>imagen completa<\/em> para crear y gestionar el cl\u00faster.<\/p>\n<p>Por defecto, y sin que sea culpa suya, Operator 2.0 act\u00faa de forma ingenua.  Cuando empieza a monitorizar un cluster de Couchbase, tambi\u00e9n monitorizar\u00e1 cualquier recurso de bucket que encuentre.  Se crea un \u00fanico cluster l\u00f3gico a partir de la agregaci\u00f3n de estos recursos de cluster y de bucket.  Si creas otro cluster, tambi\u00e9n encontrar\u00e1 y agregar\u00e1 los mismos recursos de bucket.  Es posible que no desee este comportamiento, y Kubernetes proporciona el camino de nuevo.<\/p>\n<p>Para cada tipo de recurso que se agrega, hay un selector de etiqueta correspondiente que se puede configurar.  Este selector de etiquetas permite controlar exactamente qu\u00e9 recursos se agregan.  S\u00f3lo los recursos con las etiquetas correspondientes ser\u00e1n seleccionados por el Operador.<\/p>\n<h2>La salida<\/h2>\n<p>Ahora sabemos que descomponer el recurso del cluster Couchbase es algo bueno.  Aunque hacer esto no est\u00e1 exento de fallos, los beneficios los superan.<\/p>\n<p>Kubernetes proporciona primitivas que nos ayudan a lograr nuestro objetivo con RBAC y selecci\u00f3n de etiquetas.  Nuestro viaje de A a B ser\u00e1 f\u00e1cil, \u00bfverdad?  Pi\u00e9nsalo de nuevo.<\/p>\n<h3>Limitaciones de la plataforma<\/h3>\n<p>En un mundo perfecto, el Operador funcionar\u00eda en todas las versiones de Kubernetes disponibles.  Sin embargo <em>probablemente<\/em> cierto para futuras versiones de Kubernetes que mantengan la compatibilidad con versiones anteriores.  Yo digo <em>probablemente<\/em> porque pueden introducirse extensiones incompatibles con una aplicaci\u00f3n escrita antes de su lanzamiento.  Por este motivo, cada versi\u00f3n de Operator tiene una ventana de versiones de Kubernetes certificadas.<\/p>\n<p>Las versiones certificadas de Kubernetes tienen un l\u00edmite superior e inferior.  Los l\u00edmites est\u00e1n fuera de nuestro alcance.  Solo podemos certificar si un proveedor de la nube admite una versi\u00f3n determinada.  En el momento de redactar este documento, Google Kubernetes Engine (GKE) solo admite las versiones 1.14 y 1.15 de Kubernetes.  El Operador est\u00e1 certificado en Amazon Elastic Kubernetes Service (EKS), Microsoft Azure Kubernetes Service (AKS) y Red Hat OpenShift Container Platform (OCP).  Una vez m\u00e1s, estamos limitados por el conjunto com\u00fan de versiones de Kubernetes compatibles entre <em>todos<\/em> plataformas.<\/p>\n<p>El l\u00edmite inferior para CAO 2.0.0 era Kubernetes 1.13.<\/p>\n<h3>Versionado personalizado de recursos<\/h3>\n<p>Kubernetes 1.13 introdujo definiciones de recursos personalizados (CRD) versionadas.  Esto permite a Kubernetes ser consciente de los diferentes formatos de recursos personalizados.  Esto suena perfecto para nuestras necesidades, pero el diablo est\u00e1 en los detalles.<\/p>\n<p>El versionado CRD s\u00f3lo almacena recursos como una \u00fanica versi\u00f3n.  Cuando definimos una v1 y una v2 de un tipo de recurso, Kubernetes almacena todos los recursos como una \u00fanica versi\u00f3n, por ejemplo, v2.  Los ganchos de conversi\u00f3n de recursos personalizados nos proporcionan una forma de convertir el recurso v2 almacenado en un recurso v1 cuando un cliente accede al recurso con la API v1.  La conversi\u00f3n est\u00e1 dise\u00f1ada para tomar un recurso y devolver otro, realizando \u00fanicamente operaciones sencillas.  Para el Operador, convertir entre una configuraci\u00f3n de cluster monol\u00edtica y una modular, es un paso demasiado lejos.<\/p>\n<p>Otra preocupaci\u00f3n era que con Kubernetes 1.13, la conversi\u00f3n CRD era una caracter\u00edstica de grado alfa.  Soy un fan de todo lo que proporciona una experiencia de usuario (UX) m\u00e1s fluida.  Los usuarios, sin embargo, son menos entusiastas con la habilitaci\u00f3n de caracter\u00edsticas de grado alfa a trav\u00e9s de la reconfiguraci\u00f3n intrusiva de la API de Kubernetes.  En general, solo empezamos a utilizar las funciones cuando las API est\u00e1n disponibles de forma general, normalmente en la fase beta.<\/p>\n<p>El problema final era que el versionado CRD en Kubernetes 1.13 solo soportaba un \u00fanico esquema JSON.  Esto significa que cuando se instala, un cl\u00faster v2 Couchbase CRD podr\u00eda soportar ambos tipos de recursos personalizados v1 y v2, pero cualquier actualizaci\u00f3n de un recurso v1 fallar\u00eda porque la validaci\u00f3n contra el \u00fanico esquema v2 fallar\u00eda.<\/p>\n<h3>Nunca llueve, diluvia<\/h3>\n<p>A primera vista, parece que estamos atascados.  Una buena idea es imposible de conseguir sin empezar de nuevo.  No podemos utilizar la conversi\u00f3n CRD porque no est\u00e1 disponible y no est\u00e1 dise\u00f1ada para lo que queremos.  No podemos ejecutar simult\u00e1neamente distintas versiones de Operator porque s\u00f3lo admite un \u00fanico esquema.  Pero soy brit\u00e1nico:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8585 size-medium_large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/winston-churchill-quotes-9-min-1024x770-1-768x578.jpg\" alt=\"\" width=\"768\" height=\"578\" \/><\/p>\n<p>Si s\u00f3lo se admite una \u00fanica versi\u00f3n de un recurso personalizado, que as\u00ed sea, lo actualizamos todo de una vez.  Lo que nos deja el proceso de conversi\u00f3n.<\/p>\n<h3>\u00bfYa estamos cerca?<\/h3>\n<p>En realidad, s\u00ed.  La clave del \u00e9xito es simple.  Lee un viejo recurso de cluster Couchbase v1-este no es validado-entonces escribe un nuevo recurso de cluster Couchbase v2, y cualquier recurso de bucket que requiera-estos son validados.<\/p>\n<p>Como ya se ha dicho, la experiencia del usuario es muy importante, por lo que proporcionamos una <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/howto-operator-upgrade.html\">para realizar la conversi\u00f3n<\/a> para usted.  Como era de esperar, esto utiliza selectores de etiquetas y va a lo seguro.  No se habilitan nuevas caracter\u00edsticas -todas las nuevas caracter\u00edsticas son opcionales- por lo que las configuraciones existentes de XDCR y Couchbase RBAC no se ven afectadas por el proceso de actualizaci\u00f3n.<\/p>\n<h2>La llegada<\/h2>\n<p>\u00a1Por fin hemos llegado a la B!  De alguna manera, a trav\u00e9s de la adversidad, fuimos capaces de pasar de un modelo de configuraci\u00f3n monol\u00edtico a uno modular.  Hemos sido capaces de definir un proceso de actualizaci\u00f3n en l\u00ednea casi sin fisuras.  Ahora el poder est\u00e1 en sus manos para explorar las posibilidades que ofrece CAO 2.0.<\/p>\n<p>Como siempre, ustedes han elegido las direcciones que hemos tomado y ustedes elegir\u00e1n las direcciones que tomemos.  Esperamos sus comentarios, sugerencias y -me atrever\u00eda a decir- cr\u00edticas.<\/p>\n<h3>Es el viaje, no el destino<\/h3>\n<p>He pasado un <em>enorme<\/em> de tiempo dedicado a la documentaci\u00f3n t\u00e9cnica de esta versi\u00f3n (y espero de verdad que <a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/overview.html\">disfr\u00fatalo<\/a>).  En lugar de un blog \u00e1rido y demasiado t\u00e9cnico, pens\u00e9 que era necesario un cambio, de ah\u00ed la interminable analog\u00eda.  Lo que he intentado expresar son todos los retos t\u00e9cnicos y las compensaciones a las que nos enfrentamos como equipo para alcanzar estos hitos.  Lo que puede parecer una simple novedad desde el punto de vista del marketing del producto, es mucho m\u00e1s complejo bajo el cap\u00f3.<\/p>\n<p>Al emprender estas complicadas tareas en su nombre -y ser sincero al respecto- espero sinceramente que aprecie el trabajo que conllevan.  Espero que nuestra historia resuene con otros tambi\u00e9n.  Kubernetes solo puede mejorar para todos a medida que estas ideas se perfeccionen e incorporen.  Todav\u00eda tenemos un largo camino por recorrer, pero gracias por acompa\u00f1arnos en este viaje.<\/p>\n<h3>Su pr\u00f3ximo viaje...<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-autonomous-operator-2-0-for-kubernetes-is-now-ga\/\">Anuncio de la versi\u00f3n 2.0.0 de Couchbase Autonomous Operator<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/operator\/2.0\/overview.html\">Documentaci\u00f3n t\u00e9cnica de Couchbase Autonomous Operator 2.0.0<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>No, I haven&#8217;t lost my mind.\u00a0 Unicorn is the internal code-name for Couchbase Autonomous Operator 2.0.0.\u00a0 For a release this large in scope we wanted something mythical and fantastical to sum up the sheer effort and passion that was put [&hellip;]<\/p>","protected":false},"author":25957,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9284,2225,2322],"tags":[1545],"ppma_author":[9076],"class_list":["post-8583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-autonomous-operator","category-cloud","category-kubernetes","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unicorn Unleashed: Leveling-Up With the Autonomous Operator<\/title>\n<meta name=\"description\" content=\"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.\" \/>\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\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unicorn Unleashed: Leveling-Up With the Autonomous Operator\" \/>\n<meta property=\"og:description\" content=\"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T17:50:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:33:08+00:00\" \/>\n<meta name=\"author\" content=\"Simon Murray, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Murray, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\"},\"author\":{\"name\":\"Simon Murray, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8b03ed823446340bba90154b6fcd7a23\"},\"headline\":\"Unicorn Unleashed: Leveling-Up With the Autonomous Operator\",\"datePublished\":\"2020-05-06T17:50:47+00:00\",\"dateModified\":\"2025-06-14T04:33:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\"},\"wordCount\":1647,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"kubernetes\"],\"articleSection\":[\"Couchbase Autonomous Operator\",\"Couchbase Capella\",\"Kubernetes\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\",\"name\":\"Unicorn Unleashed: Leveling-Up With the Autonomous Operator\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2020-05-06T17:50:47+00:00\",\"dateModified\":\"2025-06-14T04:33:08+00:00\",\"description\":\"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#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\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unicorn Unleashed: Leveling-Up With the Autonomous Operator\"}]},{\"@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\/8b03ed823446340bba90154b6fcd7a23\",\"name\":\"Simon Murray, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/bf0dbf1d557d4349cd907431f40a61ac\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g\",\"caption\":\"Simon Murray, Senior Software Engineer, Couchbase\"},\"description\":\"Simon has almost 20 years experience on diverse topics such as systems programming, application performance and scale out storage. The cloud is now his current focus, specializing in enterprise network architecture, information security and platform orchestration across a wide range of technologies.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/simon-murraycouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Unicornio desatado: Subiendo de nivel con el Operador Aut\u00f3nomo","description":"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.","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\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/","og_locale":"es_MX","og_type":"article","og_title":"Unicorn Unleashed: Leveling-Up With the Autonomous Operator","og_description":"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-05-06T17:50:47+00:00","article_modified_time":"2025-06-14T04:33:08+00:00","author":"Simon Murray, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon Murray, Senior Software Engineer, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/"},"author":{"name":"Simon Murray, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8b03ed823446340bba90154b6fcd7a23"},"headline":"Unicorn Unleashed: Leveling-Up With the Autonomous Operator","datePublished":"2020-05-06T17:50:47+00:00","dateModified":"2025-06-14T04:33:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/"},"wordCount":1647,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["kubernetes"],"articleSection":["Couchbase Autonomous Operator","Couchbase Capella","Kubernetes"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/","url":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/","name":"Unicornio desatado: Subiendo de nivel con el Operador Aut\u00f3nomo","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2020-05-06T17:50:47+00:00","dateModified":"2025-06-14T04:33:08+00:00","description":"How to upgrade the Couchbase Autonomous Operator from Version 1 to Version 2. Understanding and handling non-trivial CRD upgrades.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#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\/unicorn-unleashed-leveling-up-custom-resources-with-the-autonomous-operator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Unicorn Unleashed: Leveling-Up With the Autonomous Operator"}]},{"@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\/8b03ed823446340bba90154b6fcd7a23","name":"Simon Murray, Ingeniero Superior de Software, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/bf0dbf1d557d4349cd907431f40a61ac","url":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","caption":"Simon Murray, Senior Software Engineer, Couchbase"},"description":"Simon has almost 20 years experience on diverse topics such as systems programming, application performance and scale out storage. The cloud is now his current focus, specializing in enterprise network architecture, information security and platform orchestration across a wide range of technologies.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/simon-murraycouchbase-com\/"}]}},"authors":[{"term_id":9076,"user_id":25957,"is_guest":0,"slug":"simon-murraycouchbase-com","display_name":"Simon Murray, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","author_category":"","last_name":"Murray","first_name":"Simon","job_title":"","user_url":"","description":"Simon cuenta con casi 20 a\u00f1os de experiencia en diversos temas como la programaci\u00f3n de sistemas, el rendimiento de las aplicaciones y el almacenamiento a escala.  Ahora se centra en la nube, especializ\u00e1ndose en arquitectura de redes empresariales, seguridad de la informaci\u00f3n y orquestaci\u00f3n de plataformas en una amplia gama de tecnolog\u00edas."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/8583","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\/25957"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=8583"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/8583\/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=8583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=8583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=8583"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=8583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}