{"id":12610,"date":"2021-12-20T08:00:59","date_gmt":"2021-12-20T16:00:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12610"},"modified":"2025-06-13T21:33:21","modified_gmt":"2025-06-14T04:33:21","slug":"testing-couchbase-applications-why-wait","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/testing-couchbase-applications-why-wait\/","title":{"rendered":"Probar aplicaciones Couchbase, \u00bfa qu\u00e9 espera?"},"content":{"rendered":"<p>In my previous blog, we discussed setting up a Couchbase cluster locally on your own hardware. The beauty of this was that it significantly reduces both the TCO of your testing infrastructure and the time needed to acquire new test infrastructure, which is especially important if you&#8217;re just starting your Couchbase journey.<\/p>\n<p>To bring everyone to the same starting point, <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-autonomous-operator-proof-of-concept-guide\/\">here&#8217;s a link to my previous blog<\/a>, where we ran through how to quickly spin up a development cluster locally using the Couchbase Autonomous Operator for Kubernetes.<\/p>\n<p>So where could we possibly go from here? Establishing an easily deployed environment that would mimic your application deployment is the only natural path. This will be another important step in the right direction to allow you to both develop and test your deployments locally, with minimal effort.<\/p>\n<h4>Even Simpler Deployment<\/h4>\n<p>We have simplified the deployment method discussed in my <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-autonomous-operator-proof-of-concept-guide\/\">previous blog<\/a>, of course it is still important to understand the components of the Couchbase operator we will deploy, so if you haven&#8217;t already, please reference my previous blog.<\/p>\n<p>The new method of deployment is contained within the <a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\">operator-gitops repo<\/a> maintained by Couchbase (and, more specifically, the fantastic Patrick Stephens). The only thing you now need to do to have a Couchbase cluster deployed locally is run the <a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\"><em>create-cluster.sh<\/em><\/a> script. Once this is complete, you can run your <a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/create-dev.sh\"><em>create-dev.sh<\/em><\/a> script. Just like that, you&#8217;ll have everything you need (infrastructure-wise) to test your Couchbase Application features.<\/p>\n<h4>Development Deployment Breakdown<\/h4>\n<p>To help this be a practical technical guide for you, the following sections cover all the details of what we are doing in the <a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/create-dev.sh\">create-dev.sh<\/a> script.<\/p>\n<p><strong>Dockerfile<\/strong><br \/>\nWhen I was a developer, I had to maintain my own development and test environments. Maintaining these environments was a nightmare as there wasn&#8217;t much in the way of automation. New releases naturally introduced breaking code changes. Thankfully, this has all changed, and we show a typical Node.js SDK example of automation in this <a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/Dockerfile\">Dockerfile<\/a> from the <em>operator-gitops repo<\/em>. This blog post presents this so that you can replicate one in your environment.<\/p>\n<pre>FROM node:16.9.1\r\n# Update the image to the latest packages &amp; get some network test tools\r\n# Install VIM - change this to an editor of your choice - sorry I was raised by savages\r\nRUN apt-get update &amp;&amp; \\\r\napt-get -y install git iputils-ping iproute2 vim &amp;&amp; \\\r\nmkdir -p \/user\/app\r\n\r\n# Need to specify an existing directory so that all our other commands have a consistent working directory to run in\r\nWORKDIR \/usr\/app\r\n\r\n# Steps taken from install SDK guide\r\n# Follow the steps to get started with our SDK:\r\n# https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/hello-world\/start-using-sdk.html\r\nRUN npm init -y &amp;&amp; npm install couchbase --save\r\n\r\n# Hack to just sleep so we can attach\r\nCMD [\"sleep\",\"3600\"]<\/pre>\n<p>We&#8217;ll go through this line by line:<\/p>\n<ol>\n<li><strong>FROM node:16.9.1<\/strong> &#8211; this is the base image provided by Node.js so that we don&#8217;t have to worry about installing it (amongst other things).<\/li>\n<li><strong>RUN apt-get \u2026<\/strong> &#8211; this is a series of commands to install tools for testing connectivity between your development environment and Couchbase deployments.<\/li>\n<li><strong>WORKDIR \/usr\/app<\/strong> &#8211; here, we&#8217;re setting a directory which will always be used by the commands which follow in the dockerfile. It also sets an entry path so that you&#8217;ll land there when you shell into the container.<\/li>\n<li><strong>RUN npm init<\/strong> -y &amp;&amp; npm install couchbase &#8211;save &#8211; this will install the Couchbase SDK as per the instructions in our docs.<\/li>\n<li><strong>CMD [&#8220;sleep&#8221;,&#8221;3600&#8243;]<\/strong> &#8211; this is a hack to keep the container alive so we can attach.<\/li>\n<\/ol>\n<p>These shared concepts also apply to other Couchbase SDKs. Find a relevant default image, install the tools, set a workdir, install the Couchbase SDK, set something in place so we can attach in and test code.<\/p>\n<pre>docker build -t \"${DEV_IMAGE}\" .\r\nkind load docker-image \"${DEV_IMAGE}\" --name=\"${CLUSTER_NAME}\"<\/pre>\n<p>The first thing that will happen in our automatic dev environment deployment will be to build the Docker image specified in the dockerfile and preload the image in KIND (Kubernetes in Docker).<\/p>\n<h4>Development Kubernetes Deployment<\/h4>\n<pre># Create a deployment for our dev container image.\r\ncat &lt;&lt; EOF | kubectl apply -f -\r\napiVersion: apps\/v1\r\nkind: Deployment\r\nmetadata:\r\nname: couchbase-sdk-dev\r\nnamespace: $NAMESPACE\r\nspec:\r\nselector:\r\nmatchLabels:\r\ncouchSdk: \"dev\"\r\ntemplate:\r\nmetadata:\r\nlabels:\r\ncouchSdk: \"dev\"\r\nenvironment: \"dev\"\r\nspec:\r\ncontainers:\r\n- name: dev-container\r\nimage: $DEV_IMAGE\r\nimagePullPolicy: Never\r\nenv:\r\n- name: CB_HOST\r\nvalue: $CB_SERVICE\r\n# https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/#environment-variables-are-not-updated-after-a-secret-update\r\n- name: CB_USER\r\nvalueFrom:\r\nsecretKeyRef:\r\nname: $AUTHENTICATION_SECRET\r\nkey: username\r\n- name: CB_PSWD\r\nvalueFrom:\r\nsecretKeyRef:\r\nname: $AUTHENTICATION_SECRET\r\nkey: password\r\nEOF\r\n# Note that if you do not change anything then it will stay deployed from a previous run.<\/pre>\n<p>Our newly created container image can now be utilized in a Kubernetes deployment where the container is deployed and scaled by the system. Should our container&#8217;s deployed pod fail, the Kubernetes Deployment Controller will notice this and fire up a new instance.<\/p>\n<p>We have provided a nice and simple deployment definition within the create-dev.sh script that will use our Docker image and attach some simple labels to manage the deployment with kubectl.<\/p>\n<h4>Deployment Rollout<\/h4>\n<pre>echo \"Waiting for Dev Deployment to start up...\"\r\nuntil kubectl rollout status deployment\/couchbase-sdk-dev; do\r\necho -n '.'\r\nsleep 2\r\ndone\r\necho \"Dev Deployment configured and ready to go\"\r\n\r\n# Output the name of the development pod\r\nDEV_POD=$(kubectl get pods -l couchSdk=dev --output=jsonpath='{.items[*].metadata.name}')\r\necho \"Dev Pod Name: $DEV_POD\"<\/pre>\n<p>Without rolling out the deployment definition, it will remain just a definition. The next step is to do a rollout and present our pod name so that we can push our code into it.<\/p>\n<h4>Running Code in the Container<\/h4>\n<p>At this stage, we successfully ran the create-dev.sh script. We now have the task of getting our code into the container to test it. A few commands here will help us get code into the container and then open a shell.<\/p>\n<pre>kubectl cp \/Users\/samredman\/dev\/node-couchbaseproject $DEV_POD_NAME_OUTPUTTED:\/usr\/app<\/pre>\n<p>This is just an example, but the concepts should remain the same. Here, we take our directory of Couchbase SDK code and copy it into the newly created development pod (remember to get the echo&#8217;d output of &#8220;Dev Pod Name: X&#8221;).<\/p>\n<pre>kubectl exec --stdin --tty couchbase-sdk-dev-6bfbf76b7-zxln2 -- \/bin\/bash<\/pre>\n<p>This command will take us to the shell within the container. You should see the path change in the prompt. From here, you can run the code you copied across in the &#8220;kubectl cp&#8221; command.<\/p>\n<h4>Tasty Sample Code<\/h4>\n<p>We have provided a small sample script that follows the same patterns as our SDK docs. The SDK docs do a fantastic job of explaining the Couchbase-isms of the building blocks of a Couchbase application.<\/p>\n<p>Please note this documentation that helps determine the correct endpoint you should connect to. The key here is the cluster name defined in the cluster deployment and appending it with -srv. To quote the docs: &#8220;The service name is in the form &lt;cluster-name&gt;-srv.&#8221;<\/p>\n<p>The few configurations available at the top of the script should remain the same for a default deployment in Helm. Check that the connection credentials used in the script match that of the output from the command: helm get all couchbase<\/p>\n<p>In any case, you should check that the configuration options meet your expectations. Remember that the code doesn&#8217;t lie \u2013 if it can&#8217;t connect, it probably has not been told how to connect correctly. However, if you make changes that divert from the defaults, remember to change your cluster name, bucket, and authentication credentials.<\/p>\n<h4>Conclusion<\/h4>\n<p>You should be coming away from this blog with a fully configured development environment, which will allow you to test your Couchbase SDK code against a real-life Couchbase cluster, no mocks! I hope the automation helps you have more time to write code instead of managing development environments as I had to during my time as a developer.<\/p>\n<p><span style=\"font-weight: 400;\">Here are the direct links to the resources used in this post:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Blog: <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-autonomous-operator-proof-of-concept-guide\/\"><span style=\"font-weight: 400;\">How to Build a Couchbase Autonomous Operator Proof of Concept<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tools: <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\"><span style=\"font-weight: 400;\">Couchbase Operator deployment with Helm and KIND<\/span><\/a>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\"><span style=\"font-weight: 400;\">Couchbase operator-gitops repo<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/create-cluster.sh\"><i><span style=\"font-weight: 400;\">create-cluster.sh<\/span><\/i><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/create-dev.sh\"><i><span style=\"font-weight: 400;\">create-dev.sh<\/span><\/i><\/a><span style=\"font-weight: 400;\"> scripts<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/Dockerfile\"><span style=\"font-weight: 400;\">Dockerfile<\/span><\/a><span style=\"font-weight: 400;\"> for Couchbase Node.js SDK<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/github.com\/couchbaselabs\/operator-gitops\/blob\/main\/index.js\"><span style=\"font-weight: 400;\">Sample Couchbase Node.js SDK script<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Docs: <\/span><a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/hello-world\/start-using-sdk.html\"><span style=\"font-weight: 400;\">Install the Couchbase SDK<\/span><\/a><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Docs: <\/span><a href=\"https:\/\/docs.couchbase.com\/operator\/current\/howto-client-sdks.html#dns-based-addressing\"><span style=\"font-weight: 400;\">Finding the cluster endpoint for Kubernetes DNS<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my previous blog, we discussed setting up a Couchbase cluster locally on your own hardware. The beauty of this was that it significantly reduces both the TCO of your testing infrastructure and the time needed to acquire new test [&hellip;]<\/p>\n","protected":false},"author":76077,"featured_media":12612,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9284,2322],"tags":[1519,1545],"ppma_author":[9168],"class_list":["post-12610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-autonomous-operator","category-kubernetes","tag-docker","tag-kubernetes"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Testing Couchbase Applications, Why Wait? - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Test your code against a containerized Couchbase database using Docker and Kubernetes - step by step instructions included.\" \/>\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\/testing-couchbase-applications-why-wait\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testing Couchbase Applications, Why Wait?\" \/>\n<meta property=\"og:description\" content=\"Test your code against a containerized Couchbase database using Docker and Kubernetes - step by step instructions included.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/testing-couchbase-applications-why-wait\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-20T16:00:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:33:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1700\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sam Redman, Solutions 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=\"Sam Redman, Solutions 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\\\/testing-couchbase-applications-why-wait\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/\"},\"author\":{\"name\":\"Sam Redman\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/512e4ed8ed1188a93cb7c3aee277f408\"},\"headline\":\"Testing Couchbase Applications, Why Wait?\",\"datePublished\":\"2021-12-20T16:00:59+00:00\",\"dateModified\":\"2025-06-14T04:33:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/\"},\"wordCount\":1105,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/12\\\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg\",\"keywords\":[\"docker\",\"kubernetes\"],\"articleSection\":[\"Couchbase Autonomous Operator\",\"Kubernetes\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/\",\"name\":\"Testing Couchbase Applications, Why Wait? - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/12\\\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg\",\"datePublished\":\"2021-12-20T16:00:59+00:00\",\"dateModified\":\"2025-06-14T04:33:21+00:00\",\"description\":\"Test your code against a containerized Couchbase database using Docker and Kubernetes - step by step instructions included.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/12\\\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/12\\\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg\",\"width\":2560,\"height\":1700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/testing-couchbase-applications-why-wait\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testing Couchbase Applications, Why Wait?\"}]},{\"@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\\\/512e4ed8ed1188a93cb7c3aee277f408\",\"name\":\"Sam Redman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g69dc9b1e46ceb237d29e1e4b626c6bcc\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"caption\":\"Sam Redman\"},\"description\":\"Solutions Engineer at Couchbase. Sam has previously as a developer and an SRE before joining Couchbase.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/sam-redman\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Testing Couchbase Applications, Why Wait? - The Couchbase Blog","description":"Pruebe su c\u00f3digo contra una base de datos Couchbase en contenedores utilizando Docker y Kubernetes - instrucciones paso a paso incluidas.","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\/testing-couchbase-applications-why-wait\/","og_locale":"es_MX","og_type":"article","og_title":"Testing Couchbase Applications, Why Wait?","og_description":"Test your code against a containerized Couchbase database using Docker and Kubernetes - step by step instructions included.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/testing-couchbase-applications-why-wait\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-12-20T16:00:59+00:00","article_modified_time":"2025-06-14T04:33:21+00:00","og_image":[{"width":2560,"height":1700,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg","type":"image\/jpeg"}],"author":"Sam Redman, Solutions Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sam Redman, Solutions Engineer","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/"},"author":{"name":"Sam Redman","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408"},"headline":"Testing Couchbase Applications, Why Wait?","datePublished":"2021-12-20T16:00:59+00:00","dateModified":"2025-06-14T04:33:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/"},"wordCount":1105,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg","keywords":["docker","kubernetes"],"articleSection":["Couchbase Autonomous Operator","Kubernetes"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/","url":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/","name":"Testing Couchbase Applications, Why Wait? - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg","datePublished":"2021-12-20T16:00:59+00:00","dateModified":"2025-06-14T04:33:21+00:00","description":"Pruebe su c\u00f3digo contra una base de datos Couchbase en contenedores utilizando Docker y Kubernetes - instrucciones paso a paso incluidas.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/12\/jacky-chiu-lgWo0g8ItvE-unsplash-scaled.jpg","width":2560,"height":1700},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/testing-couchbase-applications-why-wait\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Testing Couchbase Applications, Why Wait?"}]},{"@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\/512e4ed8ed1188a93cb7c3aee277f408","name":"Sam Redman","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g69dc9b1e46ceb237d29e1e4b626c6bcc","url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","caption":"Sam Redman"},"description":"Ingeniero de soluciones en Couchbase. Antes de incorporarse a Couchbase, Sam trabaj\u00f3 como desarrollador y SRE.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/sam-redman\/"}]}},"acf":[],"authors":[{"term_id":9168,"user_id":76077,"is_guest":0,"slug":"sam-redman","display_name":"Sam Redman, Solutions Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12610","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\/76077"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12610"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12610\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/12612"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12610"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}