{"id":7586,"date":"2019-09-04T18:03:55","date_gmt":"2019-09-05T01:03:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7586"},"modified":"2025-06-13T22:08:24","modified_gmt":"2025-06-14T05:08:24","slug":"tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/","title":{"rendered":"Tutorial: Operador Aut\u00f3nomo Couchbase en Minikube"},"content":{"rendered":"<p>Este blog tutorial pr\u00e1ctico cubre principalmente los detalles alrededor de la configuraci\u00f3n de Couchbase Kubernetes Operator en un ordenador port\u00e1til \/ escritorio que ejecuta minikube. Incluye la configuraci\u00f3n de certificados TLS personalizados y vol\u00famenes persistentes. Junto con la comprobaci\u00f3n de c\u00f3mo escalar hacia arriba y hacia abajo el cl\u00faster. Tambi\u00e9n ejecutando backup\/restore del cluster de Couchbase y ejecutando una aplicaci\u00f3n de ejemplo usando Python SDK.<\/p>\n<p>La configuraci\u00f3n utiliza Couchbase Operator 1.2 en kubernetes de c\u00f3digo abierto utilizando minikube, que se puede ejecutar en un ordenador port\u00e1til. El despliegue se realizar\u00eda con herramientas de l\u00ednea de comandos para macOS.<\/p>\n<h4>Visi\u00f3n general del tutorial pr\u00e1ctico<\/h4>\n<h4>Requisitos previos<\/h4>\n<h5>Comandos CLI para macOS, actualice el gestor de paquetes para mac utilizando el siguiente comando<\/h5>\n<pre class=\"\">$ brew update<\/pre>\n<p><strong>Instale el hipervisor desde el siguiente enlace<\/strong><\/p>\n<p><a href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.0.10\/VirtualBox-6.0.10-132072-OSX.dmg\">https:\/\/download.virtualbox.org\/virtualbox\/6.0.10\/VirtualBox-6.0.10-132072-OSX.dmg<\/a><\/p>\n<p><strong>Instalar minikube<\/strong><\/p>\n<pre class=\"\">$ brew cask install minikube<\/pre>\n<p><strong>Instalar kubectl<\/strong><\/p>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/install-kubectl\/#install-kubectl-on-macos\">https:\/\/kubernetes.io\/docs\/tasks\/tools\/install-kubectl\/#install-kubectl-on-macos<\/a><\/p>\n<p>Inicie minikube utilizando el siguiente comando<\/p>\n<p><a href=\"https:\/\/HINT\">[PISTA]<\/a> Detenga\/salga de todas las aplicaciones del port\u00e1til si no son necesarias para este tutorial. minikube y el cl\u00faster couchbase que se ejecutan en minukube necesitan una buena cantidad de recursos.<\/p>\n<pre class=\"\">$ sudo minikube start\r\n\r\n$ sudo kubectl cluster-info<\/pre>\n<p>Los detalles del entorno del minicubo en mi port\u00e1til son los siguientes<\/p>\n<pre class=\"\">minikue on macos : v1.2.0<\/pre>\n<p>Configurar las vCPUs y la memoria a 4 y 4GiB para que Couchbase Operator funcione en el port\u00e1til.<\/p>\n<pre class=\"\">sudo minikube config set memory 4096\r\nsudo minikube config set cpus 4\r\n\r\n<\/pre>\n<pre class=\"\">$ sudo minikube config view\r\n\r\n- cpus: 4\r\n- memory: 4096<\/pre>\n<p>detalles del cl\u00faster minikube<\/p>\n<pre class=\"\">$ sudo kubectl get nodes\r\n\r\nNAME STATUS ROLES AGE VERSION\r\nminikube Ready master 3d11h v1.15.0<\/pre>\n<h4>Despliegue de Couchbase Autonomous Operator<\/h4>\n<h5>Despliegue de Admission Controller<\/h5>\n<p>cd en el directorio de archivos para acceder al yaml requerido <a href=\"https:\/\/packages.couchbase.com\/kubernetes\/1.2.0\/couchbase-autonomous-operator-kubernetes_1.2.0-macos-x86_64.zip\">archivos <\/a>\u00a0El paquete debe descargarse en el ordenador port\u00e1til en su directorio local<\/p>\n<p>En primer lugar vamos a crear un espacio de nombres para localizar el \u00e1mbito de nuestro despliegue<\/p>\n<pre class=\"\">$ sudo kubectl create namespace cbdb<\/pre>\n<h5>Deployment Admission Controller, que es un webhook mutante para la validaci\u00f3n de esquemas.<\/h5>\n<pre class=\"\">$ sudo kubectl create -f admission.yaml --namespace cbdb<\/pre>\n<h5>Consulta de la implantaci\u00f3n de Admission Controller<\/h5>\n<pre class=\"\">$ sudo kubectl get deployments --namespace cbdb\r\nNAME                         READY UP-TO-DATE AVAILABLE AGE\r\ncouchbase-operator-admission 1\/1       1          1     11m\r\n\r\n<\/pre>\n<h4>Despliegue de Couchbase Autonomous Operator<\/h4>\n<h6>Despliegue de la definici\u00f3n personalizada de recursos<\/h6>\n<p>El alcance del CRD puede ser en todo el cluster k8s o localizado en el espacio de nombres. La elecci\u00f3n depende del administrador devops\/k8s. En el siguiente ejemplo se localiza a un espacio de nombres en particular<\/p>\n<pre class=\"\">sudo kubectl create -f crd.yaml --namespace cbdb<\/pre>\n<h6>Desplegar el rol de operador<\/h6>\n<pre class=\"\">$ sudo kubectl create -f operator-role.yaml --namespace cbdb<\/pre>\n<h6>Crear cuenta de servicio<\/h6>\n<pre class=\"\">$ sudo kubectl create serviceaccount couchbase-operator --namespace cbdb<\/pre>\n<h6>Vincular la cuenta de servicio \"couchbase-operator\" con el rol de operador<\/h6>\n<pre class=\"\">$ sudo kubectl create rolebinding couchbase-operator --role couchbase-operator --serviceaccount cbdb:couchbase-operator --namespace cbdb<\/pre>\n<h6>Despliegue del Operador Aut\u00f3nomo Couchbase<\/h6>\n<pre class=\"\">$ sudo kubectl create -f operator-deployment.yaml --namespace cbdb<\/pre>\n<h6>Despliegue de consultas<\/h6>\n<pre class=\"\">$ sudo kubectl get deployment --namespace cbdb\r\nNAME                           READY UP-TO-DATE AVAILABLE AGE\r\ncouchbase-operator              1\/1      1          1     20m\r\ncouchbase-operator-admission    1\/1      1          1     20m<\/pre>\n<h4>Despliegue de Couchbase Cluster<\/h4>\n<p>Despliegue de certificados TLS en el espacio de nombres cbdb<br \/>\nUsando el archivo de ayuda abajo en el enlace, aseg\u00farese de usar el espacio de nombres apropiado, aqu\u00ed he usado 'cbdb'. Se proporciona el enlace <a href=\"https:\/\/github.com\/ramdhakne\/blogs\/blob\/master\/external-connectivity\/x509-help.txt\">aqu\u00ed<\/a><\/p>\n<h6>Consultar los secretos TLS desplegados a trav\u00e9s de kubectl<\/h6>\n<pre class=\"\">$ sudo kubectl get secrets --namespace cbdb\r\nNAME TYPE DATA AGE\r\ncouchbase-operator-tls Opaque 1 14h\r\ncouchbase-server-tls Opaque 2 14h<\/pre>\n<h6>Despliegue secreto para acceder a Couchbase UI<\/h6>\n<pre class=\"\">$ sudo kubectl create -f secret.yaml --namespace cbdb<\/pre>\n<h6>Obtener detalles StorageClass para minikube k8s cluster<\/h6>\n<pre class=\"\">$ sudo kubectl get storageclass\r\nNAME PROVISIONER AGE\r\nstandard (default) k8s.io\/minikube-hostpath 3d14h\r\n\r\n<\/pre>\n<h6>Despliegue del cl\u00faster Couchbase<\/h6>\n<pre class=\"\">$ sudo kubectl create -f couchbase-persistent-cluster-tls-k8s-minikube.yaml --namespace cbdb<\/pre>\n<p>El archivo yaml para el despliegue anterior se encuentra en <a href=\"https:\/\/raw.githubusercontent.com\/ramdhakne\/blogs\/master\/minikube\/couchbase-persistent-cluster-tls-k8s-minikube.yaml\">aqu\u00ed<\/a><\/p>\n<p>Si todo va bien deber\u00edamos ver el cluster Couchbase desplegado con PVs, TLS certs<\/p>\n<pre class=\"\">$ sudo kubectl get pods --namespace cbdb\r\nNAME READY STATUS RESTARTS AGE\r\ncb-opensource-k8s-0000 1\/1 Running 0 5h58m\r\ncb-opensource-k8s-0001 1\/1 Running 0 5h58m\r\ncb-opensource-k8s-0002 1\/1 Running 0 5h57m\r\ncouchbase-operator-864685d8b9-j72jd 1\/1 Running 0 20h\r\ncouchbase-operator-admission-7d7d594748-btnm9 1\/1 Running 0 20h\r\n\r\n<\/pre>\n<h6>Acceder a la interfaz de usuario de Couchbase<\/h6>\n<h6>Obtener los detalles del servicio para el cl\u00faster Couchbase<\/h6>\n<pre class=\"\">$ sudo kubectl get svc --namespace cbdb\r\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 6h11m\r\ncb-opensource-k8s-ui NodePort 10.100.90.161 8091:30477\/TCP,18091:30184\/TCP\r\n\r\n<\/pre>\n<h6>Exponer el cl\u00faster CB a trav\u00e9s del servicio CB UI<\/h6>\n<pre class=\"\">$ sudo kubectl port-forward service\/cb-opensource-k8s-ui 8091:8091 --namespace cbdb\r\nForwarding from 127.0.0.1:8091 -&gt; 8091\r\nForwarding from [::1]:8091 -&gt; 8091<\/pre>\n<h4><\/h4>\n<p>Acceso a la interfaz de usuario de Couchbase<\/p>\n<p>Iniciar sesi\u00f3n <a href=\"https:\/\/localhost:8091\">https:\/\/localhost:8091<\/a> para acceder a la CB UI<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7590\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/1-cluster-overview.png\" alt=\"\" width=\"2870\" height=\"1204\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview.png 2870w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-300x126.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-1024x430.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-768x322.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-1536x644.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-2048x859.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/1-cluster-overview-1320x554.png 1320w\" sizes=\"auto, (max-width: 2870px) 100vw, 2870px\" \/><\/p>\n<p>Verifique el certificado ra\u00edz para comprobar que se est\u00e1 utilizando un certificado x509 personalizado.<\/p>\n<p>Haga clic en Seguridad-&gt;Certificado ra\u00edz<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7591\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/2-root-ca.png\" alt=\"\" width=\"1676\" height=\"1308\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca.png 1676w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-300x234.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-1024x799.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-768x599.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-1536x1199.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-20x16.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/2-root-ca-1320x1030.png 1320w\" sizes=\"auto, (max-width: 1676px) 100vw, 1676px\" \/><\/p>\n<p>Borrar un pod al azar, vamos a borrar el pod 001<\/p>\n<pre class=\"\">$ sudo kubectl delete pod cb-opensource-k8s-0001 --namespace cbdb\r\npod \"cb-opensource-k8s-0001\" deleted<\/pre>\n<p>El servidor se conmutar\u00e1 autom\u00e1ticamente en funci\u00f3n de autoFailovertimeout<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7592\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/3-svr-autofailover.png\" alt=\"\" width=\"2880\" height=\"1800\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover.png 2880w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-300x188.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-1024x640.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-768x480.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-1536x960.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-2048x1280.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/3-svr-autofailover-1320x825.png 1320w\" sizes=\"auto, (max-width: 2880px) 100vw, 2880px\" \/><\/p>\n<p>Un nodo Couchbase perdido es auto-recuperado por Couchbase Operator como su definici\u00f3n de cluster en constante vigilancia.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7593\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/4-auto-rebalance.png\" alt=\"\" width=\"2878\" height=\"1292\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance.png 2878w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-300x135.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-1024x460.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-768x345.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-1536x690.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-2048x919.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/4-auto-rebalance-1320x593.png 1320w\" sizes=\"auto, (max-width: 2878px) 100vw, 2878px\" \/><\/p>\n<h4>Ampliaci\u00f3n\/reducci\u00f3n<\/h4>\n<p>Es un cambio de escala de un solo clic o escala hacia abajo.<\/p>\n<h5>Ampliaci\u00f3n<\/h5>\n<p>Cambiar el tama\u00f1o de 3 a 4<\/p>\n<pre class=\"\">--- a\/opensrc-k8s\/cmd-line\/files\/couchbase-persistent-cluster-tls-k8s-minikube.yaml\r\nenableIndexReplica: false\r\ncompressionMode: passive\r\nservers:\r\n- - size: 3\r\n+ - size: 4\r\nname: data\r\nservices:\r\n- data\r\n\r\n<\/pre>\n<p>Ejecute el siguiente comando<\/p>\n<pre class=\"\">sudo kubectl apply -f couchbase-persistent-cluster-tls-k8s-minikube.yaml --namespace cbdb<\/pre>\n<p>\u00a1Boom!<\/p>\n<p>El cl\u00faster se ampl\u00eda.<\/p>\n<p><strong>Precauci\u00f3n:<\/strong> El cl\u00faster K8s necesita tener suficientes recursos para escalar.<\/p>\n<h5>Reducci\u00f3n de la escala<\/h5>\n<p>Es exactamente lo contrario de escalar, reducir el cl\u00faster a cualquier n\u00famero. Pero no menos de 3.<\/p>\n<p>Couchbase MVP es de 3 nodos.<\/p>\n<h4>Copia de seguridad y restauraci\u00f3n del servidor Couchbase<\/h4>\n<p>Copia de seguridad del cl\u00faster CB mediante cbbackupmgr<\/p>\n<p>Crear un repositorio de copia de seguridad en un montaje\/volumen de copia de seguridad dado<\/p>\n<pre class=\"\">$ cbbackupmgr config --archive \/tmp\/data\/ --repo myBackupRepo\r\nBackup repository `myBackupRepo` created successfully in archive `\/tmp\/data\/`<\/pre>\n<p>Copia de seguridad<\/p>\n<pre class=\"\">$ cbbackupmgr backup -c couchbase:\/\/127.0.0.1 -u Administrator -p password -a \/tmp\/data\/ -r myBackupRepo<\/pre>\n<p>Restaurar<\/p>\n<pre class=\"\"># use --force-updates to use all updates from backup repo rather than current state of cluster\r\n$ cbbackupmgr restore -c couchbase:\/\/127.0.0.1 -u Administrator -p password -a \/tmp\/data\/ -r myBackupRepo --force-updates<\/pre>\n<h4>Ejecutar una aplicaci\u00f3n Python de ejemplo desde un espacio de nombres diferente<\/h4>\n<h5>Crear espacio de nombres para el nivel de aplicaci\u00f3n<\/h5>\n<pre class=\"\">$ sudo kubectl create namespace apps\r\nnamespace\/apps created<\/pre>\n<h5>Despliegue del pod de aplicaciones<\/h5>\n<pre class=\"\">$ sudo kubectl create -f app_pod.yaml --namespace apps\r\npod\/app01 created<\/pre>\n<p>Ejecute el programa python de ejemplo para upsert un documento en couchbase cluster<\/p>\n<p>Inicie sesi\u00f3n en los pods shell\/exec en app pod<\/p>\n<pre class=\"\">$ sudo kubectl exec -ti app01 bash --namespace apps<\/pre>\n<h5>Preparar el pod para instalar el SDK de python<\/h5>\n<p><a href=\"https:\/\/raw.githubusercontent.com\/couchbaselabs\/cboperator-hol\/master\/opensrc-k8s\/cmd-line\/files\/PrepAppPodPythonSDK.md\">prep-app-pod para el SDK de python<\/a><\/p>\n<p>Editar el programa con el FQDN del pod<\/p>\n<p>Ejecutar el siguiente comando despu\u00e9s de exec'ing en el pod couchbase<\/p>\n<pre class=\"\">$ sudo kubectl exec -ti cb-opensource-k8s-0000 bash --namespace cbdb<\/pre>\n<p>Obtenga el FQDN del pod de la aplicaci\u00f3n<\/p>\n<pre class=\"\">root@cb-opensource-k8s-0000:\/# hostname -f\r\ncb-opensource-k8s-0000.cb-opensource-k8s.cbdb.svc.cluster.local<\/pre>\n<p>Editar el programa con la cadena de conexi\u00f3n correcta<\/p>\n<p>Para m\u00ed, la cadena de conexi\u00f3n tiene el siguiente aspecto:<\/p>\n<pre class=\"\">cluster = Cluster('couchbase:\/\/cb-opensource-k8s-0000.cb-opensource-k8s.cbdb.svc.cluster.local')<\/pre>\n<p>Dado que ambos namespaces en minikube comparten el mismo kube-dns<\/p>\n<h6>Ejecutar el programa<\/h6>\n<pre class=\"\">root@app01:\/# python python_sdk_example.py\r\nCB Server connection PASSED\r\nOpen the bucket...\r\nDone...\r\nUpserting a document...\r\nDone...\r\nGetting non-existent key. Should fail..\r\nGot exception for missing doc\r\nInserting a doc...\r\nDone...\r\nGetting an existent key. Should pass...\r\nValue for key 'babyliz_liz'\r\n\r\nValue for key 'babyliz_liz'\r\n{u'interests': [u'Holy Grail', u'Kingdoms and Dungeons'], u'type': u'Royales', u'name': u'Baby Liz', u'email': u'babyliz@cb.com'}\r\nDelete a doc with key 'u:baby_arthur'...\r\nDone...\r\nValue for key [u:baby_arthur]\r\nGot exception for missing doc for key [u:baby_arthur] with error\r\nClosing connection to the bucket...\r\nroot@app01:\/#\r\n\r\n<\/pre>\n<p>El documento reinsertado deber\u00eda tener el siguiente aspecto<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7594\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/5-upserted-doc.png\" alt=\"\" width=\"2878\" height=\"876\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc.png 2878w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-300x91.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-1024x312.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-768x234.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-1536x468.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-2048x623.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/5-upserted-doc-1320x402.png 1320w\" sizes=\"auto, (max-width: 2878px) 100vw, 2878px\" \/><\/p>\n<h4>Conclusi\u00f3n<\/h4>\n<p>Desplegamos Couchbase Autonomous Operator con la versi\u00f3n 1.2 en minikube versi\u00f3n: v1.2.0. Couchbase cluster requiere controlador de admisi\u00f3n, RBACs con rol limitado al espacio de nombres (m\u00e1s seguro). CRD desplegado tiene un alcance amplio de cluster, pero eso es por dise\u00f1o. El cl\u00faster Couchbase desplegado ten\u00eda soporte PV y certificados x509 del cliente.<br \/>\nHemos visto c\u00f3mo el cl\u00faster Couchbase se autocura y recupera su salud sin intervenci\u00f3n del usuario.<\/p>\n<p>Backup y restore son muy cr\u00edticos para el servidor Couchbase. cbbackupmgr es nuestra utilidad recomendada para realizar backups y restore. Tambi\u00e9n vimos c\u00f3mo instalar Couchbase python sdk en un pod de aplicaci\u00f3n desplegado en su espacio de nombres y podemos hacer que esa aplicaci\u00f3n hable con el servidor Couchbase y realice operaciones CRUD.<\/p>\n<h5>Limpieza (opcional)<\/h5>\n<p>Siga estos pasos para desconfigurar todos los activos k8s creados.<\/p>\n<pre class=\"\">sudo kubectl delete -f secret.yaml --namespace cbdb\r\nsudo kubectl delete -f couchbase-persistent-cluster-tls-k8s-minikube.yaml --namespace cbdb\r\nsudo kubectl delete rolebinding couchbase-operator --namespace cbdb\r\nsudo kubectl delete serviceaccount couchbase-operator --namespace cbdb\r\nsudo kubectl delete -f operator-deployment.yaml --namespace cbdb\r\nsudo kubectl get deployments --namespace cbdb\r\nsudo kubectl delete -f admission.yaml --namespace cbdb\r\nsudo kubectl delete pod app01 --namespace apps\r\n\r\n<\/pre>","protected":false},"excerpt":{"rendered":"<p>This hands-on tutorial blog primarily covers details around setting up Couchbase Kubernetes Operator on a laptop\/desktop running minikube. It features setting up custom TLS certs and persistent volumes. Along with checking how to scale up and down the cluster. Also [&hellip;]<\/p>","protected":false},"author":12023,"featured_media":10736,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2225,1816,2322,9139,1813,2389,2201],"tags":[9243,1545,1725],"ppma_author":[9071],"class_list":["post-7586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-cloud","category-couchbase-server","category-kubernetes","category-python","category-security","category-solutions","category-tools-sdks","tag-cloud-native-database","tag-kubernetes","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorial: Couchbase Autonomous Operator On Minikube<\/title>\n<meta name=\"description\" content=\"Follow this hands-on tutorial hands-on tutorial for setting up Couchbase Kubernetes Operator on a laptop\/desktop running minikube.\" \/>\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\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Couchbase Autonomous Operator On Minikube\" \/>\n<meta property=\"og:description\" content=\"Follow this hands-on tutorial hands-on tutorial for setting up Couchbase Kubernetes Operator on a laptop\/desktop running minikube.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-05T01:03:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:08:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1056\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ram Dhakne\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ram Dhakne\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\"},\"author\":{\"name\":\"Ram Dhakne\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13\"},\"headline\":\"Tutorial: Couchbase Autonomous Operator On Minikube\",\"datePublished\":\"2019-09-05T01:03:55+00:00\",\"dateModified\":\"2025-06-14T05:08:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\"},\"wordCount\":794,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png\",\"keywords\":[\"Cloud-Native Database\",\"kubernetes\",\"NoSQL Database\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Capella\",\"Couchbase Server\",\"Kubernetes\",\"Python\",\"Security\",\"Solutions\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\",\"name\":\"Tutorial: Couchbase Autonomous Operator On Minikube\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png\",\"datePublished\":\"2019-09-05T01:03:55+00:00\",\"dateModified\":\"2025-06-14T05:08:24+00:00\",\"description\":\"Follow this hands-on tutorial hands-on tutorial for setting up Couchbase Kubernetes Operator on a laptop\/desktop running minikube.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png\",\"width\":1200,\"height\":1056,\"caption\":\"A ship's wheel inside of a hexagon\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Couchbase Autonomous Operator On Minikube\"}]},{\"@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\/219548e728c73c6f1ae06f994ebbfb13\",\"name\":\"Ram Dhakne\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0f4c71d7c27bda26464a202747e04acd\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g\",\"caption\":\"Ram Dhakne\"},\"description\":\"Ram Dhakne is Solutions Consultant - US West at Couchbase. He currently helps Enterprise customers with their digital innovations journey and helping them adopt NoSQL technologies. His current interests are running persistent applications like Couchbase NoSQL server on Kubernetes clusters running on AKS, GKE, ACS and OpenShift, securing end-to-end on kubernetes. In his past life has worked on IaaS platforms (AWS, GCP, Azure &amp; Private Clouds), Enterprise Backup Target Products &amp; Backup Applications.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/ram-dhaknecouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tutorial: Operador Aut\u00f3nomo Couchbase en Minikube","description":"Sigue este tutorial pr\u00e1ctico para configurar Couchbase Kubernetes Operator en un port\u00e1til\/escritorio ejecutando minikube.","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\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/","og_locale":"es_MX","og_type":"article","og_title":"Tutorial: Couchbase Autonomous Operator On Minikube","og_description":"Follow this hands-on tutorial hands-on tutorial for setting up Couchbase Kubernetes Operator on a laptop\/desktop running minikube.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-09-05T01:03:55+00:00","article_modified_time":"2025-06-14T05:08:24+00:00","og_image":[{"width":1200,"height":1056,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png","type":"image\/png"}],"author":"Ram Dhakne","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ram Dhakne","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/"},"author":{"name":"Ram Dhakne","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13"},"headline":"Tutorial: Couchbase Autonomous Operator On Minikube","datePublished":"2019-09-05T01:03:55+00:00","dateModified":"2025-06-14T05:08:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/"},"wordCount":794,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png","keywords":["Cloud-Native Database","kubernetes","NoSQL Database"],"articleSection":["Best Practices and Tutorials","Couchbase Capella","Couchbase Server","Kubernetes","Python","Security","Solutions","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/","url":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/","name":"Tutorial: Operador Aut\u00f3nomo Couchbase en Minikube","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png","datePublished":"2019-09-05T01:03:55+00:00","dateModified":"2025-06-14T05:08:24+00:00","description":"Sigue este tutorial pr\u00e1ctico para configurar Couchbase Kubernetes Operator en un port\u00e1til\/escritorio ejecutando minikube.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/09\/Screen-Shot-2019-09-04-at-5.51.58-PM_RESIZED.png","width":1200,"height":1056,"caption":"A ship's wheel inside of a hexagon"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-running-couchbase-autonomous-operator-on-minikube-with-sample-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Couchbase Autonomous Operator On Minikube"}]},{"@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\/219548e728c73c6f1ae06f994ebbfb13","name":"Ram Dhakne","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0f4c71d7c27bda26464a202747e04acd","url":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","caption":"Ram Dhakne"},"description":"Ram Dhakne es Consultor de Soluciones - US West en Couchbase. Actualmente ayuda a los clientes empresariales con su viaje de innovaciones digitales y les ayuda a adoptar tecnolog\u00edas NoSQL. Sus intereses actuales son ejecutar aplicaciones persistentes como el servidor NoSQL Couchbase en cl\u00fasteres Kubernetes que se ejecutan en AKS, GKE, ACS y OpenShift, asegurando de extremo a extremo en kubernetes. En su vida pasada ha trabajado en plataformas IaaS (AWS, GCP, Azure &amp; Private Clouds), Enterprise Backup Target Products &amp; Backup Applications.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/ram-dhaknecouchbase-com\/"}]}},"authors":[{"term_id":9071,"user_id":12023,"is_guest":0,"slug":"ram-dhaknecouchbase-com","display_name":"Ram Dhakne","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","author_category":"","last_name":"Dhakne","first_name":"Ram","job_title":"","user_url":"","description":"Ram Dhakne es Consultor de Soluciones - US West en Couchbase. Actualmente ayuda a los clientes empresariales con su viaje de innovaciones digitales y les ayuda a adoptar tecnolog\u00edas NoSQL. Sus intereses actuales son ejecutar aplicaciones persistentes como el servidor NoSQL Couchbase en cl\u00fasteres Kubernetes que se ejecutan en AKS, GKE, ACS y OpenShift, asegurando de extremo a extremo en kubernetes. En su vida pasada ha trabajado en plataformas IaaS (AWS, GCP, Azure &amp; Private Clouds), Enterprise Backup Target Products &amp; Backup Applications."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7586","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\/12023"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=7586"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/10736"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=7586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=7586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=7586"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=7586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}