{"id":13159,"date":"2022-04-29T08:13:05","date_gmt":"2022-04-29T15:13:05","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=13159"},"modified":"2025-06-13T20:45:49","modified_gmt":"2025-06-14T03:45:49","slug":"simplify-schema-migration-kubernetes-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/simplify-schema-migration-kubernetes-couchbase\/","title":{"rendered":"Simplificaci\u00f3n de la migraci\u00f3n de esquemas en implementaciones de Couchbase nativas de la nube"},"content":{"rendered":"<p><b>El operador aut\u00f3nomo Couchbase<\/b><span style=\"font-weight: 400;\"> es un operador de Kubernetes que proporciona integraci\u00f3n nativa en la nube con Kubernetes de c\u00f3digo abierto y Red Hat Openshift. Permite a un usuario utilizar la funcionalidad declarativa de Kubernetes para definir lo que ser\u00e1 el cl\u00faster de Couchbase Server y gestionar los atributos de ese cl\u00faster. Esta funcionalidad declarativa es \u00fatil ya que permite almacenar las definiciones del entorno en el control de c\u00f3digo fuente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El objetivo del operador es gestionar completamente uno o m\u00e1s despliegues de Couchbase Server. Gestiona el ciclo de vida del cluster (aprovisionamiento, escalado, actualizaci\u00f3n, auto-recuperaci\u00f3n) y la configuraci\u00f3n (vol\u00famenes persistentes, grupos de servidores, XDCR, TLS, RBAC, backup\/restore). El operador es una potente herramienta en la gesti\u00f3n de un entorno Couchbase a gran escala y es muy recomendable que leas el documento <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Documentaci\u00f3n del operador de Couchbase<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-13163 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/cloud-native-couchbase-automation-docs-1024x786.png\" alt=\"Cloud-native Automation with Couchbase Documentation\" width=\"574\" height=\"440\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/cloud-native-couchbase-automation-docs-1024x786.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/cloud-native-couchbase-automation-docs-300x230.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/cloud-native-couchbase-automation-docs-768x590.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/cloud-native-couchbase-automation-docs-20x15.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/cloud-native-couchbase-automation-docs.png 1189w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Guardar y restaurar: C\u00f3mo migrar una topolog\u00eda no gestionada<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A\u00f1adimos el <\/span><i><span style=\"font-weight: 400;\">Guardar y<\/span><\/i> <i><span style=\"font-weight: 400;\">Restaurar <\/span><\/i><span style=\"font-weight: 400;\">Caracter\u00edstica en Couchbase Autonomous Operator v2.3. Esta caracter\u00edstica permite a los usuarios migrar un <\/span><i><span style=\"font-weight: 400;\">no gestionado<\/span><\/i><span style=\"font-weight: 400;\"> Couchbase Cluster y convertirlo en un <\/span><i><span style=\"font-weight: 400;\">gestionado <\/span><\/i><span style=\"font-weight: 400;\">cluster. Esta funcionalidad permite sondear un cluster Couchbase creado por el operador aut\u00f3nomo con topolog\u00eda de datos no gestionada y recuperar un archivo YAML de topolog\u00eda de datos que coincida con la topolog\u00eda de datos actual de ese cluster Couchbase. Un usuario puede tomar este archivo YAML de despliegue y aplicarlo al cluster existente para bloquear la topolog\u00eda o aplicarlo a un nuevo entorno de cluster para migrar el entorno.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los casos de uso de esta funci\u00f3n son numerosos. Aun as\u00ed, en el que nos centraremos en este post es la migraci\u00f3n de un entorno desde una topolog\u00eda de datos gestionada manualmente en un entorno R\/D r\u00e1pido\/\u00e1gil a un entorno de producci\u00f3n m\u00e1s estable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tanto si eres nuevo en Couchbase como un profesional experimentado, el nuevo <\/span><i><span style=\"font-weight: 400;\">Guardar y restaurar<\/span><\/i><span style=\"font-weight: 400;\"> de Couchbase Autonomous Operator simplifica significativamente tu proceso CI\/CD. Ser capaz de pasar f\u00e1cilmente de un cl\u00faster no gestionado a un cl\u00faster gestionado te permite continuar con el desarrollo a un ritmo r\u00e1pido mientras mantienes el control de los entornos a lo largo del proceso.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Demostraci\u00f3n de la migraci\u00f3n del esquema de un cl\u00faster Couchbase\u00a0\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Para demostrar esta funcionalidad, primero tenemos que crear un cl\u00faster de servidores Couchbase en Kubernetes en un estado no gestionado. Usaremos este <\/span><i><span style=\"font-weight: 400;\">unmanaged.yaml<\/span><\/i><span style=\"font-weight: 400;\"> file:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:yaml decode:true\">apiVersion: v1\r\ntipo: Secret\r\nmetadatos:\r\nname: cb-example-auth\r\ntype: Opaco\r\ndatos:\r\nnombre de usuario: QWRtaW5pc3RyYXRvcg==\r\ncontrase\u00f1a: cGFzc3dvcmQ=\r\n---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseCluster\r\nmetadatos:\r\nname: cb-example-unmanaged\r\nspec:\r\nimagen: couchbase\/server:7.0.3\r\nseguridad:\r\n  adminSecret: cb-example-auth\r\n  rbac:\r\n    managed: false\r\ncubos:\r\n  managed: false\r\nservidores:\r\n  - tama\u00f1o: 3\r\n    nombre: all_services\r\n    servicios:\r\n      - datos\r\n      - \u00edndice\r\n      - consulta\r\n      - b\u00fasqueda\r\n      - eventos\r\n      - anal\u00edtica<\/pre>\n<p><span style=\"font-weight: 400;\">Para crear este cl\u00faster, utilice el comando: Esto crea un cluster simple no gestionado con todos los servicios, pero desactiva la gesti\u00f3n de buckets y RBAC. Tambi\u00e9n incluye un secreto para acceder al cluster con un nombre de usuario de <\/span><i><span style=\"font-weight: 400;\">Administrador<\/span><\/i><span style=\"font-weight: 400;\"> y una contrase\u00f1a de <\/span><i><span style=\"font-weight: 400;\">contrase\u00f1a<\/span><\/i><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">kubectl create -f .\/unmanaged.yaml<\/pre>\n<p><span style=\"font-weight: 400;\">Para acceder a este cluster, port-forward el puerto 8091 para que podamos acceder al servidor Couchbase Admin UI s\u00f3lo para el acceso r\u00e1pido de desarrollo. Si quieres acceder al puerto de administraci\u00f3n con regularidad, consulta la documentaci\u00f3n sobre la configuraci\u00f3n de un puerto balanceador de carga.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para crear este reenv\u00edo de puertos, utilice el comando:\u00a0<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">kubectl port-forward cb-example-0000 8091<\/pre>\n<p><span style=\"font-weight: 400;\">Ahora podemos acceder a la interfaz web en el puerto 8091 utilizando las credenciales de administrador y, a continuaci\u00f3n, crear algunos buckets, \u00e1mbitos y colecciones. En este ejemplo, creamos un <\/span><i><span style=\"font-weight: 400;\">BlogApp<\/span><\/i><span style=\"font-weight: 400;\"> cubo, con un margen para <\/span><i><span style=\"font-weight: 400;\">es-US<\/span><\/i><span style=\"font-weight: 400;\"> y algunas colecciones dentro de ese \u00e1mbito.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13160\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/adding-a-bucket-in-couchbase-cloud-native.png\" alt=\"\" width=\"532\" height=\"440\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-a-bucket-in-couchbase-cloud-native.png 532w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-a-bucket-in-couchbase-cloud-native-300x248.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-a-bucket-in-couchbase-cloud-native-20x17.png 20w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, a\u00f1adimos el \u00e1mbito para <\/span><i><span style=\"font-weight: 400;\">es-US<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13162\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/adding-scope-to-couchbase-kubernetes.png\" alt=\"Add scope to Couchbase Kubernetes Operator\" width=\"532\" height=\"290\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-scope-to-couchbase-kubernetes.png 532w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-scope-to-couchbase-kubernetes-300x164.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-scope-to-couchbase-kubernetes-20x11.png 20w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Por \u00faltimo, a\u00f1adimos el <\/span><i><span style=\"font-weight: 400;\">Blogs<\/span><\/i><span style=\"font-weight: 400;\"> colecciones.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13161\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/adding-collection-to-couchbase-nosql.png\" alt=\"Add collection to Couchbase Autonomous Operator Kubernetes\" width=\"532\" height=\"290\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-collection-to-couchbase-nosql.png 532w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-collection-to-couchbase-nosql-300x164.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/adding-collection-to-couchbase-nosql-20x11.png 20w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ahora tenemos una estructura de \u00e1rbol con este aspecto:<\/span><\/p>\n<pre class=\"lang:default decode:true\">Cubo: BlogApp\r\n   \u00c1mbito: es-US\r\n      Colecci\u00f3n: Blogs\r\n      Colecci\u00f3n: Receta<\/pre>\n<p><span style=\"font-weight: 400;\">Una vez que tenemos nuestra topolog\u00eda de datos, podemos generar un archivo YAML utilizando la funci\u00f3n <\/span><i><span style=\"font-weight: 400;\">cao<\/span><\/i><span style=\"font-weight: 400;\"> binario con el comando:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">.\/cao save --couchbase-cluster cb-example-unmanaged --filename .\/topology.yaml<\/pre>\n<p><span style=\"font-weight: 400;\">Esto mostrar\u00e1 nuestro <\/span><i><span style=\"font-weight: 400;\">topology.yaml:<\/span><\/i><\/p>\n<pre class=\"decode-attributes:false lang:yaml decode:true\">---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseBucket\r\nmetadatos:\r\n  creationTimestamp: null\r\n  name: bucket-629f6ab0-d3ad-442e-b8e8-33e71412fae8\r\nspec:\r\n  compressionMode: passive\r\n  conflictResolution: seqno\r\n  evictionPolicy: valueOnly\r\n  ioPriority: low\r\n  maxTTL: 0s\r\n  cuota de memoria 256Mi\r\n  duraci\u00f3n m\u00ednima: ninguna\r\n  nombre: BlogApp\r\n  r\u00e9plicas: 1\r\n  \u00e1mbitos:\r\n    managed: true\r\n    recursos:\r\n    - kind: CouchbaseScope\r\n      name: scope-48d41118-fafd-48fa-a128-a539ffdb5efa\r\n    - tipo: CouchbaseScope\r\n      name: scope-9807f3f5-f798-43f6-bab0-32c44fada0ef\r\n---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseScope\r\nmetadatos:\r\n  creationTimestamp: null\r\n  name: scope-48d41118-fafd-48fa-a128-a539ffdb5efa\r\nspec:\r\n  collections:\r\n    managed: true\r\n    recursos:\r\n    - kind: CouchbaseCollection\r\n      name: collection-80bf5988-85ed-47b0-986b-44d52dca3389\r\n    - tipo: CouchbaseCollection\r\n      name: collection-6da06d0d-c07c-4847-b2b6-0c46f5fed67a\r\n  nombre: en-US\r\n---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseCollection\r\nmetadatos:\r\n  creationTimestamp: null\r\n  name: collection-80bf5988-85ed-47b0-986b-44d52dca3389\r\nspec:\r\n  maxTTL: 0s\r\n  nombre: Recetas\r\n---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseCollection\r\nmetadatos:\r\n  creationTimestamp: null\r\n  name: collection-6da06d0d-c07c-4847-b2b6-0c46f5fed67a\r\nspec:\r\n  maxTTL: 0s\r\n  nombre: Blogs\r\n---\r\napiVersion: couchbase.com\/v2\r\ntipo: CouchbaseScope\r\nmetadatos:\r\n  creationTimestamp: null\r\n  name: scope-9807f3f5-f798-43f6-bab0-32c44fada0ef\r\nspec:\r\n  collections:\r\n    managed: true\r\n    preserveDefaultCollection: true\r\n  defaultScope: true<\/pre>\n<h3>Clonaci\u00f3n de una topolog\u00eda de cl\u00faster<\/h3>\n<p>Con el fichero de topolog\u00eda podemos ahora restaurarlo en otro cluster, clonando la estructura en un nuevo entorno. Para ello, cree un archivo <em>managed.yaml<\/em> con este contenido:<\/p>\n<pre class=\"decode-attributes:false lang:yaml decode:true\">apiVersion: couchbase.com\/v2\r\ntipo: CouchbaseCluster\r\nmetadatos:\r\n  nombre: cb-example-managed\r\nspec:\r\n  imagen: couchbase\/server:7.0.3\r\n  seguridad:\r\n    adminSecret: cb-example-auth\r\n    rbac:\r\n      managed: false\r\n  cubos:\r\n    gestionado: true\r\n  servidores:\r\n    - tama\u00f1o: 3\r\n      nombre: all_services\r\n      servicios:\r\n        - datos\r\n        - \u00edndice\r\n        - consulta\r\n        - b\u00fasqueda\r\n        - eventos\r\n        - anal\u00edtica<\/pre>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, creamos el cl\u00faster gestionado mediante: Esto es similar a nuestro <\/span><i><span style=\"font-weight: 400;\">unmanaged.yaml<\/span><\/i><span style=\"font-weight: 400;\">pero, en su lugar, los cubos son <\/span><i><span style=\"font-weight: 400;\">gestionado <\/span><\/i><span style=\"font-weight: 400;\">y reutilizamos nuestro secreto del cl\u00faster no gestionado.\u00a0<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">kubectl create -f managed.yaml<\/pre>\n<h3>Restauraci\u00f3n de la topolog\u00eda en el cl\u00faster gestionado<\/h3>\n<p><span style=\"font-weight: 400;\">Una vez que el cl\u00faster se haya puesto en marcha, puede utilizar la funci\u00f3n <\/span><i><span style=\"font-weight: 400;\">cao <\/span><\/i><span style=\"font-weight: 400;\">binario para restaurar la topolog\u00eda YAML en el cl\u00faster gestionado reci\u00e9n creado:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13165 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/creating-managed-cluster-topology-yaml-couchbase.png\" alt=\"Restoring managed cluster topology with YAML file for migration\" width=\"964\" height=\"305\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/creating-managed-cluster-topology-yaml-couchbase.png 964w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/creating-managed-cluster-topology-yaml-couchbase-300x95.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/creating-managed-cluster-topology-yaml-couchbase-768x243.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/creating-managed-cluster-topology-yaml-couchbase-20x6.png 20w\" sizes=\"auto, (max-width: 964px) 100vw, 964px\" \/><br \/>\n<span style=\"font-weight: 400;\">Por \u00faltimo, para verificar, crearemos un simple port-forward al nuevo cluster gestionado y verificaremos la topolog\u00eda de datos. Utilice el siguiente comando para crear el port-forward y abra su navegador a <\/span><em><a href=\"https:\/\/127.0.0.1:8091\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">https:\/\/127.0.0.1:8091<\/span><\/a><\/em><span style=\"font-weight: 400;\">.\u00a0\u00a0<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">kubectl port-forward cb-example-managed-0000 8091<\/pre>\n<p>Deber\u00eda aparecer la topolog\u00eda de datos adecuada.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13164 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/viewing-scopes-and-collections-in-couchbase.png\" alt=\"Confirm schema migration by viewing scopes and collection in Couchbase\" width=\"964\" height=\"405\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/viewing-scopes-and-collections-in-couchbase.png 964w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/viewing-scopes-and-collections-in-couchbase-300x126.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/viewing-scopes-and-collections-in-couchbase-768x323.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/viewing-scopes-and-collections-in-couchbase-20x8.png 20w\" sizes=\"auto, (max-width: 964px) 100vw, 964px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ahora que hemos migrado la topolog\u00eda de datos, es posible que queramos migrar los datos de un entorno a otro. Recomiendo utilizar <\/span><i><span style=\"font-weight: 400;\">Replicaci\u00f3n entre centros de datos (XDCR) <\/span><\/i><span style=\"font-weight: 400;\">para facilitar el movimiento de datos de un cluster a otro. Puede encontrar m\u00e1s informaci\u00f3n sobre la configuraci\u00f3n de XDCR en la p\u00e1gina <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/howto-guide-xdcr-scopes-collections.html\"><span style=\"font-weight: 400;\">Documentaci\u00f3n del operador Couchbase<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Pr\u00f3ximos pasos y recursos<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Algunas cosas a tener en cuenta:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Guardar no guarda los roles\/grupos RBAC. Tendr\u00e1 que migrarlos por su cuenta.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">En <\/span><i><span style=\"font-weight: 400;\">cao <\/span><\/i><span style=\"font-weight: 400;\">le informar\u00e1 de todos los cambios que debe realizar en el cl\u00faster de destino. Cualquier elemento marcado como <\/span><i><span style=\"font-weight: 400;\">borrar<\/span><\/i><span style=\"font-weight: 400;\"> se borrar\u00e1, lo que puede provocar la p\u00e9rdida de datos.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">En este post se trataron los siguientes temas:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Documentaci\u00f3n sobre Couchbase Autonomous Operator<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/howto-guide-xdcr-scopes-collections.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Gu\u00eda pr\u00e1ctica: XDCR con \u00e1mbitos y colecciones<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.couchbase.com\/blog\/es\/cloud-native-database-automation-autonomous-operator-2-3-0-now-available\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Las funciones m\u00e1s recientes de nuestra automatizaci\u00f3n de bases de datos nativas de la nube<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/what-is-kubernetes\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\u00bfQu\u00e9 es Kubernetes?<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>The Couchbase Autonomous Operator is a Kubernetes operator that provides cloud-native integration with open source Kubernetes and Red Hat Openshift. It allows a user to use Kubernetes\u2019 declarative functionality to define what the Couchbase Server Cluster will be and manage [&hellip;]<\/p>","protected":false},"author":81274,"featured_media":13166,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9284,1816,9415,2322,9336],"tags":[9243,1766,9588,1545,9589],"ppma_author":[9590],"class_list":["post-13159","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-autonomous-operator","category-couchbase-server","category-xdcr","category-kubernetes","category-scopes-and-collections","tag-cloud-native-database","tag-data-migration","tag-kubectl","tag-kubernetes","tag-yaml"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Schema Migration: Simplify with Cloud-Native Couchbase Deployments<\/title>\n<meta name=\"description\" content=\"Couchbase walks through how to migrate a non-managed topology, a cluster migration, cloning a cluster topology, restoring topology to managed cluster, and more.\" \/>\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\/simplify-schema-migration-kubernetes-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simplify Schema Migration On Cloud-Native Couchbase Deployments\" \/>\n<meta property=\"og:description\" content=\"Couchbase walks through how to migrate a non-managed topology, a cluster migration, cloning a cluster topology, restoring topology to managed cluster, and more.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/simplify-schema-migration-kubernetes-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-29T15:13:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:45:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Justin Ashworth - Senior Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Justin Ashworth - Senior Software Engineer\" \/>\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\/simplify-schema-migration-kubernetes-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/\"},\"author\":{\"name\":\"Justin Ashworth\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/4d9ff96ee82293e610804fe03e8c925e\"},\"headline\":\"Simplify Schema Migration On Cloud-Native Couchbase Deployments\",\"datePublished\":\"2022-04-29T15:13:05+00:00\",\"dateModified\":\"2025-06-14T03:45:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/\"},\"wordCount\":806,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg\",\"keywords\":[\"Cloud-Native Database\",\"Data Migration\",\"kubectl\",\"kubernetes\",\"yaml\"],\"articleSection\":[\"Couchbase Autonomous Operator\",\"Couchbase Server\",\"Cross Data Center Replication (XDCR)\",\"Kubernetes\",\"Scopes and Collections\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/\",\"name\":\"Schema Migration: Simplify with Cloud-Native Couchbase Deployments\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg\",\"datePublished\":\"2022-04-29T15:13:05+00:00\",\"dateModified\":\"2025-06-14T03:45:49+00:00\",\"description\":\"Couchbase walks through how to migrate a non-managed topology, a cluster migration, cloning a cluster topology, restoring topology to managed cluster, and more.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg\",\"width\":2560,\"height\":1707,\"caption\":\"Migrate cluster schema on Couchbase Kubernetes\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simplify Schema Migration On Cloud-Native Couchbase Deployments\"}]},{\"@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\/4d9ff96ee82293e610804fe03e8c925e\",\"name\":\"Justin Ashworth\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b838e59048b03f2202cfe94249197dc3\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d9f3bd93c0cdd95cbe3e125a15ad07c4cc276956d641a724306dc519fe14fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d9f3bd93c0cdd95cbe3e125a15ad07c4cc276956d641a724306dc519fe14fa?s=96&d=mm&r=g\",\"caption\":\"Justin Ashworth\"},\"sameAs\":[\"https:\/\/h\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/justin-ashworth\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Schema Migration: Simplify with Cloud-Native Couchbase Deployments","description":"Couchbase explica c\u00f3mo migrar una topolog\u00eda no gestionada, una migraci\u00f3n de cl\u00faster, clonar una topolog\u00eda de cl\u00faster, restaurar la topolog\u00eda a un cl\u00faster gestionado y mucho m\u00e1s.","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\/simplify-schema-migration-kubernetes-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"Simplify Schema Migration On Cloud-Native Couchbase Deployments","og_description":"Couchbase walks through how to migrate a non-managed topology, a cluster migration, cloning a cluster topology, restoring topology to managed cluster, and more.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/simplify-schema-migration-kubernetes-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2022-04-29T15:13:05+00:00","article_modified_time":"2025-06-14T03:45:49+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg","type":"image\/jpeg"}],"author":"Justin Ashworth - Senior Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Justin Ashworth - Senior Software Engineer","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/"},"author":{"name":"Justin Ashworth","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/4d9ff96ee82293e610804fe03e8c925e"},"headline":"Simplify Schema Migration On Cloud-Native Couchbase Deployments","datePublished":"2022-04-29T15:13:05+00:00","dateModified":"2025-06-14T03:45:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/"},"wordCount":806,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg","keywords":["Cloud-Native Database","Data Migration","kubectl","kubernetes","yaml"],"articleSection":["Couchbase Autonomous Operator","Couchbase Server","Cross Data Center Replication (XDCR)","Kubernetes","Scopes and Collections"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/","name":"Schema Migration: Simplify with Cloud-Native Couchbase Deployments","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg","datePublished":"2022-04-29T15:13:05+00:00","dateModified":"2025-06-14T03:45:49+00:00","description":"Couchbase explica c\u00f3mo migrar una topolog\u00eda no gestionada, una migraci\u00f3n de cl\u00faster, clonar una topolog\u00eda de cl\u00faster, restaurar la topolog\u00eda a un cl\u00faster gestionado y mucho m\u00e1s.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/migrate-clusters-cloud-native-couchbase-kubernetes-scaled.jpg","width":2560,"height":1707,"caption":"Migrate cluster schema on Couchbase Kubernetes"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/simplify-schema-migration-kubernetes-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Simplify Schema Migration On Cloud-Native Couchbase Deployments"}]},{"@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\/4d9ff96ee82293e610804fe03e8c925e","name":"Justin Ashworth","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b838e59048b03f2202cfe94249197dc3","url":"https:\/\/secure.gravatar.com\/avatar\/f8d9f3bd93c0cdd95cbe3e125a15ad07c4cc276956d641a724306dc519fe14fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d9f3bd93c0cdd95cbe3e125a15ad07c4cc276956d641a724306dc519fe14fa?s=96&d=mm&r=g","caption":"Justin Ashworth"},"sameAs":["https:\/\/h"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/justin-ashworth\/"}]}},"authors":[{"term_id":9590,"user_id":81274,"is_guest":0,"slug":"justin-ashworth","display_name":"Justin Ashworth - Senior Software Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d9f3bd93c0cdd95cbe3e125a15ad07c4cc276956d641a724306dc519fe14fa?s=96&d=mm&r=g","author_category":"","last_name":"Ashworth","first_name":"Justin","job_title":"","user_url":"https:\/\/couchbase.com","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/13159","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\/81274"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=13159"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/13159\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13166"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=13159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=13159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=13159"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=13159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}