{"id":2284,"date":"2017-01-04T18:00:07","date_gmt":"2017-01-04T18:00:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2284"},"modified":"2023-06-21T06:35:30","modified_gmt":"2023-06-21T13:35:30","slug":"kubernetes-cluster-azure-couchbase-service","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/kubernetes-cluster-azure-couchbase-service\/","title":{"rendered":"Cluster do Kubernetes no Azure e exposi\u00e7\u00e3o do servi\u00e7o Couchbase"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12277\" src=\"\/wp-content\/original-assets\/kubernetes-logo.png\" alt=\"Kubernetes Logo\" width=\"128\" height=\"113\" \/><\/p>\n<p>This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0<a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase<\/a>, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker<br \/>\ncontainer.<\/p>\n<ul>\n<li>Part 1 explained how to start Kubernetes cluster using Vagrant &#8211;\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\">Kubernetes on Vagrant<\/a><\/li>\n<li>Part 2\u00a0did the same for Amazon Web Services &#8211;\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\">Kubernetes\u00a0on Amazon\u00a0Web Services<\/a><\/li>\n<li>Part 3 did the same for Google Cloud &#8211;\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-google-cloud-expose-service\/\">Kubernetes on Google Cloud<\/a><\/li>\n<\/ul>\n<p>This fourth\u00a0part will show:<\/p>\n<ul>\n<li>How to setup and start the\u00a0Kubernetes cluster on\u00a0Azure<\/li>\n<li>Run Docker container in the Kubernetes cluster<\/li>\n<li>Expose Pod on Kubernetes as Service<\/li>\n<li>Shutdown the cluster<\/li>\n<\/ul>\n<p><a href=\"\/wp-content\/original-assets\/june-2016\/kubernetes-cluster-on-azure-and-expose-couchbase-service\/azure-kubernetes-couchbase-cluster-1024x452.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14032\" src=\"\/wp-content\/original-assets\/june-2016\/kubernetes-cluster-on-azure-and-expose-couchbase-service\/azure-kubernetes-couchbase-cluster-1024x452.png\" alt=\"azure-kubernetes-couchbase-cluster\" width=\"604\" height=\"267\" \/><\/a><\/p>\n<p>Many thanks to <a href=\"https:\/\/twitter.com\/colemickens\">@colemickens<\/a>\u00a0 for helping\u00a0me\u00a0through this recipe.<\/p>\n<h2>Install and Configure Azure CLI<\/h2>\n<p><a href=\"https:\/\/github.com\/Azure\/azure-xplat-cli\">Azure CLI<\/a>\u00a0is a command-line interface to develop, deploy and manage Azure applications. This is needed in order to install Kubernetes cluster on Azure.<\/p>\n<ol>\n<li>Install Node:\n<pre class=\"lang:default decode:true\">brew install node\r\n==&gt; Downloading https:\/\/homebrew.bintray.com\/bottles\/node-6.2.0.yosemite.bottle.tar.gz\r\n######################################################################## 100.0%\r\n==&gt; Pouring node-6.2.0.yosemite.bottle.tar.gz\r\n==&gt; Caveats\r\nPlease note by default only English locale support is provided. If you need\r\nfull locale support you should either rebuild with full icu:\r\n  `brew reinstall node --with-full-icu`\r\nor add full icu data at runtime following:\r\n  https:\/\/github.com\/nodejs\/node\/wiki\/Intl#using-and-customizing-the-small-icu-build\r\n\r\nBash completion has been installed to:\r\n  \/usr\/local\/etc\/bash_completion.d\r\n==&gt; Summary\r\n?  \/usr\/local\/Cellar\/node\/6.2.0: 3,979 files, 40.4M<\/pre>\n<\/li>\n<li>Install Azure CLI:\n<pre class=\"lang:default decode:true\">npm install -g azure-cli\r\n\/usr\/local\/bin\/azure -&gt; \/usr\/local\/lib\/node_modules\/azure-cli\/bin\/azure\r\n\r\n&gt; fibers@1.0.13 install \/usr\/local\/lib\/node_modules\/azure-cli\/node_modules\/fibers\r\n&gt; node build.js || nodejs build.js\r\n\r\n`darwin-x64-v8-5.0` exists; testing\r\nBinary is fine; exiting\r\n\/usr\/local\/lib\r\n\u2514\u2500\u252c azure-cli@0.10.0\r\n  \u251c\u2500\u252c adal-node@0.1.17\r\n  \u2502 \u251c\u2500\u2500 date-utils@1.2.21\r\n  \u2502 \u251c\u2500\u252c jws@3.1.3\r\n  \u2502 \u2502 \u251c\u2500\u252c base64url@1.0.6\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u252c meow@2.0.0\r\n  \u2502 \u2502 \u2502   \u251c\u2500\u252c camelcase-keys@1.0.0\r\n  \u2502 \u2502 \u2502   \u2502 \u251c\u2500\u2500 camelcase@1.2.1\r\n  \u2502 \u2502 \u2502   \u2502 \u2514\u2500\u2500 map-obj@1.0.1\r\n  \u2502 \u2502 \u2502   \u251c\u2500\u252c indent-string@1.2.2\r\n  \u2502 \u2502 \u2502   \u2502 \u251c\u2500\u2500 get-stdin@4.0.1\r\n  \u2502 \u2502 \u2502   \u2502 \u2514\u2500\u252c repeating@1.1.3\r\n  \u2502 \u2502 \u2502   \u2502   \u2514\u2500\u2500 is-finite@1.0.1\r\n  \u2502 \u2502 \u2502   \u251c\u2500\u2500 minimist@1.2.0\r\n  \u2502 \u2502 \u2502   \u2514\u2500\u2500 object-assign@1.0.0\r\n  \u2502 \u2502 \u2514\u2500\u252c jwa@1.1.3\r\n  \u2502 \u2502   \u251c\u2500\u2500 buffer-equal-constant-time@1.0.1\r\n  \u2502 \u2502   \u2514\u2500\u252c ecdsa-sig-formatter@1.0.5\r\n  \u2502 \u2502     \u2514\u2500\u2500 base64-url@1.2.2\r\n  \u2502 \u251c\u2500\u2500 node-uuid@1.4.1\r\n  \u2502 \u251c\u2500\u2500 xmldom@0.1.22\r\n  \u2502 \u2514\u2500\u2500 xpath.js@1.0.6\r\n  \u251c\u2500\u2500 applicationinsights@0.15.12\r\n  \u251c\u2500\u2500 async@1.4.2\r\n  \u251c\u2500\u2500 azure-arm-authorization@2.0.0\r\n  \u251c\u2500\u2500 azure-arm-batch@0.1.0\r\n  \u251c\u2500\u2500 azure-arm-cdn@0.1.0-preview\r\n  \u251c\u2500\u2500 azure-arm-commerce@0.1.1\r\n  \u251c\u2500\u2500 azure-arm-compute@0.18.0\r\n  \u251c\u2500\u2500 azure-arm-datalake-analytics@0.3.2\r\n  \u251c\u2500\u2500 azure-arm-datalake-store@0.3.0\r\n  \u251c\u2500\u2500 azure-arm-dns@0.10.1\r\n  \u251c\u2500\u2500 azure-arm-hdinsight@0.2.0\r\n  \u251c\u2500\u2500 azure-arm-hdinsight-jobs@0.1.0\r\n  \u251c\u2500\u2500 azure-arm-insights@0.11.1\r\n  \u251c\u2500\u2500 azure-arm-network@0.13.1\r\n  \u251c\u2500\u2500 azure-arm-rediscache@0.2.1\r\n  \u251c\u2500\u2500 azure-arm-resource@1.4.4-preview\r\n  \u251c\u2500\u2500 azure-arm-storage@0.13.1-preview\r\n  \u251c\u2500\u2500 azure-arm-trafficmanager@0.10.5\r\n  \u251c\u2500\u252c azure-arm-website@0.10.0\r\n  \u2502 \u251c\u2500\u252c azure-common@0.9.12\r\n  \u2502 \u2502 \u251c\u2500\u252c request@2.45.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 aws-sign2@0.5.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 bl@0.9.5\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 caseless@0.6.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 forever-agent@0.5.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c form-data@0.1.4\r\n  \u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 async@0.9.2\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u252c combined-stream@0.0.7\r\n  \u2502 \u2502 \u2502 \u2502   \u2514\u2500\u2500 delayed-stream@0.0.5\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c hawk@1.1.1\r\n  \u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 boom@0.4.2\r\n  \u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 cryptiles@0.2.2\r\n  \u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 hoek@0.9.1\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 sntp@0.2.4\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c http-signature@0.10.1\r\n  \u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 asn1@0.1.11\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 assert-plus@0.1.5\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 mime-types@1.0.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 node-uuid@1.4.7\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 oauth-sign@0.4.0\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 qs@1.2.2\r\n  \u2502 \u2502 \u2514\u2500\u2500 xml2js@0.2.7\r\n  \u2502 \u2514\u2500\u2500 moment@2.6.0\r\n  \u251c\u2500\u2500 azure-asm-compute@0.15.0\r\n  \u251c\u2500\u2500 azure-asm-hdinsight@0.10.2\r\n  \u251c\u2500\u2500 azure-asm-mgmt@0.10.1\r\n  \u251c\u2500\u2500 azure-asm-network@0.11.0\r\n  \u251c\u2500\u2500 azure-asm-sb@0.10.1\r\n  \u251c\u2500\u2500 azure-asm-sql@0.10.1\r\n  \u251c\u2500\u2500 azure-asm-storage@0.10.1\r\n  \u251c\u2500\u2500 azure-asm-subscription@0.10.1\r\n  \u251c\u2500\u2500 azure-asm-trafficmanager@0.10.3\r\n  \u251c\u2500\u252c azure-asm-website@0.10.1\r\n  \u2502 \u2514\u2500\u2500 moment@2.6.0\r\n  \u251c\u2500\u2500 azure-batch@0.3.0\r\n  \u251c\u2500\u252c azure-common@0.9.16\r\n  \u2502 \u251c\u2500\u2500 dateformat@1.0.2-1.2.3\r\n  \u2502 \u251c\u2500\u2500 duplexer@0.1.1\r\n  \u2502 \u251c\u2500\u2500 envconf@0.0.4\r\n  \u2502 \u251c\u2500\u252c request@2.45.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 aws-sign2@0.5.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 bl@0.9.5\r\n  \u2502 \u2502 \u251c\u2500\u2500 caseless@0.6.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 forever-agent@0.5.2\r\n  \u2502 \u2502 \u251c\u2500\u252c form-data@0.1.4\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 async@0.9.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c combined-stream@0.0.7\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 delayed-stream@0.0.5\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 mime@1.2.11\r\n  \u2502 \u2502 \u251c\u2500\u252c hawk@1.1.1\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 boom@0.4.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 cryptiles@0.2.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 hoek@0.9.1\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 sntp@0.2.4\r\n  \u2502 \u2502 \u251c\u2500\u252c http-signature@0.10.1\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 asn1@0.1.11\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 assert-plus@0.1.5\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 ctype@0.5.3\r\n  \u2502 \u2502 \u251c\u2500\u2500 mime-types@1.0.2\r\n  \u2502 \u2502 \u251c\u2500\u2500 node-uuid@1.4.7\r\n  \u2502 \u2502 \u251c\u2500\u2500 oauth-sign@0.4.0\r\n  \u2502 \u2502 \u2514\u2500\u2500 qs@1.2.2\r\n  \u2502 \u251c\u2500\u2500 validator@3.22.2\r\n  \u2502 \u2514\u2500\u2500 xml2js@0.2.7\r\n  \u251c\u2500\u2500 azure-gallery@2.0.0-pre.18\r\n  \u251c\u2500\u2500 azure-graph@0.1.1\r\n  \u251c\u2500\u252c azure-keyvault@0.10.1\r\n  \u2502 \u2514\u2500\u2500 node-uuid@1.4.7\r\n  \u251c\u2500\u252c azure-monitoring@0.10.2\r\n  \u2502 \u2514\u2500\u2500 moment@2.6.0\r\n  \u251c\u2500\u252c azure-storage@0.7.0\r\n  \u2502 \u251c\u2500\u2500 browserify-mime@1.2.9\r\n  \u2502 \u251c\u2500\u2500 extend@1.2.1\r\n  \u2502 \u251c\u2500\u2500 node-uuid@1.4.7\r\n  \u2502 \u251c\u2500\u252c readable-stream@2.0.6\r\n  \u2502 \u2502 \u251c\u2500\u2500 isarray@1.0.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 process-nextick-args@1.0.7\r\n  \u2502 \u2502 \u2514\u2500\u2500 util-deprecate@1.0.2\r\n  \u2502 \u251c\u2500\u252c request@2.57.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 aws-sign2@0.5.0\r\n  \u2502 \u2502 \u251c\u2500\u252c bl@0.9.5\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u252c readable-stream@1.0.34\r\n  \u2502 \u2502 \u2502   \u2514\u2500\u2500 isarray@0.0.1\r\n  \u2502 \u2502 \u251c\u2500\u2500 caseless@0.10.0\r\n  \u2502 \u2502 \u251c\u2500\u252c form-data@0.2.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 async@0.9.2\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u252c combined-stream@0.0.7\r\n  \u2502 \u2502 \u2502   \u2514\u2500\u2500 delayed-stream@0.0.5\r\n  \u2502 \u2502 \u251c\u2500\u252c har-validator@1.8.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 bluebird@2.10.2\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 commander@2.9.0\r\n  \u2502 \u2502 \u251c\u2500\u2500 hawk@2.3.1\r\n  \u2502 \u2502 \u251c\u2500\u252c http-signature@0.11.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 asn1@0.1.11\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 assert-plus@0.1.5\r\n  \u2502 \u2502 \u251c\u2500\u252c mime-types@2.0.14\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 mime-db@1.12.0\r\n  \u2502 \u2502 \u2514\u2500\u2500 qs@3.1.0\r\n  \u2502 \u251c\u2500\u2500 validator@3.22.2\r\n  \u2502 \u2514\u2500\u2500 xml2js@0.2.7\r\n  \u251c\u2500\u252c caller-id@0.1.0\r\n  \u2502 \u2514\u2500\u2500 stack-trace@0.0.9\r\n  \u251c\u2500\u2500 colors@0.6.2\r\n  \u251c\u2500\u252c commander@1.0.4\r\n  \u2502 \u2514\u2500\u2500 keypress@0.1.0\r\n  \u251c\u2500\u2500 easy-table@0.0.1\r\n  \u251c\u2500\u252c event-stream@3.1.5\r\n  \u2502 \u251c\u2500\u2500 from@0.1.3\r\n  \u2502 \u251c\u2500\u2500 map-stream@0.1.0\r\n  \u2502 \u251c\u2500\u2500 pause-stream@0.0.11\r\n  \u2502 \u251c\u2500\u2500 split@0.2.10\r\n  \u2502 \u2514\u2500\u2500 stream-combiner@0.0.4\r\n  \u251c\u2500\u2500 eyes@0.1.8\r\n  \u251c\u2500\u2500 fast-json-patch@0.5.6\r\n  \u251c\u2500\u2500 github@0.1.6\r\n  \u251c\u2500\u2500 js2xmlparser@1.0.0\r\n  \u251c\u2500\u2500 jsrsasign@4.8.2\r\n  \u251c\u2500\u252c kuduscript@1.0.6\r\n  \u2502 \u251c\u2500\u2500 commander@1.1.1\r\n  \u2502 \u2514\u2500\u2500 streamline@0.4.11\r\n  \u251c\u2500\u2500 moment@2.13.0\r\n  \u251c\u2500\u2500 ms-rest@1.14.2\r\n  \u251c\u2500\u252c ms-rest-azure@1.14.2\r\n  \u2502 \u251c\u2500\u2500 async@0.2.7\r\n  \u2502 \u2514\u2500\u2500 uuid@2.0.1\r\n  \u251c\u2500\u2500 node-forge@0.6.23\r\n  \u251c\u2500\u2500 node-uuid@1.2.0\r\n  \u251c\u2500\u2500 number-is-nan@1.0.0\r\n  \u251c\u2500\u2500 omelette@0.1.0\r\n  \u251c\u2500\u252c openssl-wrapper@0.2.1\r\n  \u2502 \u251c\u2500\u2500 debug@0.7.4\r\n  \u2502 \u2514\u2500\u2500 q@0.9.7\r\n  \u251c\u2500\u252c read@1.0.7\r\n  \u2502 \u2514\u2500\u2500 mute-stream@0.0.6\r\n  \u251c\u2500\u252c readable-stream@1.0.34\r\n  \u2502 \u251c\u2500\u2500 core-util-is@1.0.2\r\n  \u2502 \u251c\u2500\u2500 inherits@2.0.1\r\n  \u2502 \u251c\u2500\u2500 isarray@0.0.1\r\n  \u2502 \u2514\u2500\u2500 string_decoder@0.10.31\r\n  \u251c\u2500\u252c request@2.69.0\r\n  \u2502 \u251c\u2500\u2500 aws-sign2@0.6.0\r\n  \u2502 \u251c\u2500\u2500 aws4@1.4.1\r\n  \u2502 \u251c\u2500\u252c bl@1.0.3\r\n  \u2502 \u2502 \u2514\u2500\u252c readable-stream@2.0.6\r\n  \u2502 \u2502   \u2514\u2500\u2500 isarray@1.0.0\r\n  \u2502 \u251c\u2500\u2500 caseless@0.11.0\r\n  \u2502 \u251c\u2500\u252c combined-stream@1.0.5\r\n  \u2502 \u2502 \u2514\u2500\u2500 delayed-stream@1.0.0\r\n  \u2502 \u251c\u2500\u2500 extend@3.0.0\r\n  \u2502 \u251c\u2500\u2500 forever-agent@0.6.1\r\n  \u2502 \u251c\u2500\u252c form-data@1.0.0-rc4\r\n  \u2502 \u2502 \u2514\u2500\u2500 async@1.5.2\r\n  \u2502 \u251c\u2500\u252c har-validator@2.0.6\r\n  \u2502 \u2502 \u251c\u2500\u252c chalk@1.1.3\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 ansi-styles@2.2.1\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 escape-string-regexp@1.0.5\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c has-ansi@2.0.0\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 ansi-regex@2.0.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 strip-ansi@3.0.1\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 supports-color@2.0.0\r\n  \u2502 \u2502 \u251c\u2500\u252c commander@2.9.0\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 graceful-readlink@1.0.1\r\n  \u2502 \u2502 \u251c\u2500\u252c is-my-json-valid@2.13.1\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 generate-function@2.0.0\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u252c generate-object-property@1.2.0\r\n  \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500 is-property@1.0.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 jsonpointer@2.0.0\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 xtend@4.0.1\r\n  \u2502 \u2502 \u2514\u2500\u252c pinkie-promise@2.0.1\r\n  \u2502 \u2502   \u2514\u2500\u2500 pinkie@2.0.4\r\n  \u2502 \u251c\u2500\u252c hawk@3.1.3\r\n  \u2502 \u2502 \u251c\u2500\u2500 boom@2.10.1\r\n  \u2502 \u2502 \u251c\u2500\u2500 cryptiles@2.0.5\r\n  \u2502 \u2502 \u251c\u2500\u2500 hoek@2.16.3\r\n  \u2502 \u2502 \u2514\u2500\u2500 sntp@1.0.9\r\n  \u2502 \u251c\u2500\u252c http-signature@1.1.1\r\n  \u2502 \u2502 \u251c\u2500\u2500 assert-plus@0.2.0\r\n  \u2502 \u2502 \u251c\u2500\u252c jsprim@1.2.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 extsprintf@1.0.2\r\n  \u2502 \u2502 \u2502 \u251c\u2500\u2500 json-schema@0.2.2\r\n  \u2502 \u2502 \u2502 \u2514\u2500\u2500 verror@1.3.6\r\n  \u2502 \u2502 \u2514\u2500\u252c sshpk@1.8.3\r\n  \u2502 \u2502   \u251c\u2500\u2500 asn1@0.2.3\r\n  \u2502 \u2502   \u251c\u2500\u2500 assert-plus@1.0.0\r\n  \u2502 \u2502   \u251c\u2500\u252c dashdash@1.13.1\r\n  \u2502 \u2502   \u2502 \u2514\u2500\u2500 assert-plus@1.0.0\r\n  \u2502 \u2502   \u251c\u2500\u2500 ecc-jsbn@0.1.1\r\n  \u2502 \u2502   \u251c\u2500\u252c getpass@0.1.6\r\n  \u2502 \u2502   \u2502 \u2514\u2500\u2500 assert-plus@1.0.0\r\n  \u2502 \u2502   \u251c\u2500\u2500 jodid25519@1.0.2\r\n  \u2502 \u2502   \u251c\u2500\u2500 jsbn@0.1.0\r\n  \u2502 \u2502   \u2514\u2500\u2500 tweetnacl@0.13.3\r\n  \u2502 \u251c\u2500\u2500 is-typedarray@1.0.0\r\n  \u2502 \u251c\u2500\u2500 isstream@0.1.2\r\n  \u2502 \u251c\u2500\u2500 json-stringify-safe@5.0.1\r\n  \u2502 \u251c\u2500\u252c mime-types@2.1.11\r\n  \u2502 \u2502 \u2514\u2500\u2500 mime-db@1.23.0\r\n  \u2502 \u251c\u2500\u2500 node-uuid@1.4.7\r\n  \u2502 \u251c\u2500\u2500 oauth-sign@0.8.2\r\n  \u2502 \u251c\u2500\u2500 qs@6.0.2\r\n  \u2502 \u251c\u2500\u2500 stringstream@0.0.5\r\n  \u2502 \u251c\u2500\u2500 tough-cookie@2.2.2\r\n  \u2502 \u2514\u2500\u2500 tunnel-agent@0.4.3\r\n  \u251c\u2500\u252c ssh-key-to-pem@0.11.0\r\n  \u2502 \u251c\u2500\u2500 asn1@0.1.11\r\n  \u2502 \u2514\u2500\u2500 ctype@0.5.2\r\n  \u251c\u2500\u252c streamline@0.10.17\r\n  \u2502 \u251c\u2500\u2500 fibers@1.0.13\r\n  \u2502 \u251c\u2500\u2500 galaxy@0.1.12\r\n  \u2502 \u2514\u2500\u252c source-map@0.1.43\r\n  \u2502   \u2514\u2500\u2500 amdefine@1.0.0\r\n  \u251c\u2500\u2500 streamline-streams@0.1.5\r\n  \u251c\u2500\u252c sync-request@3.0.0\r\n  \u2502 \u251c\u2500\u252c concat-stream@1.4.10\r\n  \u2502 \u2502 \u251c\u2500\u2500 readable-stream@1.1.14\r\n  \u2502 \u2502 \u2514\u2500\u2500 typedarray@0.0.6\r\n  \u2502 \u251c\u2500\u2500 http-response-object@1.1.0\r\n  \u2502 \u2514\u2500\u252c then-request@2.2.0\r\n  \u2502   \u251c\u2500\u2500 http-basic@2.5.1\r\n  \u2502   \u251c\u2500\u252c promise@7.1.1\r\n  \u2502   \u2502 \u2514\u2500\u2500 asap@2.0.4\r\n  \u2502   \u2514\u2500\u2500 qs@6.2.0\r\n  \u251c\u2500\u2500 through@2.3.4\r\n  \u251c\u2500\u2500 tunnel@0.0.2\r\n  \u251c\u2500\u2500 underscore@1.4.4\r\n  \u251c\u2500\u2500 validator@3.1.0\r\n  \u251c\u2500\u252c winston@0.6.2\r\n  \u2502 \u251c\u2500\u2500 async@0.1.22\r\n  \u2502 \u251c\u2500\u2500 cycle@1.0.3\r\n  \u2502 \u251c\u2500\u2500 pkginfo@0.2.3\r\n  \u2502 \u2514\u2500\u2500 request@2.9.203\r\n  \u251c\u2500\u2500 wordwrap@0.0.2\r\n  \u251c\u2500\u252c xml2js@0.1.14\r\n  \u2502 \u2514\u2500\u2500 sax@0.5.2\r\n  \u2514\u2500\u2500 xmlbuilder@0.4.3<\/pre>\n<\/li>\n<li>Sign up for free trial at <a href=\"https:\/\/azure.microsoft.com\/en-us\/free\/\">https:\/\/azure.microsoft.com\/en-us\/free\/<\/a>.<\/li>\n<li>Login to Azure using the\u00a0command <code>azure login<\/code>:\n<pre class=\"lang:default decode:true\">azure login\r\ninfo:    Executing command login\r\ninfo:    To sign in, use a web browser to open the page https:\/\/aka.ms\/devicelogin. Enter the code BS5P64ANU to authenticate.\r\n|info:    Added subscription Free Trial\r\ninfo:    Setting subscription \"Free Trial\" as default\r\n+\r\ninfo:    login command OK<\/pre>\n<\/li>\n<li>Get account information using <code>azure account show<\/code> command:\n<pre class=\"lang:default decode:true\">azure account show\r\ninfo:    Executing command account show\r\ndata:    Name                        : Free Trial\r\ndata:    ID                          : XXX\r\ndata:    State                       : Enabled\r\ndata:    Tenant ID                   : YYY\r\ndata:    Is Default                  : true\r\ndata:    Environment                 : AzureCloud\r\ndata:    Has Certificate             : No\r\ndata:    Has Access Token            : Yes\r\ndata:    User name                   : arun.gupta@gmail.com\r\ndata:\r\ninfo:    account show command OK<\/pre>\n<p>Note the value shown instead of XXX and YYY. These will be used\u00a0to configure the Kubernetes cluster.<\/li>\n<\/ol>\n<h2>Start Kubernetes Cluster<\/h2>\n<ol>\n<li>Download <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/releases\/download\/v1.2.4\/kubernetes.tar.gz\">Kubernetes 1.2.4<\/a>\u00a0and\u00a0extract\u00a0it.<\/li>\n<li>Kubernetes cluster on Azure can be started as:\n<pre class=\"lang:default decode:true\">export KUBERNETES_PROVIDER=azure\r\nexport AZURE_SUBSCRIPTION_ID=XXX\r\nexport AZURE_TENANT_ID=YYY\r\n.\/cluster\/kube-up.sh<\/pre>\n<p>Make sure to specify the appropriate values for <code>XXX<\/code> and <code>YYY<\/code> from the previous command.<code>\u00a0AZURE_SUBSCRIPTION_ID<\/code> and <code>AZURE_TENANT_ID<\/code> are specific to Azure. These values<br \/>\ncan also be edited in <code>cluster\/azure\/config-default.sh<\/code>.<\/li>\n<li>Start Kubernetes cluster:\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kube-up.sh \r\n... Starting cluster using provider: azure\r\n... calling verify-prereqs\r\n... calling kube-up\r\n++&gt; AZURE KUBE-UP STARTED: Tue May 31 16:15:26 PDT 2016\r\nThis will be interactive. (export AZURE_AUTH_METHOD=client_secret to avoid the prompt)\r\nhyperkube-amd64:v1.2.4 was found in the gcr.io\/google_containers repository\r\nFlag --tenant-id has been deprecated, tenant-id is deprecated. it is now determined automatically from the subscription id\r\nWARN[0000] --resource-group is unset. Derived one from --deployment-name: \"kube-20160531-161525\" \r\nWARN[0000] --master-fqdn is unset. Derived one from input: \"kube-20160531-161525.westus.cloudapp.azure.com\". \r\nTo sign in, use a web browser to open the page https:\/\/aka.ms\/devicelogin. Enter the code BPRLH2ARJ to authenticate.\r\nINFO[0034] Starting ARM Deployment. This will take some time. deployment=\"kube-20160531-161525-1464736561\" \r\nINFO[0279] Finished ARM Deployment. deployment=\"kube-20160531-161525-1464736561\" \r\nINFO[0279] Validating Kubernetes cluster.               \r\nWARN[0279] Failed to validate components: Get https:\/\/kube-20160531-161525.westus.cloudapp.azure.com:6443\/api\/v1\/componentstatuses: dial tcp 23.99.60.138:6443: getsockopt: connection refused \r\nINFO[0294] Validating Kubernetes cluster.               \r\nWARN[0294] Failed to validate components: Get https:\/\/kube-20160531-161525.westus.cloudapp.azure.com:6443\/api\/v1\/componentstatuses: dial tcp 23.99.60.138:6443: getsockopt: connection refused \r\nINFO[0309] Validating Kubernetes cluster.               \r\nWARN[0309] Failed to validate components: Get https:\/\/kube-20160531-161525.westus.cloudapp.azure.com:6443\/api\/v1\/componentstatuses: dial tcp 23.99.60.138:6443: getsockopt: connection refused \r\nINFO[0324] Validating Kubernetes cluster.               \r\nWARN[0347] validate: incorrect healthy count. expected=3 actual=4 \r\nINFO[0347] Deployment Complete!                         \r\nINFO[0347] master: \"https:\/\/kube-20160531-161525.westus.cloudapp.azure.com:6443\" \r\nINFO[0347] output: \"\/opt\/azkube\/_deployments\/kube-20160531-161525\" \r\ncluster \"kube-20160531-161525\" set.\r\nuser \"kube-20160531-161525_user\" set.\r\ncontext \"kube-20160531-161525\" set.\r\nswitched to context \"kube-20160531-161525\".\r\n++&gt; AZURE KUBE-UP FINISHED: Tue May 31 16:21:15 PDT 2016 (duration: -349 seconds)\r\n... calling validate-cluster\r\nDetected 4 ready nodes, found 4 nodes out of expected 3. Found more nodes than expected, your cluster may not behave correctly.\r\nFound 4 node(s).\r\nNAME                             STATUS                     AGE\r\nkube-20160531-161525-vm-master   Ready,SchedulingDisabled   21s\r\nkube-20160531-161525-vm-node-0   Ready                      18s\r\nkube-20160531-161525-vm-node-1   Ready                      19s\r\nkube-20160531-161525-vm-node-2   Ready                      19s\r\nFlag --api-version has been deprecated, flag is no longer respected and will be deleted in the next release\r\nValidate output:\r\nNAME                 STATUS    MESSAGE              ERROR\r\nscheduler            Healthy   ok                   \r\ncontroller-manager   Healthy   ok                   \r\netcd-1               Healthy   {\"health\": \"true\"}   \r\netcd-0               Healthy   {\"health\": \"true\"}   \r\nCluster validation succeeded\r\nDone, listing cluster services:\r\n\r\nKubernetes master is running at https:\/\/kube-20160531-161525.westus.cloudapp.azure.com:6443<\/pre>\n<p>It starts four\u00a0nodes of <a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/details\/virtual-machines\/\"><code>Standard_A1<\/code> size<\/a>. Each<br \/>\nnode\u00a0gives you 1 core, 1.75 GB RAM, and 40GB HDD.<\/li>\n<\/ol>\n<h2>Run Docker Container in Kubernetes Cluster on\u00a0Azure<\/h2>\n<p>Now that the cluster is up and running,\u00a0get a list of all the nodes:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get no\r\nNAME                             STATUS                     AGE\r\nkube-20160531-161525-vm-master   Ready,SchedulingDisabled   3m\r\nkube-20160531-161525-vm-node-0   Ready                      3m\r\nkube-20160531-161525-vm-node-1   Ready                      3m\r\nkube-20160531-161525-vm-node-2   Ready                      3m<\/pre>\n<p>Four\u00a0instances are created as shown &#8211; one for master node and three\u00a0for worker nodes. <a href=\"https:\/\/portal.azure.com\">Azure Portal<\/a>\u00a0shows\u00a0all the created artifacts in the Resource Group:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2788\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578.png\" alt=\" azure-portal-kubernetes-resource-group-1024x578\" width=\"1024\" height=\"578\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-300x169.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-768x434.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-20x11.png 20w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>More details about the created nodes is\u00a0available:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2790\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-1.png\" alt=\" azure-portal-kubernetes-resource-group-1024x578\" width=\"1024\" height=\"578\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-1.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-1-300x169.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-1-768x434.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578-1-20x11.png 20w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Create a Couchbase pod:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh run couchbase --image=arungupta\/couchbase\r\ndeployment \"couchbase\" created<\/pre>\n<p>Notice, how the image name can be specified on the CLI. Kubernetes pre-1.2 versions created a Replication Controller with this command. This is explained in \u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\">Kubernetes on\u00a0Amazon Web Services<\/a> or <a href=\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-google-cloud-expose-service\/\">Kubernetes on\u00a0Google Cloud.<\/a>\u00a0<a href=\"https:\/\/kubernetes.io\/blog\/2016\/04\/using-deployment-objects-with\/\">Kubernetes 1.2 introduced Deployments<\/a>\u00a0and<br \/>\nso this creates a Deployment instead. This enables\u00a0simplified application deployment and management including versioning, multiple simultaneous rollouts, aggregating status across all pods, maintaining application availability and rollback.<\/p>\n<p>The pod uses <a href=\"https:\/\/github.com\/arun-gupta\/docker-images\/tree\/master\/couchbase\">arungupta\/couchbase<\/a> Docker image that provides a pre-configured Couchbase server. Any Docker image can be specified here. Status of the pod can be watched:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get -w po\r\nNAME                         READY     STATUS              RESTARTS   AGE\r\ncouchbase-2830197765-f0s9c   0\/1       ContainerCreating   0          5s\r\nNAME                         READY     STATUS    RESTARTS   AGE\r\ncouchbase-2830197765-f0s9c   1\/1       Running   0          1m<\/pre>\n<p>Get more details\u00a0about\u00a0the pod:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh describe po couchbase-2830197765-f0s9c\r\nName:  couchbase-2830197765-f0s9c\r\nNamespace: default\r\nNode:  kube-20160531-161525-vm-node-2\/10.0.0.6\r\nStart Time: Tue, 31 May 2016 16:28:02 -0700\r\nLabels:  pod-template-hash=2830197765,run=couchbase\r\nStatus:  Running\r\nIP:  10.2.74.2\r\nControllers: ReplicaSet\/couchbase-2830197765\r\nContainers:\r\n  couchbase:\r\n    Container ID: docker:\/\/eba043085c95645cf650206469be5c7e2d6c7395883a053d197446a14e757440\r\n    Image:  arungupta\/couchbase\r\n    Image ID:  docker:\/\/sha256:f6b013d9694354148ace6804127dadee01c733151b5ff5e169f7c3b0e4faf321\r\n    Port:  \r\n    QoS Tier:\r\n      cpu:  BestEffort\r\n      memory:  BestEffort\r\n    State:  Running\r\n      Started:  Tue, 31 May 2016 16:29:04 -0700\r\n    Ready:  True\r\n    Restart Count: 0\r\n    Environment Variables:\r\nConditions:\r\n  Type  Status\r\n  Ready  True \r\nVolumes:\r\n  default-token-ylszs:\r\n    Type: Secret (a volume populated by a Secret)\r\n    SecretName: default-token-ylszs\r\nEvents:\r\n  FirstSeen LastSeen Count From      SubobjectPath   Type  Reason  Message\r\n  --------- -------- ----- ----      -------------   -------- ------  -------\r\n  7m  7m  1 {default-scheduler }        Normal  Scheduled Successfully assigned couchbase-2830197765-f0s9c to kube-20160531-161525-vm-node-2\r\n  7m  7m  1 {kubelet kube-20160531-161525-vm-node-2} spec.containers{couchbase} Normal  Pulling  pulling image \"arungupta\/couchbase\"\r\n  6m  6m  1 {kubelet kube-20160531-161525-vm-node-2} spec.containers{couchbase} Normal  Pulled  Successfully pulled image \"arungupta\/couchbase\"\r\n  6m  6m  1 {kubelet kube-20160531-161525-vm-node-2} spec.containers{couchbase} Normal  Created  Created container with docker id eba043085c95\r\n  6m  6m  1 {kubelet kube-20160531-161525-vm-node-2} spec.containers{couchbase} Normal  Started  Started container with docker id eba043085c95<\/pre>\n<h2>Expose Pod on Kubernetes as Service<\/h2>\n<p>Now that our pod is running, how do I access the Couchbase server? You need to expose the Deployment as a Service\u00a0outside the Kubernetes cluster. Typically, this will be exposed using the command:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh expose deployment couchbase --target-port=8091 --port=8091 --type=LoadBalancer<\/pre>\n<p>But Azure does not support <code>--type=LoadBalancer<\/code> at this time. This feature is being worked upon and will hopefully be available\u00a0in the near future. So in the meanwhile, we&#8217;ll expose the Service as:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh expose deployment couchbase --target-port=8091 --port=8091\r\nservice \"couchbase\" exposed<\/pre>\n<p>Now proxy to this Service using <code>kubectl proxy<\/code> command:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh proxy --address='0.0.0.0' --port=9999 --accept-hosts='.*'\r\nStarting to serve on [::]:9999<\/pre>\n<p>And now this exposed Service is accessible at\u00a0https:\/\/127.0.0.1:9999\/api\/v1\/proxy\/namespaces\/default\/services\/couchbase\/index.html. This shows the login<br \/>\nscreen of <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/admin\/ui-intro.html\">Couchbase Web Console<\/a>:<br \/>\n<a href=\"\/wp-content\/original-assets\/june-2016\/kubernetes-cluster-on-azure-and-expose-couchbase-service\/azure-kubernetes-couchbase-web-console.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14033\" src=\"\/wp-content\/original-assets\/june-2016\/kubernetes-cluster-on-azure-and-expose-couchbase-service\/azure-kubernetes-couchbase-web-console.png\" alt=\"azure-kubernetes-couchbase-web-console\" width=\"873\" height=\"464\" \/><\/a><\/p>\n<h2>Shutdown Kubernetes Cluster<\/h2>\n<p>Finally, shutdown the cluster using <code>cluster\/kube-down.sh<\/code> script.<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kube-down.sh \r\nBringing down cluster using provider: azure\r\nBringing down cluster\r\n\r\nYou must do this manually (for now)!\r\nThis can be done with:\r\n.\/kubernetes\/cluster\/..\/cluster\/..\/cluster\/azure\/util.sh: line 246: AZ_RESOURCE_GROUP: unbound variable<\/pre>\n<p>This script shuts down the cluster but the Azure\u00a0resource group need to be explicitly removed. This can be done by selecting the Resource Group from <a href=\"https:\/\/portal.azure.com\">portal.azure.com<\/a>:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2791\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/azure-portal-kubernetes-delete-resource-group-1024x736.png\" alt=\" azure-portal-kubernetes-delete-resource-group\" width=\"1024\" height=\"736\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-delete-resource-group-1024x736.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-delete-resource-group-1024x736-300x216.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-delete-resource-group-1024x736-768x552.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/azure-portal-kubernetes-delete-resource-group-1024x736-20x14.png 20w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>This is filed as\u00a0<a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/26601\">#26601<\/a>.<\/p>\n<p>Further references\u00a0&#8230;<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase Server Developer Portal<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/containers\/\">Couchbase on Containers<\/a><\/li>\n<li>Questions on <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">StackOverflow,<\/a>\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">Forums<\/a> or <a href=\"https:\/\/couchbase-community.slack.com\/\">Slack Channel<\/a><\/li>\n<li>Follow us\u00a0<a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/introduction\/intro.html\">Couchbase 4.5<\/a><\/li>\n<\/ul>\n<p>Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. Part 1 explained how to start Kubernetes cluster using Vagrant [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[8933],"class_list":["post-2284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"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>Kubernetes Cluster on Azure and Expose Couchbase Service - The Couchbase Blog<\/title>\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\/pt\/kubernetes-cluster-azure-couchbase-service\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Cluster on Azure and Expose Couchbase Service\" \/>\n<meta property=\"og:description\" content=\"This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. Part 1 explained how to start Kubernetes cluster using Vagrant [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/kubernetes-cluster-azure-couchbase-service\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-04T18:00:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T13:35:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578.png\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Kubernetes Cluster on Azure and Expose Couchbase Service\",\"datePublished\":\"2017-01-04T18:00:07+00:00\",\"dateModified\":\"2023-06-21T13:35:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/\"},\"wordCount\":589,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/\",\"name\":\"Kubernetes Cluster on Azure and Expose Couchbase Service - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-04T18:00:07+00:00\",\"dateModified\":\"2023-06-21T13:35:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kubernetes-cluster-azure-couchbase-service\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Cluster on Azure and Expose Couchbase Service\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\\\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/arungupta\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/author\\\/arun-gupta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes Cluster on Azure and Expose Couchbase Service - The Couchbase Blog","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\/pt\/kubernetes-cluster-azure-couchbase-service\/","og_locale":"pt_BR","og_type":"article","og_title":"Kubernetes Cluster on Azure and Expose Couchbase Service","og_description":"This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. Part 1 explained how to start Kubernetes cluster using Vagrant [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/kubernetes-cluster-azure-couchbase-service\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-04T18:00:07+00:00","article_modified_time":"2023-06-21T13:35:30+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/azure-portal-kubernetes-resource-group-1024x578.png","type":"","width":"","height":""}],"author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Kubernetes Cluster on Azure and Expose Couchbase Service","datePublished":"2017-01-04T18:00:07+00:00","dateModified":"2023-06-21T13:35:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/"},"wordCount":589,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/","url":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/","name":"Kubernetes Cluster on Azure and Expose Couchbase Service - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-04T18:00:07+00:00","dateModified":"2023-06-21T13:35:30+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-azure-couchbase-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Cluster on Azure and Expose Couchbase Service"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta \u00e9 o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experi\u00eancia na lideran\u00e7a de equipes multifuncionais para desenvolver e executar estrat\u00e9gias, planejamento e execu\u00e7\u00e3o de conte\u00fado, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e \u00e9 membro fundador da equipe Java EE. Gupta \u00e9 autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experi\u00eancia em palestras em mais de 40 pa\u00edses sobre uma infinidade de t\u00f3picos e \u00e9 um JavaOne Rock Star h\u00e1 tr\u00eas anos consecutivos. Gupta tamb\u00e9m fundou o cap\u00edtulo Devoxx4Kids nos EUA e continua a promover a educa\u00e7\u00e3o tecnol\u00f3gica entre as crian\u00e7as. Autor de v\u00e1rios livros sobre tecnologia, corredor \u00e1vido, viajante do mundo inteiro, campe\u00e3o de Java, l\u00edder de JUG, membro do NetBeans Dream Team e capit\u00e3o do Docker, ele pode ser facilmente acessado em @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/arun-gupta\/"}]}},"acf":[],"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2284"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2284\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2284"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}