{"id":7213,"date":"2019-07-12T13:28:15","date_gmt":"2019-07-12T20:28:15","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=7213"},"modified":"2025-06-13T21:33:40","modified_gmt":"2025-06-14T04:33:40","slug":"running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/","title":{"rendered":"Running Couchbase Autonomous Operator on VMware"},"content":{"rendered":"<p><strong>Cormac Hogan is a Director and Chief Technologist in the Office of the CTO in the Storage and Availability Business Unit (SABU) at VMware.\u00a0<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7214\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/cormac-pic.jpg\" alt=\"\" width=\"403\" height=\"302\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cormac-pic.jpg 960w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cormac-pic-300x225.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cormac-pic-768x575.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cormac-pic-20x15.jpg 20w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/p>\n<p><strong>Bio<\/strong>: I joined VMware back in April 2005, and have previously held roles in VMware\u2019s Engineering, Technical Marketing and Technical Support organizations. I have written a number of storage related white papers and have given numerous presentations on storage best practices and vSphere storage features. I am also the co-author of the \u201cEssential Virtual SAN\u201d and \u201cvSAN 6.7 Deep Dive\u201d books.<\/p>\n<h2>A first look at the Couchbase Autonomous Operator<\/h2>\n<p>A few weeks back,<a href=\"https:\/\/cormachogan.com\/2019\/03\/08\/a-first-look-at-heptio-velero-previously-known-as-ark\/\" target=\"_blank\" rel=\"noopener noreferrer\"> I took a look at Heptio Velero, formely known as Ark<\/a>. Velero provides backup and restore capabilities for cloud native applications. During that research, I used a Couchbase database as my application of choice for backup\/restore. After speaking to Couchbase team regarding that blog post, they strongly recommended I try the new Couchbase Autonomous Operator rather than the StatefulSet method that I was using for the application. Couchbase talk about <a href=\"https:\/\/docs.couchbase.com\/operator\/1.1\/overview.html#advantages-over-statefulsets\" target=\"_blank\" rel=\"noopener noreferrer\">the advantages of the operator approach over StatefulSets here<\/a>.<\/p>\n<p>Now, while Couchbase provide steps on how to deploy Couchbase with their operator, they create it in the default K8s namespace. In my test, I want to put Couchbase in its own namespace. The steps provided here are provided to get you started with the new Couchbase Operator, running on vSphere and vSAN infrastructure, in its own Kubernetes namespace. I also talk about some issues with the bundled load generating tool, called pillowfight.<\/p>\n<p>Couchbase provide prescriptive instructions on <a href=\"https:\/\/docs.couchbase.com\/operator\/1.1\/install-kubernetes.html\" target=\"_blank\" rel=\"noopener noreferrer\">how to get started with their operator here<\/a>. It includes all the necessary configuration files. A few things about the operator:<\/p>\n<ul>\n<li>When loaded, it downloads the Operator Docker image as specified in the <strong>operator.yaml<\/strong> file. It uses a deployment construct so that it can restart if the pod it is running in dies.<\/li>\n<li>It creates the CouchbaseCluster custom resource definition (CRD)<\/li>\n<li>It starts listening for CouchbaseCluster events.<\/li>\n<\/ul>\n<p>I made a few modifications to allow Couchbase to run in its own namespace:<\/p>\n<ul>\n<li>I first of all created a new namespace (obviously) called couchbase.<\/li>\n<li>When the cluster role was created, I created the service account in the new couchbase namespace and I then assigned the cluster role to that service account using a cluster role binding.<\/li>\n<li>I modified the <strong>operator.yaml<\/strong> file to include a <strong>metadata.namespace=couchbase<\/strong> setting so that it applies to the couchbase namespace<\/li>\n<\/ul>\n<p>By monitoring the logs of the couchbase operator pod, we can observe the following startup messages:<\/p>\n<pre class=\"lang:default decode:true \">$ kubectl logs couchbase-operator-6fcfbd8599-zqsh2 -n couchbase\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"couchbase-operator v1.1.0 (release)\" module=main\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"Obtaining resource lock\" module=main\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"Starting event recorder\" module=main\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"Attempting to be elected the couchbase-operator leader\" module=main\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"Event(v1.ObjectReference{Kind:\\\"Endpoints\\\", Namespace:\\\"couchbase\\\", Name:\\\"couchbase-operator\\\", UID:\\\"68fece18-4af2-11e9-be9b-005056a24d92\\\", APIVersion:\\\"v1\\\", ResourceVersion:\\\"1596774\\\", FieldPath:\\\"\\\"}): type: 'Normal' reason: 'LeaderElection' couchbase-operator-6fcfbd8599-zqsh2 became leader\" module=event_recorder\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"I'm the leader, attempt to start the operator\" module=main\r\ntime=\"2019-03-20T09:27:41Z\" level=info msg=\"Creating the couchbase-operator controller\" module=main\r\ntime=\"2019-03-20T09:27:46Z\" level=info msg=\"CRD initialized, listening for events...\" module=controller\r\ntime=\"2019-03-20T09:27:46Z\" level=info msg=\"starting couchbaseclusters controller\"<\/pre>\n<div>I was now ready to deploy the Couchbase cluster using the new <strong>cbopctl<\/strong> CLI tool. I also needed to make a few changes to the default cluster configuration file (<strong>couchbase-cluster-sc.yaml<\/strong>).<\/div>\n<div><\/div>\n<ul>\n<li>I placed it in the couchbase namespace with the\u00a0 <strong>metadata.namespace<\/strong> entry<\/li>\n<li>I set <strong>spec.disableBucketManagement<\/strong> to true which allows me to make changes to buckets via UI\/CLI (otherwise I have to make all changes via edits to the YAML file)<\/li>\n<li>I added Persistent Volumes for the default and data mounts (I had to create a new StorageClass for the volumeClaimTemplate to use for this \u2013 see below)<\/li>\n<\/ul>\n<div>\u00a0Here is the full CouchbaseCluster YAML file with my changes highlighted.<\/div>\n<pre class=\"lang:default decode:true\">apiVersion: couchbase.com\/v1\r\nkind: CouchbaseCluster\r\nmetadata:\r\n  name: cb-example\r\n  namespace: couchbase\r\nspec:\r\n  securityContext:\r\n    fsGroup: 1000\r\n  baseImage: couchbase\/server\r\n  version: enterprise-5.5.2\r\n  authSecret: cb-example-auth\r\n  exposeAdminConsole: true\r\n  disableBucketManagement: true\r\n  adminConsoleServices:\r\n    - data\r\n  cluster:\r\n    dataServiceMemoryQuota: 256\r\n    indexServiceMemoryQuota: 256\r\n    searchServiceMemoryQuota: 256\r\n    eventingServiceMemoryQuota: 256\r\n    analyticsServiceMemoryQuota: 1024\r\n    indexStorageSetting: memory_optimized\r\n    autoFailoverTimeout: 120\r\n    autoFailoverMaxCount: 3\r\n    autoFailoverOnDataDiskIssues: true\r\n    autoFailoverOnDataDiskIssuesTimePeriod: 120\r\n    autoFailoverServerGroup: false\r\n  buckets:\r\n    - name: default\r\n      type: couchbase\r\n      memoryQuota: 128\r\n      replicas: 1\r\n      ioPriority: high\r\n      evictionPolicy: fullEviction\r\n      conflictResolution: seqno\r\n      enableFlush: true\r\n      enableIndexReplica: false\r\n  servers:\r\n    - size: 3\r\n      name: all_services\r\n      services:\r\n        - index\r\n        - query\r\n        - search\r\n        - eventing\r\n        - analytics\r\n        - <strong>data\r\n      pod:\r\n        volumeMounts:\r\n          default: couchbase\r\n          data:  couchbase\r\n  volumeClaimTemplates:\r\n    - metadata:\r\n        name: couchbase\r\n      spec:\r\n        storageClassName: \"couchbasesc\"\r\n        resources:\r\n          requests:\r\n            storage: 1Gi\r\n<\/strong><\/pre>\n<p>I am skipping over the authentication and user requirements which are all documented on the Couchbase site. However, once the application has been deployed, you should be able to see the following in the couchbase operator pod logs:<\/p>\n<pre class=\"lang:default decode:true \">$ kubectl logs couchbase-operator-6fcfbd8599-zqsh2 -n couchbase\r\n.\r\n.\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Watching new cluster\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Janitor process starting\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Setting up client for operator communication with the cluster\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Cluster does not exist so the operator is attempting to create it\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Creating headless service for data nodes\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Creating NodePort UI service (cb-example-ui) for data nodes\" cluster-name=cb-example module=cluster\r\ntime=\"2019-03-20T09:48:34Z\" level=info msg=\"Creating a pod (cb-example-0000) running Couchbase enterprise-5.5.2\" cluster-name=cb-example module=cluster\r\n\r\n<\/pre>\n<p>And if everything comes up successfully, you can query the pods, persistent volumes and services as they initialize.<\/p>\n<pre class=\"lang:default decode:true \">$ kubectl get po -n couchbase\r\nNAME                                  READY   STATUS    RESTARTS   AGE\r\ncb-example-0000                       1\/1     Running   0          7m8s\r\ncb-example-0001                       1\/1     Running   0          6m7s\r\ncb-example-0002                       1\/1     Running   0          5m14s\r\ncouchbase-operator-6fcfbd8599-zqsh2   1\/1     Running   0          28m\r\n\r\n$ kubectl get pv -n couchbase\r\nNAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                STORAGECLASS   REASON   AGE\r\npvc-100e3c17-40e3-11e9-be9b-005056a24d92   10Gi       RWO            Delete           Bound    velero\/minio-pv-claim-1                              minio-sc                12d\r\npvc-53c6962f-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0000-00-default   couchbasesc             7m51s\r\npvc-5b30f298-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0000-01-data      couchbasesc             7m44s\r\npvc-795bcf7b-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0001-00-default   couchbasesc             6m51s\r\npvc-7edc6a4d-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0001-01-data      couchbasesc             6m43s\r\npvc-97e9f6a9-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0002-00-data      couchbasesc             6m2s\r\npvc-9bcc3d4d-4af5-11e9-be9b-005056a24d92   1Gi        RWO            Delete           Bound    couchbase\/pvc-couchbase-cb-example-0002-01-default   couchbasesc             5m50s\r\n\r\n$ kubectl get svc -n couchbase\r\nNAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                          AGE\r\ncb-example       ClusterIP   None                           8091\/TCP,18091\/TCP               8m55s<\/pre>\n<div><\/div>\n<div>So, to recap, the steps are:<\/div>\n<div><\/div>\n<ol>\n<li>Follow the documented steps to set up the couchbase ClusterRole<\/li>\n<li>Create the couchbase namespace \u2013 <strong>kubectl create ns couchbase<\/strong><\/li>\n<li>Create the couchbase operator service account in the couchbase namespace \u2013 <strong>kubectl create serviceaccount couchbase-operator \u2013namespace couchbase<\/strong><\/li>\n<li>Create the operator (modified for the couchbase namespace) \u2013 kubectl create -f <strong>operator.yaml<\/strong><\/li>\n<li>Create the necessary secrets (modified for the couchbase namespac) \u2013 <strong>kubectl create -f secret.yaml<\/strong><\/li>\n<li>Create the couchbase cluster using cbopctl \u2013 <strong>cbopctl create -f couchbase-cluster-sc.yaml<\/strong><\/li>\n<\/ol>\n<div>In the last output, the services, we have the port mappings for the Couchbase UI, both for http and https. If we connect to any of the K8s slave nodes with those ports, we should be able to access our Couchbase deployment, using the Administrator\/password credential provided in our configuration.<\/div>\n<div><\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7215\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/cb-ui-new-1024x376.png\" alt=\"\" width=\"990\" height=\"363\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cb-ui-new-1024x376.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cb-ui-new-300x110.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cb-ui-new-768x282.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cb-ui-new-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/cb-ui-new.png 1201w\" sizes=\"auto, (max-width: 990px) 100vw, 990px\" \/><\/div>\n<div><\/div>\n<div>Initially there are no buckets created. There is one defined in the cluster configuration but we overrode it with the advanced setting. We can quickly remedy that by creating a few temp ones. I will add two \u2013 the first is called <strong>default<\/strong> and the second is called <strong>cormac<\/strong>. At the moment there are no items in either bucket.<\/div>\n<div><\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7216\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/empty-buckets-1024x189.png\" alt=\"\" width=\"1003\" height=\"185\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/empty-buckets-1024x189.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/empty-buckets-300x55.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/empty-buckets-768x141.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/empty-buckets-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/empty-buckets.png 1200w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/div>\n<div><\/div>\n<div>Couchbase also bundle a utility called <strong>pillowfight<\/strong> which is a very useful way of populating the buckets. For some reason, I had some issues with the bundled \u201csequioatools\u201d version of pillowfight. Once I reverted to using the \u201ccouchbaseutils\u201d version, all was good. You will need to set up the appropriated user credentials to do this, but once again this is all documented on the main Couchbase operator site. Here are my sample YAML files for populating the <strong>default<\/strong> bucket:<\/div>\n<div><\/div>\n<div><\/div>\n<div>\n<pre class=\"lang:default decode:true \">apiVersion: batch\/v1\r\nkind: Job\r\nmetadata:\r\n  name: pillowfight\r\n  namespace: couchbase\r\nspec:\r\n  template:\r\n    metadata:\r\n      name: pillowfight\r\n    spec:\r\n      containers:\r\n      - name: pillowfight\r\n        image: couchbaseutils\/pillowfight:v2.9.3\r\n        command: [\"cbc-pillowfight\",\r\n                  \"-U\", \"couchbase:\/\/cb-example-0000.cb-example.couchbase.svc.cluster.local\/default?select_bucket=true\",\r\n                  \"-I\", \"10000\", \"-B\", \"1000\", \"-c\", \"10\", \"-t\", \"1\", \"-P\", \"password\"]\r\n      restartPolicy: Never<\/pre>\n<p>The only difference for the <strong>cormac<\/strong> bucket is the command syntax is slightly different:<\/p>\n<pre class=\"lang:default decode:true \">$ kubectl get po -n couchbase\r\nNAME                                  READY   STATUS      RESTARTS   AGE\r\ncb-example-0000                       1\/1     Running     0          20m\r\ncb-example-0001                       1\/1     Running     0          19m\r\ncb-example-0002                       1\/1     Running     0          18m\r\ncouchbase-operator-6fcfbd8599-ggv98   1\/1     Running     0          24m\r\ncreate-user-dk6xg                     0\/1     Completed   0          89s\r\npillowfight-fqvgp                     0\/1     Completed   0          70s\r\npillowfightcormac-dmqnf               0\/1     Completed   0          7s\r\n<\/pre>\n<p>More importantly, if we take a look at the Couchbase UI, we see that we now have 1,000 items in each bucket:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7217\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/1000-item-bucket-1024x232.png\" alt=\"\" width=\"1006\" height=\"228\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/1000-item-bucket-1024x232.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/1000-item-bucket-300x68.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/1000-item-bucket-768x174.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/1000-item-bucket-20x5.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/1000-item-bucket.png 1207w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/p>\n<p>And that\u2019s it. You are up and running with your Couchbase operator. And to close, this was provisioned in a K8s cluster on top of VMware PKS, vSphere and vSAN infrastructure. <a href=\"https:\/\/www.couchbase.com\/forums\/t\/error-failed-to-start-container-pillowfight\/20540\/\" target=\"_blank\" rel=\"noopener noreferrer\">BTW, the issue with pillowfight was reported here (issue is resolved).\u00a0<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cormac Hogan is a Director and Chief Technologist in the Office of the CTO in the Storage and Availability Business Unit (SABU) at VMware.\u00a0 Bio: I joined VMware back in April 2005, and have previously held roles in VMware\u2019s Engineering, [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":10743,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1821,9284,2225,1816,2322],"tags":[1933,1545,2353],"ppma_author":[8952],"class_list":["post-7213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-autonomous-operator","category-cloud","category-couchbase-server","category-kubernetes","tag-backup","tag-kubernetes","tag-pks"],"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>Running Couchbase Autonomous Operator on VMware<\/title>\n<meta name=\"description\" content=\"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.\" \/>\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\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running Couchbase Autonomous Operator on VMware\" \/>\n<meta property=\"og:description\" content=\"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-12T20:28:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:33:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1700\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@anilkumar1129\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/\"},\"author\":{\"name\":\"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/ed8c1d98490712a9c8fd5a9e066c61db\"},\"headline\":\"Running Couchbase Autonomous Operator on VMware\",\"datePublished\":\"2019-07-12T20:28:15+00:00\",\"dateModified\":\"2025-06-14T04:33:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/\"},\"wordCount\":936,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/07\\\/116-hero-liquid-water-drop_RESIZED.jpg\",\"keywords\":[\"backup\",\"kubernetes\",\"PKS\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Autonomous Operator\",\"Couchbase Capella\",\"Couchbase Server\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/\",\"name\":\"Running Couchbase Autonomous Operator on VMware\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/07\\\/116-hero-liquid-water-drop_RESIZED.jpg\",\"datePublished\":\"2019-07-12T20:28:15+00:00\",\"dateModified\":\"2025-06-14T04:33:40+00:00\",\"description\":\"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/07\\\/116-hero-liquid-water-drop_RESIZED.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/07\\\/116-hero-liquid-water-drop_RESIZED.jpg\",\"width\":1700,\"height\":640,\"caption\":\"Droplets of water falling into a puddle\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running Couchbase Autonomous Operator on VMware\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\\\/ed8c1d98490712a9c8fd5a9e066c61db\",\"name\":\"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g86e4570d5755b073087333983950b3a0\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g\",\"caption\":\"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database\"},\"description\":\"Anil Kumar is the Director of Product Management at Couchbase. Anil\u2019s career spans more than 19+ years of building software products across various domains, including enterprise software and cloud services. He is a hands-on product leader responsible for Couchbase Server, Couchbase Cloud, and Kubernetes product lines, including evangelizing the product strategy and vision with customers, partners, developers, and analysts. Before joining Couchbase, Anil spent several years working at Microsoft Redmond. Anil holds a master\u2019s degree in computer science from the University of Toronto (Canada) and a bachelor\u2019s in information technology from Visvesvaraya Technological University (India).\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/@anilkumar1129\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/author\\\/anil-kumar\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Running Couchbase Autonomous Operator on VMware","description":"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.","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\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/","og_locale":"en_US","og_type":"article","og_title":"Running Couchbase Autonomous Operator on VMware","og_description":"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.","og_url":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-07-12T20:28:15+00:00","article_modified_time":"2025-06-14T04:33:40+00:00","og_image":[{"width":1700,"height":640,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg","type":"image\/jpeg"}],"author":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database","twitter_card":"summary_large_image","twitter_creator":"@anilkumar1129","twitter_misc":{"Written by":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/"},"author":{"name":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ed8c1d98490712a9c8fd5a9e066c61db"},"headline":"Running Couchbase Autonomous Operator on VMware","datePublished":"2019-07-12T20:28:15+00:00","dateModified":"2025-06-14T04:33:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/"},"wordCount":936,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg","keywords":["backup","kubernetes","PKS"],"articleSection":["Best Practices and Tutorials","Couchbase Architecture","Couchbase Autonomous Operator","Couchbase Capella","Couchbase Server","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/","url":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/","name":"Running Couchbase Autonomous Operator on VMware","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg","datePublished":"2019-07-12T20:28:15+00:00","dateModified":"2025-06-14T04:33:40+00:00","description":"Hear from Cormac Hogan, Director and Chief Technologist in the Office of the CTO in the SABU at VMware, about using the Autonomous Operator.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/116-hero-liquid-water-drop_RESIZED.jpg","width":1700,"height":640,"caption":"Droplets of water falling into a puddle"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-autonomous-operator-on-vmware-pks-vsphere-and-vsan-infrastructure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Running Couchbase Autonomous Operator on VMware"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/ed8c1d98490712a9c8fd5a9e066c61db","name":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g86e4570d5755b073087333983950b3a0","url":"https:\/\/secure.gravatar.com\/avatar\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g","caption":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database"},"description":"Anil Kumar is the Director of Product Management at Couchbase. Anil\u2019s career spans more than 19+ years of building software products across various domains, including enterprise software and cloud services. He is a hands-on product leader responsible for Couchbase Server, Couchbase Cloud, and Kubernetes product lines, including evangelizing the product strategy and vision with customers, partners, developers, and analysts. Before joining Couchbase, Anil spent several years working at Microsoft Redmond. Anil holds a master\u2019s degree in computer science from the University of Toronto (Canada) and a bachelor\u2019s in information technology from Visvesvaraya Technological University (India).","sameAs":["https:\/\/x.com\/@anilkumar1129"],"url":"https:\/\/www.couchbase.com\/blog\/author\/anil-kumar\/"}]}},"acf":[],"authors":[{"term_id":8952,"user_id":8,"is_guest":0,"slug":"anil-kumar","display_name":"Anil Kumar, Director Product Management, Couchbase Cloud-Native Database","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/7a4ec23feb4ba1eed5342b1010841d36c47c1f330c26d85b3b8340b8f89ea3d7?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/7213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=7213"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/7213\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/10743"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=7213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=7213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=7213"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=7213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}