From ff3c41af5903e3d0460475a39fd04e830b7502f4 Mon Sep 17 00:00:00 2001 From: TimLFletcher Date: Tue, 13 May 2025 18:43:39 +0100 Subject: [PATCH 1/5] DOC-13250: CAO changes. Ready for preview. --- .../assets/images/cloud-native-overview.png | Bin 0 -> 386867 bytes modules/ROOT/assets/images/kubernettes_2.svg | 386 ++++++++++++++++++ modules/ROOT/nav.adoc | 1 + modules/ROOT/pages/compatibility.adoc | 96 +++++ modules/ROOT/pages/install-kubernetes.adoc | 15 + modules/ROOT/pages/overview.adoc | 12 +- modules/ROOT/pages/tutorial-prometheus.adoc | 10 +- 7 files changed, 516 insertions(+), 4 deletions(-) create mode 100644 modules/ROOT/assets/images/cloud-native-overview.png create mode 100644 modules/ROOT/assets/images/kubernettes_2.svg create mode 100644 modules/ROOT/pages/compatibility.adoc diff --git a/modules/ROOT/assets/images/cloud-native-overview.png b/modules/ROOT/assets/images/cloud-native-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..47fc052fae70f5db207f39bb39adde45aed52c11 GIT binary patch literal 386867 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

Rq&6djjOkhed_d%5`97|xYoFZ7f@ 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

`DXP|DWp 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 literal 0 HcmV?d00001 diff --git a/modules/ROOT/assets/images/kubernettes_2.svg b/modules/ROOT/assets/images/kubernettes_2.svg new file mode 100644 index 00000000..1add6bf8 --- /dev/null +++ b/modules/ROOT/assets/images/kubernettes_2.svg @@ -0,0 +1,386 @@ + + + + Slice + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 10fa5303..664b6b3b 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -1,6 +1,7 @@ .Introduction * xref:overview.adoc[Introduction] * xref:whats-new.adoc[What's New?] +* xref:compatibility.adoc[Compatibility Matrix] .Getting Started * xref:best-practices.adoc[Guidelines and Best Practices] * xref:prerequisite-and-setup.adoc[Prerequisites and System Requirements] diff --git a/modules/ROOT/pages/compatibility.adoc b/modules/ROOT/pages/compatibility.adoc new file mode 100644 index 00000000..0cd127ae --- /dev/null +++ b/modules/ROOT/pages/compatibility.adoc @@ -0,0 +1,96 @@ += Couchbase Cloud-Native Database Compatibility Matrix +include::partial$cloud-native-compatibility-links-cao.adoc[] +include::partial$cloud-native-compatibility-links-csb.adoc[] + + +[abstract] +The Couchbase Cloud-Native Database compatibility matrix describes the various cloud-native components that are compatible with each version of the Couchbase Autonomous Operator. + +Couchbase maximizes cloud-native technologies' advantages by natively integrating the Couchbase Autonomous Operator and Couchbase Service Broker to deliver a geo-distributed database platform, providing a hybrid, multi-cloud database solution for organizations. + +== Autonomous Operator Cloud-Native Compatibility + +The matrix below denotes the version of Couchbase Autonomous Operator and its compatibility with other cloud-native components. + +.Couchbase Cloud-Native Database Compatibility Matrix - _Autonomous Operator_ +[#table-cloud-native-compatibility-cao,cols="1h,1,1,1,1,1",options="header"] +|=== +| +| Kubernetes +| Helm +| Prometheus +| Service Mesh +| Fluent Bit + +| xref:1.2@operator::release-notes.adoc[Couchbase Autonomous Operator 1.2] +| https://github.com/kubernetes/kubernetes/releases/tag/v1.11.0[1.11^], https://github.com/kubernetes/kubernetes/releases/tag/v1.12.0[1.12^], https://github.com/kubernetes/kubernetes/releases/tag/v1.13.0[1.13^] +| na +| na +| na +| na + +| xref:2.0@operator::release-notes.adoc[Couchbase Autonomous Operator 2.0] +| https://github.com/kubernetes/kubernetes/releases/tag/v1.14.0[1.14^], https://github.com/kubernetes/kubernetes/releases/tag/v1.15.0[1.15^], https://github.com/kubernetes/kubernetes/releases/tag/v1.16.0[1.16^], https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^] +| https://github.com/helm/helm/releases[Helm 3.1+^] + +https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.0.0[Chart 2.0^] +| https://github.com/prometheus/prometheus/releases/tag/v2.18.0[Prometheus 2.18+^] + +https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.2^] +| na +| na + +| xref:2.1@operator::release-notes.adoc[Couchbase Autonomous Operator 2.1] +| https://github.com/kubernetes/kubernetes/releases/tag/v1.15.0[1.15^], https://github.com/kubernetes/kubernetes/releases/tag/v1.16.0[1.16^], https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^], https://github.com/kubernetes/kubernetes/releases/tag/v1.19.0[1.19^] +| https://github.com/helm/helm/releases[Helm 3.1+^] + +https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.1.0[Chart 2.1^] +| https://github.com/prometheus/prometheus/releases/tag/v2.24.0[Prometheus 2.24+^] + +https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.3^] +| https://github.com/istio/istio/releases/tag/1.8.1[Istio 1.8.1+^] +| na + +| xref:2.2@operator::release-notes.adoc[Couchbase Autonomous Operator 2.2] +| https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^], https://github.com/kubernetes/kubernetes/releases/tag/v1.19.0[1.19^], https://github.com/kubernetes/kubernetes/releases/tag/v1.20.0[1.20^], https://github.com/kubernetes/kubernetes/releases/tag/v1.21.0[1.21^] +| https://github.com/helm/helm/releases[Helm 3.1+^] + +https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.2.0[Chart 2.2^] +| https://github.com/prometheus/prometheus/releases/tag/v2.27.0[Prometheus 2.27+^] + +https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.4^] +| https://github.com/istio/istio/releases/tag/1.10.0[Istio 1.10+^] +| https://fluentbit.io/announcements/v1.7.3/[Fluent Bit 1.7.3^] + +https://hub.docker.com/r/couchbase/fluent-bit/tags[Couchbase Fluent Bit 1.0.1^] +|=== + +Note: + + * The Couchbase Autonomous Operator has its own platform compatibility requirements. + Refer to xref:operator::prerequisite-and-setup.adoc[] in the Autonomous Operator documentation for more information. + + * CAO does not support Istio Service Mesh on RedHat OpenShift Container Platform. + +== Service Broker Cloud-Native Compatibility + +The matrix below denotes the version of Couchbase Service Broker and its compatibility with other cloud-native components. + +.Couchbase Cloud-Native Database Compatibility Matrix - _Service Broker_ +[#table-cloud-native-compatibility-csb,cols="1h,2,2",options="header"] +|=== +| +| Couchbase Autonomous Operator +| Open Service Broker API + +| xref:1.0@service-broker::release-notes.adoc[Couchbase Service Broker 1.0] +| xref:2.1@operator::release-notes.adoc[2.1+] +| https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md[2.13+^] + +| xref:1.1@service-broker::release-notes.adoc[Couchbase Service Broker 1.1] +| xref:1.1@service-broker::release-notes.adoc[Couchbase Service Broker 1.1] +| https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md[2.13+^] +|=== + +NOTE: The Couchbase Service Broker has its own platform compatibility requirements. +Refer to the xref:service-broker::install/get-started.adoc#prerequisites[Prerequisites] in the Service Broker documentation for more information. diff --git a/modules/ROOT/pages/install-kubernetes.adoc b/modules/ROOT/pages/install-kubernetes.adoc index 0797d510..89b6bc77 100644 --- a/modules/ROOT/pages/install-kubernetes.adoc +++ b/modules/ROOT/pages/install-kubernetes.adoc @@ -28,6 +28,21 @@ Make sure to `cd` into this directory before you run the commands in this guide. All commands in this guide are run as a system administrator account; they require the creation of cluster scoped resources or the granting of roles to service accounts (privilege escalation). +== Certified Kubernetes Platforms + +There are numerous certified Kubernetes offerings that are conformant to the https://www.cncf.io/certification/software-conformance/[CNCF Certified Kubernetes program^]. +This program ensures that every vendor’s version of Kubernetes supports the required APIs, as do open source community versions. + +Couchbase runs its own certification suites on the most widely used vendors to ensure the Couchbase Autonomous Operator is fully compatible and supported. + +The following certified Kubernetes hosted vendors are supported by the Autonomous Operator: + +* Amazon Elastic Kubernetes Service (EKS) +* Google Kubernetes Engine (GKE) +* Microsoft Azure Kubernetes Service (AKS) +* Red Hat OpenShift Container Platform +* Rancher Kubernetes Engine (RKE) + == Install the CRD The first step in installing the Operator is to install the custom resource definitions (CRD) that describe the Couchbase resource types. diff --git a/modules/ROOT/pages/overview.adoc b/modules/ROOT/pages/overview.adoc index 402997bb..25e62fd5 100644 --- a/modules/ROOT/pages/overview.adoc +++ b/modules/ROOT/pages/overview.adoc @@ -1,8 +1,14 @@ = Introduction -The Couchbase Autonomous Operator provides native integration of Couchbase Server with open source Kubernetes and Red Hat OpenShift. -It enables you to automate the management of common Couchbase tasks such as the configuration, creation, scaling, and recovery of Couchbase clusters. -By reducing the complexity of running a Couchbase cluster, it lets you focus on the desired configuration and not worry about the details of manual deployment and life-cycle management. +The Couchbase Cloud-Native Database is the native integration of Couchbase Server with cloud-native technologies, facilitated by the Couchbase Autonomous Operator. +This integration empowers organizations to build and run scalable stateful applications in modern, dynamic environments such as public, private, and hybrid clouds. +Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. + +image::kubernettes_2.svg[,400] + +The Couchbase Cloud-Native Database is the culmination of Couchbase Server and native integration with cloud-native open-source technologies such as Kubernetes, Prometheus, Helm, CNI, CoreDNS, Operator Framework, Ceph, Gluster, Istio Service Mesh, and the Open Service Broker API. + +image::cloud-native-overview.png[] == What Does it Support? diff --git a/modules/ROOT/pages/tutorial-prometheus.adoc b/modules/ROOT/pages/tutorial-prometheus.adoc index fd82adf7..d77d7319 100644 --- a/modules/ROOT/pages/tutorial-prometheus.adoc +++ b/modules/ROOT/pages/tutorial-prometheus.adoc @@ -5,7 +5,15 @@ Enable and setup Prometheus Monitoring for the Couchbase Autonomous Operator. include::partial$tutorial.adoc[] -This guide walks through recommended procedures for enabling and configuring Prometheus monitoring of the Couchbase Autonomous Operator. +== Overview + +https://prometheus.io/[Prometheus^] is a leading open-source monitoring solution. +As a https://www.cncf.io/announcements/2018/08/09/prometheus-graduates/[graduated project^] of the Cloud Native Computing Foundation, it has become the de facto standard for metrics collection and alert generation on cloud platforms. + +The Couchbase Autonomous Operator can optionally manage a sidecar container that can provide detailed metrics to Prometheus about the health of a Couchbase cluster. + +Prometheus provides significant visibility into the health and operation of a Couchbase cluster. +Metrics can be used to develop alerts for system issues, identify maintenance windows and other valuable business intelligence insights, as well as provide the basis for xref:operator::concept-couchbase-autoscaling.adoc[auto-scaling Couchbase clusters]. == Prerequisites From a760617140a995f850f2e5e995c3b71ec2283537 Mon Sep 17 00:00:00 2001 From: TimLFletcher Date: Tue, 13 May 2025 19:00:47 +0100 Subject: [PATCH 2/5] DOC-13250: Small cleanup of partial references --- modules/ROOT/pages/compatibility.adoc | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/ROOT/pages/compatibility.adoc b/modules/ROOT/pages/compatibility.adoc index 0cd127ae..3805b198 100644 --- a/modules/ROOT/pages/compatibility.adoc +++ b/modules/ROOT/pages/compatibility.adoc @@ -1,7 +1,4 @@ = Couchbase Cloud-Native Database Compatibility Matrix -include::partial$cloud-native-compatibility-links-cao.adoc[] -include::partial$cloud-native-compatibility-links-csb.adoc[] - [abstract] The Couchbase Cloud-Native Database compatibility matrix describes the various cloud-native components that are compatible with each version of the Couchbase Autonomous Operator. From 2fec15ae26cbdafad2f2273c952d369f1686339a Mon Sep 17 00:00:00 2001 From: TimLFletcher Date: Wed, 11 Jun 2025 14:19:57 +0100 Subject: [PATCH 3/5] DOC-13250: updated with justin ashworth's feedback --- modules/ROOT/pages/compatibility.adoc | 93 --------------------------- modules/ROOT/pages/overview.adoc | 6 -- 2 files changed, 99 deletions(-) delete mode 100644 modules/ROOT/pages/compatibility.adoc diff --git a/modules/ROOT/pages/compatibility.adoc b/modules/ROOT/pages/compatibility.adoc deleted file mode 100644 index 3805b198..00000000 --- a/modules/ROOT/pages/compatibility.adoc +++ /dev/null @@ -1,93 +0,0 @@ -= Couchbase Cloud-Native Database Compatibility Matrix - -[abstract] -The Couchbase Cloud-Native Database compatibility matrix describes the various cloud-native components that are compatible with each version of the Couchbase Autonomous Operator. - -Couchbase maximizes cloud-native technologies' advantages by natively integrating the Couchbase Autonomous Operator and Couchbase Service Broker to deliver a geo-distributed database platform, providing a hybrid, multi-cloud database solution for organizations. - -== Autonomous Operator Cloud-Native Compatibility - -The matrix below denotes the version of Couchbase Autonomous Operator and its compatibility with other cloud-native components. - -.Couchbase Cloud-Native Database Compatibility Matrix - _Autonomous Operator_ -[#table-cloud-native-compatibility-cao,cols="1h,1,1,1,1,1",options="header"] -|=== -| -| Kubernetes -| Helm -| Prometheus -| Service Mesh -| Fluent Bit - -| xref:1.2@operator::release-notes.adoc[Couchbase Autonomous Operator 1.2] -| https://github.com/kubernetes/kubernetes/releases/tag/v1.11.0[1.11^], https://github.com/kubernetes/kubernetes/releases/tag/v1.12.0[1.12^], https://github.com/kubernetes/kubernetes/releases/tag/v1.13.0[1.13^] -| na -| na -| na -| na - -| xref:2.0@operator::release-notes.adoc[Couchbase Autonomous Operator 2.0] -| https://github.com/kubernetes/kubernetes/releases/tag/v1.14.0[1.14^], https://github.com/kubernetes/kubernetes/releases/tag/v1.15.0[1.15^], https://github.com/kubernetes/kubernetes/releases/tag/v1.16.0[1.16^], https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^] -| https://github.com/helm/helm/releases[Helm 3.1+^] - -https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.0.0[Chart 2.0^] -| https://github.com/prometheus/prometheus/releases/tag/v2.18.0[Prometheus 2.18+^] - -https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.2^] -| na -| na - -| xref:2.1@operator::release-notes.adoc[Couchbase Autonomous Operator 2.1] -| https://github.com/kubernetes/kubernetes/releases/tag/v1.15.0[1.15^], https://github.com/kubernetes/kubernetes/releases/tag/v1.16.0[1.16^], https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^], https://github.com/kubernetes/kubernetes/releases/tag/v1.19.0[1.19^] -| https://github.com/helm/helm/releases[Helm 3.1+^] - -https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.1.0[Chart 2.1^] -| https://github.com/prometheus/prometheus/releases/tag/v2.24.0[Prometheus 2.24+^] - -https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.3^] -| https://github.com/istio/istio/releases/tag/1.8.1[Istio 1.8.1+^] -| na - -| xref:2.2@operator::release-notes.adoc[Couchbase Autonomous Operator 2.2] -| https://github.com/kubernetes/kubernetes/releases/tag/v1.17.0[1.17^], https://github.com/kubernetes/kubernetes/releases/tag/v1.18.0[1.18^], https://github.com/kubernetes/kubernetes/releases/tag/v1.19.0[1.19^], https://github.com/kubernetes/kubernetes/releases/tag/v1.20.0[1.20^], https://github.com/kubernetes/kubernetes/releases/tag/v1.21.0[1.21^] -| https://github.com/helm/helm/releases[Helm 3.1+^] - -https://artifacthub.io/packages/helm/couchbase/couchbase-operator/2.2.0[Chart 2.2^] -| https://github.com/prometheus/prometheus/releases/tag/v2.27.0[Prometheus 2.27+^] - -https://hub.docker.com/r/couchbase/exporter/tags[Couchbase Exporter 1.0.4^] -| https://github.com/istio/istio/releases/tag/1.10.0[Istio 1.10+^] -| https://fluentbit.io/announcements/v1.7.3/[Fluent Bit 1.7.3^] - -https://hub.docker.com/r/couchbase/fluent-bit/tags[Couchbase Fluent Bit 1.0.1^] -|=== - -Note: - - * The Couchbase Autonomous Operator has its own platform compatibility requirements. - Refer to xref:operator::prerequisite-and-setup.adoc[] in the Autonomous Operator documentation for more information. - - * CAO does not support Istio Service Mesh on RedHat OpenShift Container Platform. - -== Service Broker Cloud-Native Compatibility - -The matrix below denotes the version of Couchbase Service Broker and its compatibility with other cloud-native components. - -.Couchbase Cloud-Native Database Compatibility Matrix - _Service Broker_ -[#table-cloud-native-compatibility-csb,cols="1h,2,2",options="header"] -|=== -| -| Couchbase Autonomous Operator -| Open Service Broker API - -| xref:1.0@service-broker::release-notes.adoc[Couchbase Service Broker 1.0] -| xref:2.1@operator::release-notes.adoc[2.1+] -| https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md[2.13+^] - -| xref:1.1@service-broker::release-notes.adoc[Couchbase Service Broker 1.1] -| xref:1.1@service-broker::release-notes.adoc[Couchbase Service Broker 1.1] -| https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md[2.13+^] -|=== - -NOTE: The Couchbase Service Broker has its own platform compatibility requirements. -Refer to the xref:service-broker::install/get-started.adoc#prerequisites[Prerequisites] in the Service Broker documentation for more information. diff --git a/modules/ROOT/pages/overview.adoc b/modules/ROOT/pages/overview.adoc index 25e62fd5..097b1f45 100644 --- a/modules/ROOT/pages/overview.adoc +++ b/modules/ROOT/pages/overview.adoc @@ -4,12 +4,6 @@ The Couchbase Cloud-Native Database is the native integration of Couchbase Serve This integration empowers organizations to build and run scalable stateful applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. -image::kubernettes_2.svg[,400] - -The Couchbase Cloud-Native Database is the culmination of Couchbase Server and native integration with cloud-native open-source technologies such as Kubernetes, Prometheus, Helm, CNI, CoreDNS, Operator Framework, Ceph, Gluster, Istio Service Mesh, and the Open Service Broker API. - -image::cloud-native-overview.png[] - == What Does it Support? The Operator can deploy and manage: From 3a9cac79b11252dd1b621b82a9049abd5224b923 Mon Sep 17 00:00:00 2001 From: TimLFletcher Date: Wed, 11 Jun 2025 16:34:49 +0100 Subject: [PATCH 4/5] DOC-13250: Autonomous Operator to Kubernetes Operator --- modules/ROOT/nav.adoc | 1 - modules/ROOT/pages/best-practices.adoc | 4 +- modules/ROOT/pages/concept-backup.adoc | 20 +++---- .../pages/concept-cloud-native-gateway.adoc | 4 +- ...-couchbase-autoscaling-best-practices.adoc | 6 +-- .../pages/concept-couchbase-autoscaling.adoc | 52 +++++++++---------- .../ROOT/pages/concept-couchbase-logging.adoc | 16 +++--- .../pages/concept-couchbase-networking.adoc | 2 +- .../pages/concept-kubernetes-networking.adoc | 12 ++--- .../ROOT/pages/concept-label-selection.adoc | 16 +++--- .../ROOT/pages/concept-memory-allocation.adoc | 16 +++--- .../ROOT/pages/concept-operator-logging.adoc | 10 ++-- .../pages/concept-platform-certification.adoc | 6 +-- .../ROOT/pages/concept-pod-templating.adoc | 32 ++++++------ modules/ROOT/pages/concept-rbac.adoc | 2 +- modules/ROOT/pages/concept-scheduling.adoc | 2 +- modules/ROOT/pages/concept-tls.adoc | 2 +- modules/ROOT/pages/concept-user-rbac.adoc | 10 ++-- modules/ROOT/pages/helm-couchbase-config.adoc | 6 +-- modules/ROOT/pages/helm-managing-guide.adoc | 18 +++---- modules/ROOT/pages/helm-setup-guide.adoc | 38 +++++++------- modules/ROOT/pages/howto-backup.adoc | 32 ++++++------ modules/ROOT/pages/howto-client-sdks.adoc | 2 +- .../pages/howto-couchbase-autoscaling.adoc | 44 ++++++++-------- .../ROOT/pages/howto-couchbase-create.adoc | 6 +-- .../pages/howto-couchbase-log-forwarding.adoc | 40 +++++++------- .../howto-guide-couchbase-user-rbac.adoc | 8 +-- .../pages/howto-guide-data-topology-sync.adoc | 6 +-- .../ROOT/pages/howto-guide-save-restore.adoc | 6 +-- .../howto-guide-xdcr-scopes-collections.adoc | 6 +-- .../pages/howto-manage-couchbase-logging.adoc | 36 ++++++------- .../pages/howto-manage-operator-logging.adoc | 40 +++++++------- .../ROOT/pages/howto-operator-upgrade.adoc | 2 +- .../ROOT/pages/howto-persistent-volumes.adoc | 16 +++--- modules/ROOT/pages/howto-prometheus.adoc | 14 ++--- modules/ROOT/pages/howto-tls-passphrase.adoc | 2 +- modules/ROOT/pages/howto-xdcr.adoc | 2 +- modules/ROOT/pages/install-kubernetes.adoc | 8 +-- modules/ROOT/pages/install-openshift.adoc | 6 +-- modules/ROOT/pages/overview.adoc | 2 +- .../ROOT/pages/prerequisite-and-setup.adoc | 8 +-- modules/ROOT/pages/prerequisite-cloud.adoc | 2 +- .../ROOT/pages/reference-admission-cli.adoc | 2 +- .../reference-operator-configuration.adoc | 6 +-- .../pages/reference-operator-logging.adoc | 10 ++-- .../ROOT/pages/reference-operator-rbac.adoc | 2 +- .../pages/reference-prometheus-metrics.adoc | 2 +- modules/ROOT/pages/release-notes.adoc | 10 ++-- .../ROOT/pages/tutorial-autoscale-data.adoc | 24 ++++----- .../ROOT/pages/tutorial-autoscale-index.adoc | 26 +++++----- .../ROOT/pages/tutorial-autoscale-query.adoc | 24 ++++----- modules/ROOT/pages/tutorial-cert-manager.adoc | 28 +++++----- .../tutorial-couchbase-log-forwarding.adoc | 18 +++---- .../tutorial-kubernetes-network-policy.adoc | 6 +-- modules/ROOT/pages/tutorial-prometheus.adoc | 8 +-- modules/ROOT/pages/tutorial-rbac-auth.adoc | 6 +-- modules/ROOT/pages/tutorial-sync-gateway.adoc | 22 ++++---- modules/ROOT/pages/tutorial-tls.adoc | 2 +- .../ROOT/pages/tutorial-velero-backup.adoc | 2 +- .../ROOT/pages/tutorial-volume-expansion.adoc | 16 +++--- modules/ROOT/pages/whats-new.adoc | 4 +- 61 files changed, 390 insertions(+), 391 deletions(-) diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 664b6b3b..10fa5303 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -1,7 +1,6 @@ .Introduction * xref:overview.adoc[Introduction] * xref:whats-new.adoc[What's New?] -* xref:compatibility.adoc[Compatibility Matrix] .Getting Started * xref:best-practices.adoc[Guidelines and Best Practices] * xref:prerequisite-and-setup.adoc[Prerequisites and System Requirements] diff --git a/modules/ROOT/pages/best-practices.adoc b/modules/ROOT/pages/best-practices.adoc index 403846fd..45e6b7e0 100644 --- a/modules/ROOT/pages/best-practices.adoc +++ b/modules/ROOT/pages/best-practices.adoc @@ -1,7 +1,7 @@ = Guidelines and Best Practices :page-aliases: node-recovery -The Couchbase Autonomous Operator makes deploying Couchbase Server incredibly simple. However, there are some external influences and configurations that can cause issues. This topic outlines some of the deployment best practices that can help you avoid some of the most common pitfalls. +The Couchbase Kubernetes Operator makes deploying Couchbase Server incredibly simple. However, there are some external influences and configurations that can cause issues. This topic outlines some of the deployment best practices that can help you avoid some of the most common pitfalls. == Pod Scheduling @@ -117,7 +117,7 @@ Ephemeral clusters favor caching use-cases where the data can be repopulated by Since fully-ephemeral Couchbase clusters only use ephemeral storage, Couchbase Server logs are highly likely to be unavailable in the event of a crash. This can make supporting an ephemeral cluster particularly difficult, and it is recommended that you exercise caution when using this type of deployment. -Starting with version 2.2, the Autonomous Operator supports xref:howto-couchbase-log-forwarding.adoc[forwarding] Couchbase Server logs. +Starting with version 2.2, the Kubernetes Operator supports xref:howto-couchbase-log-forwarding.adoc[forwarding] Couchbase Server logs. However, the current implementation requires the use of a (persistent) volume. ==== diff --git a/modules/ROOT/pages/concept-backup.adoc b/modules/ROOT/pages/concept-backup.adoc index d68c20c3..34536f47 100644 --- a/modules/ROOT/pages/concept-backup.adoc +++ b/modules/ROOT/pages/concept-backup.adoc @@ -1,13 +1,13 @@ = Couchbase Backup and Restore [abstract] -The Autonomous Operator provides facilities that allow data to be backed up, restored, and archived in order to aid in cluster disaster recovery. +The Kubernetes Operator provides facilities that allow data to be backed up, restored, and archived in order to aid in cluster disaster recovery. == Overview -The Autonomous Operator provides automated backup and restore capabilities through a native integration with the xref:server:backup-restore:enterprise-backup-restore.adoc[`cbbackupmgr` tool] in Couchbase Server. +The Kubernetes Operator provides automated backup and restore capabilities through a native integration with the xref:server:backup-restore:enterprise-backup-restore.adoc[`cbbackupmgr` tool] in Couchbase Server. Automated backup is enabled in the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource (it is _disabled_ by default). -When backup is enabled, the Autonomous Operator defaults to a Couchbase-supplied https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] container image that contains xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]. +When backup is enabled, the Kubernetes Operator defaults to a Couchbase-supplied https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] container image that contains xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]. Once automated backup is enabled, individual backup policies can be configured using xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resources, which define things like _schedule_ and _backup strategy_. Each xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resource creates one or two Kubernetes https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/[`CronJob`^] resources that will spawn backup jobs according to the given Cron schedule(s). @@ -23,15 +23,15 @@ Because backup policies are configured with a separate resource, you can use xre == About the `operator-backup` Image Each version of Couchbase Server is released with a compatible version of the xref:server:backup-restore:enterprise-backup-restore.adoc[`cbbackupmgr` tool]. -This tool is included in the https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] container image that is used by the Autonomous Operator to provide automated backup and restore capabilities. +This tool is included in the https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] container image that is used by the Kubernetes Operator to provide automated backup and restore capabilities. -Whenever the Autonomous Operator gains support for a new version of Couchbase Server, a new and/or compatible version of the https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] image will be made available at the same time that includes a fully compatible version of xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]. -For a list of compatible images for this release of the Autonomous Operator, refer to xref:prerequisite-and-setup.adoc#couchbase-backup-and-restore-compatibility[Couchbase Backup and Restore Compatibility]. +Whenever the Kubernetes Operator gains support for a new version of Couchbase Server, a new and/or compatible version of the https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] image will be made available at the same time that includes a fully compatible version of xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]. +For a list of compatible images for this release of the Kubernetes Operator, refer to xref:prerequisite-and-setup.adoc#couchbase-backup-and-restore-compatibility[Couchbase Backup and Restore Compatibility]. [IMPORTANT] ==== Only the official Couchbase-supplied https://hub.docker.com/r/couchbase/operator-backup[`operator-backup`^] container image is supported. -This image is designed only for use with the Autonomous Operator, and is not meant for any other context. +This image is designed only for use with the Kubernetes Operator, and is not meant for any other context. In addition, you should ensure that your image source is trusted. The backup image requires access to the Couchbase cluster administrative credentials in order to login and perform collection. @@ -40,10 +40,10 @@ Granting these credentials to arbitrary code is potentially harmful. == Important Considerations -* The Autonomous Operator supports two of the backup strategies available in xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]: _Full Only_ and _Full/Incremental_. +* The Kubernetes Operator supports two of the backup strategies available in xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`]: _Full Only_ and _Full/Incremental_. Complete descriptions and explanations of these strategies can be found in the xref:server:backup-restore:cbbackupmgr-strategies.adoc[`cbbackupmgr` strategies documentation]. -* The Autonomous Operator runs the backup utility in a separate Pod. +* The Kubernetes Operator runs the backup utility in a separate Pod. Where this Pod is scheduled can have implications on backup performance, and can affect whether backup jobs are able to complete within the desired time window. + You should schedule backup Pods onto Kubernetes nodes that have enough resources to successfully fulfill your backup schedule. @@ -62,7 +62,7 @@ When you re-enabled automated backup, any applicable xref:resource/couchbaseback [IMPORTANT] ==== The xref:server:backup-restore:cbbackupmgr.adoc[`cbbackupmgr`] tool _does not_ support mutual TLS authentication. -If your Couchbase cluster is using mandatory client certificate authentication, the Autonomous Operator, in an effort to keep the backup from failing, will downgrade the connection between the backup Pod and the cluster to _plain text_. +If your Couchbase cluster is using mandatory client certificate authentication, the Kubernetes Operator, in an effort to keep the backup from failing, will downgrade the connection between the backup Pod and the cluster to _plain text_. In both server-side TLS and optional client certificate authentication modes of operation, the backup will occur over TLS, using basic HTTP authentication. ==== diff --git a/modules/ROOT/pages/concept-cloud-native-gateway.adoc b/modules/ROOT/pages/concept-cloud-native-gateway.adoc index 501a6deb..d54fc3b7 100644 --- a/modules/ROOT/pages/concept-cloud-native-gateway.adoc +++ b/modules/ROOT/pages/concept-cloud-native-gateway.adoc @@ -34,7 +34,7 @@ gRPC over HTTP/2 is an efficient binary wire protocol which can be efficiently m == How it is Deployed The Cloud Native Gateway runs as a _sidecar_ image to every Couchbase Server node in a cluster. -This sidecar is set up and managed by the Couchbase Autonomous Operator. +This sidecar is set up and managed by the Couchbase Kubernetes Operator. When deploying a Couchbase Cluster in Kubernetes, you will define a `CouchbaseCluster` Object. Starting with release 2.6.1, the object definition allows you to add a `cloudNativeGateway` object to add the Cloud Native Gateway to your cluster and create a `Service` object. @@ -50,7 +50,7 @@ networking: ---- CAUTION: At the moment, adding CNG to an existing cluster requires a rebalance which will create new pods and move data. -For compatibility with commonly deployed Kubernetes and OpenShift releases, the Couchbase Autonomous Operator cannot yet use some of the newer features for sidecar management. +For compatibility with commonly deployed Kubernetes and OpenShift releases, the Couchbase Kubernetes Operator cannot yet use some of the newer features for sidecar management. == Monitoring Health diff --git a/modules/ROOT/pages/concept-couchbase-autoscaling-best-practices.adoc b/modules/ROOT/pages/concept-couchbase-autoscaling-best-practices.adoc index f99f4f44..83360437 100644 --- a/modules/ROOT/pages/concept-couchbase-autoscaling-best-practices.adoc +++ b/modules/ROOT/pages/concept-couchbase-autoscaling-best-practices.adoc @@ -2,11 +2,11 @@ :HorizontalPodAutoscaler: pass:q[https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#horizontalpodautoscaler-v2-autoscaling[`HorizontalPodAutoscaler`^]] [abstract] -Recommended best practices, derived from tested performance metrics, for configuring Couchbase cluster auto-scaling using the Couchbase Autonomous Operator. +Recommended best practices, derived from tested performance metrics, for configuring Couchbase cluster auto-scaling using the Couchbase Kubernetes Operator. == How to Use This Page -This page provides guidance on how to configure the Autonomous Operator's xref:concept-couchbase-autoscaling.adoc[auto-scaling feature] to effectively scale Couchbase clusters. +This page provides guidance on how to configure the Kubernetes Operator's xref:concept-couchbase-autoscaling.adoc[auto-scaling feature] to effectively scale Couchbase clusters. Specifically, it discusses relevant _metrics_ for scaling individual Couchbase Services, and provides recommended settings based on internal benchmark testing performed by Couchbase. Auto-scaling is a generic feature and it is possible to use other metrics and options outside those listed in these best practices. @@ -145,7 +145,7 @@ However, when using auto-scaling in production, it is recommended that you set ` This ensures a minimum level of protection against single-node failures. + CAUTION: You can technically set `minReplicas` to `0` by enabling the `HPAScaleToZero` https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/[feature gate^]. -You should never do this, as the Autonomous Operator prevents server class configurations from having sizes less than 1. +You should never do this, as the Kubernetes Operator prevents server class configurations from having sizes less than 1. * Depending on the cloud provider, provisioning of persistent volumes may take significantly longer than pods. Therefore, the chances of exceeding a metric threshold while trying to reach its desired value is higher when using persistent volumes. diff --git a/modules/ROOT/pages/concept-couchbase-autoscaling.adoc b/modules/ROOT/pages/concept-couchbase-autoscaling.adoc index c67ecf8e..f55ab534 100644 --- a/modules/ROOT/pages/concept-couchbase-autoscaling.adoc +++ b/modules/ROOT/pages/concept-couchbase-autoscaling.adoc @@ -2,18 +2,18 @@ :HorizontalPodAutoscaler: pass:q[https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#horizontalpodautoscaler-v2-autoscaling[`HorizontalPodAutoscaler`^]] [abstract] -The Autonomous Operator can be configured to enable automatic scaling for Couchbase clusters. +The Kubernetes Operator can be configured to enable automatic scaling for Couchbase clusters. == About Couchbase Cluster Auto-scaling -The Autonomous Operator provides the necessary facilities for Couchbase clusters to be automatically scaled based on usage metrics. +The Kubernetes Operator provides the necessary facilities for Couchbase clusters to be automatically scaled based on usage metrics. Thresholds can be set for native Kubernetes metrics (such as pod CPU utilization) as well as Couchbase metrics (such as bucket memory utilization) that, when crossed, trigger _horizontal scaling_ of individual server classes. Auto-scaling doesn't incur any cluster downtime, and allows for each Couchbase Service to be scaled _independently_ on the same cluster. For example, the Data Service can automatically scale in response to fluctuations in memory utilization, while the Query Service can automatically scale in response to CPU utilization. The sections on this page describe the conceptual information about Couchbase cluster auto-scaling. -For information on how to configure and administrate auto-scaling using the Autonomous Operator, refer to xref:howto-couchbase-autoscaling.adoc[]. +For information on how to configure and administrate auto-scaling using the Kubernetes Operator, refer to xref:howto-couchbase-autoscaling.adoc[]. IMPORTANT: Auto-scaling only supports adding or removing pod replicas of the associated server class. Auto-scaling does not currently scale a cluster _vertically_ by swapping pods with ones that have larger or smaller resource requests. @@ -22,7 +22,7 @@ By extension, the _size_ of persistent storage also cannot be auto-scaled and mu [[how-auto-scaling-works]] == How Auto-scaling Works -The Autonomous Operator maintains Couchbase cluster topology according to the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers[`couchbaseclusters.spec.servers`] section of the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource. +The Kubernetes Operator maintains Couchbase cluster topology according to the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers[`couchbaseclusters.spec.servers`] section of the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource. Within this section, _server classes_ are defined with, among other things, specifications for the following: * The specific Couchbase Services that should run on a particular pod @@ -58,17 +58,17 @@ spec: <.> This _server class_, named `data`, specifies that the Couchbase cluster should include `3` nodes running exclusively the Data Service, and that those nodes should each have `4` vCPU and `16Gi` memory. -This ability to have independently-configurable server classes is how the Autonomous Operator supports xref:concept-mds.adoc[_Multi-Dimensional Scaling_]. +This ability to have independently-configurable server classes is how the Kubernetes Operator supports xref:concept-mds.adoc[_Multi-Dimensional Scaling_]. Depending on the observed performance of a Couchbase cluster over time, its constituent server classes can be independently xref:howto-couchbase-scale.adoc[scaled] to meet the demands of current and future workloads. _Auto-scaling_ extends this capability by allowing server classes to automatically change in `size` (number of nodes) when observed metrics are detected to have crossed above or below user-configured thresholds. -The Autonomous Operator provides this capability through an integration with the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^]. +The Kubernetes Operator provides this capability through an integration with the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^]. image::autoscale-hpa-connection.png[] Cluster auto-scaling is fundamentally provided by the following components: -* A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created and managed by the Autonomous Operator +* A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created and managed by the Kubernetes Operator + Refer to <> @@ -83,7 +83,7 @@ Refer to <> [[about-the-couchbase-autoscaler]] == About the Couchbase Autoscaler -The Autonomous Operator creates a separate xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for _each_ server class that has auto-scaling enabled. +The Kubernetes Operator creates a separate xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for _each_ server class that has auto-scaling enabled. [source,yaml,subs="attributes,verbatim"] ---- @@ -100,28 +100,28 @@ spec: - query ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `true` triggers the Autonomous Operator to create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource for the server class named `query`. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `true` triggers the Kubernetes Operator to create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource for the server class named `query`. Each xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource is named using the format `__.__`. -For the example above, the Autonomous Operator would create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource named `query.cb-example`. +For the example above, the Kubernetes Operator would create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource named `query.cb-example`. -Once created, the Autonomous Operator keeps the size of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource in sync with the size of its associated server class. +Once created, the Kubernetes Operator keeps the size of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource in sync with the size of its associated server class. image::autoscale-crd.png[] The xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource acts as the necessary bridge between the {HorizontalPodAutoscaler} resource and the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource. The size of a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource is adjusted by the Horizontal Pod Autoscaler when the reported value of a user-specified metric crosses above or below a configured threshold. -Once the changes have been propagated from the {HorizontalPodAutoscaler} resource to the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, the Autonomous Operator will observe those changes and scale the server class accordingly. +Once the changes have been propagated from the {HorizontalPodAutoscaler} resource to the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, the Kubernetes Operator will observe those changes and scale the server class accordingly. image::autoscale-crd-hpa.png[] [IMPORTANT] ==== -xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources are fully managed by the Autonomous Operator and should not be manually created, modified, or deleted by the user. -If one is manually deleted, the Autonomous Operator will re-create it. +xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources are fully managed by the Kubernetes Operator and should not be manually created, modified, or deleted by the user. +If one is manually deleted, the Kubernetes Operator will re-create it. However, it is possible to edit the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] (refer to <> below). -A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource only gets deleted by the Autonomous Operator when xref:howto-couchbase-autoscaling.adoc#disabling-auto-scaling[auto-scaling is disabled] for the associated server class, or if the associated xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource is deleted altogether. +A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource only gets deleted by the Kubernetes Operator when xref:howto-couchbase-autoscaling.adoc#disabling-auto-scaling[auto-scaling is disabled] for the associated server class, or if the associated xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource is deleted altogether. ==== [[scale-subresource]] @@ -140,7 +140,7 @@ $ kubectl scale couchbaseautoscalers --replicas=6 query.cb-example ---- The above command results in scaling the server class named `query` to support `6` replicas. -The Autonomous Operator monitors the value of xref:resource/couchbaseautoscaler.adoc#couchbaseautoscalers-spec-size[`couchbaseautoscalers.spec.size`] and applies the value to xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-size[`couchbaseclusters.spec.servers.size`]. +The Kubernetes Operator monitors the value of xref:resource/couchbaseautoscaler.adoc#couchbaseautoscalers-spec-size[`couchbaseautoscalers.spec.size`] and applies the value to xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-size[`couchbaseclusters.spec.servers.size`]. NOTE: The Horizontal Pod Autoscaler will reconcile the number of replicas with the last computed desired state. Manual changes to the number of replicas will be reverted if the specified size falls outside of `minReplicas` or `maxReplicas`, or if the Horizontal Pod Autoscaler is currently recommending a different size. @@ -148,14 +148,14 @@ Manual changes to the number of replicas will be reverted if the specified size [[about-the-horizontal-pod-autoscaler]] == About the Horizontal Pod Autoscaler -The Autonomous Operator relies on the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^] to provide auto-scaling capabilities. +The Kubernetes Operator relies on the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^] to provide auto-scaling capabilities. The Horizontal Pod Autoscaler is responsible for observing target metrics, making https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details[sizing calculations^], and sending sizing requests to the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`]. The Horizontal Pod Autoscaler is configured via a {HorizontalPodAutoscaler} resource. The {HorizontalPodAutoscaler} resource is the primary interface by which auto-scaling is configured, and must be manually created and managed by the user. Simply enabling auto-scaling for a server class in the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource will not result in any auto-scaling operations until a {HorizontalPodAutoscaler} resource has been manually created and configured to reference the appropriate xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource. -NOTE: The Autonomous Operator has no facility for creating or managing {HorizontalPodAutoscaler} resources. +NOTE: The Kubernetes Operator has no facility for creating or managing {HorizontalPodAutoscaler} resources. Deleting a xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource does not delete any associated {HorizontalPodAutoscaler} resources. [[referencing-the-couchbase-autoscaler]] @@ -177,7 +177,7 @@ spec: name: query.cb-example # <.> ---- -<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Autonomous Operator when auto-scaling is enabled for a server class. +<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Kubernetes Operator when auto-scaling is enabled for a server class. <.> `scaleTargetRef.name`: This field needs to reference the unique `name` of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource. As discussed in <>, xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resources are created with the name format `__.__`. @@ -401,7 +401,7 @@ Refer to <> for more information. <.> The `periodSeconds` field defines the length of time in the past for which the policy must hold true before successive scaling changes in the same direction are allowed to occur. + -NOTE: The `periodSeconds` setting is effectively unnecessary when it comes to auto-scaling Couchbase clusters with the Autonomous Operator, and should be left to its default value unless recommended otherwise by the xref:concept-couchbase-autoscaling-best-practices.adoc[]. +NOTE: The `periodSeconds` setting is effectively unnecessary when it comes to auto-scaling Couchbase clusters with the Kubernetes Operator, and should be left to its default value unless recommended otherwise by the xref:concept-couchbase-autoscaling-best-practices.adoc[]. Instead, <> should be used, as it is the preferred method for controlling successive changes in scaling direction. <.> The `selectPolicy` field controls which policy is chosen by the Horizontal Pod Autoscaler if more than one policy is defined. @@ -422,10 +422,10 @@ The Horizontal Pod Autoscaler can be prevented from ever scaling down a server c ---- ==== -IMPORTANT: The Autonomous Operator can only auto-scale one server class at a time. +IMPORTANT: The Kubernetes Operator can only auto-scale one server class at a time. This is an important point to consider when enabling auto-scaling for multiple server classes on the same Couchbase cluster. If any associated {HorizontalPodAutoscaler} resource makes a new scaling recommendation while the cluster is currently undergoing a scaling operation based on a previous recommendation, then the new recommendation will not be honored until the current scaling operation is complete. -For example, in a hypothetical scenario where the Autonomous Operator has already begun scaling up a server class named `data` when another {HorizontalPodAutoscaler} resource recommends scaling up a server class named `query` on the same cluster, the Autonomous Operator will not balance in any `query` replicas until the `data` server class has been scaled up to the desired size. +For example, in a hypothetical scenario where the Kubernetes Operator has already begun scaling up a server class named `data` when another {HorizontalPodAutoscaler} resource recommends scaling up a server class named `query` on the same cluster, the Kubernetes Operator will not balance in any `query` replicas until the `data` server class has been scaled up to the desired size. (Note that this scenario is only possible when the <> is disabled.) [[scaling-increments]] @@ -471,7 +471,7 @@ Refer to xref:concept-couchbase-autoscaling-best-practices.adoc[] for help with If the targeted metric fluctuates back and forth across the configured scaling threshold over a short period of time, it can cause the cluster to scale up and down unnecessarily as it chases after the metric. This behavior is sometimes referred to as "flapping" or "thrashing". -The Horizontal Pod Autoscaler and the Autonomous Operator _both_ provide different but equally important mechanisms to control the flapping of pod replicas. +The Horizontal Pod Autoscaler and the Kubernetes Operator _both_ provide different but equally important mechanisms to control the flapping of pod replicas. These controls, described in the subsections below, are meant to be used in tandem with each other, and should be tested using different permutations when determining the appropriate auto-scaling configuration for a particular workload. [[couchbase-stabilization-period]] @@ -480,8 +480,8 @@ These controls, described in the subsections below, are meant to be used in tand Both during and directly after a rebalance operation, some metrics may behave erratically while the cluster continues to stabilize. If the Horizontal Pod Autoscaler is monitoring a targeted metric that is unstable due to rebalance, it may lead the Horizontal Pod Autoscaler to erroneously scale the cluster in undesirable ways. -The _Couchbase Stabilization Period_ is an internal safety mechanism provided by the Autonomous Operator that is meant to help prevent the types of over-scaling caused by metrics instability during rebalance. -When the Couchbase Stabilization Period is specified, the Autonomous Operator will put _all_ {HorizontalPodAutoscaler} resources associated with the Couchbase cluster into https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#implicit-maintenance-mode-deactivation[_maintenance mode_^] during rebalance operations. +The _Couchbase Stabilization Period_ is an internal safety mechanism provided by the Kubernetes Operator that is meant to help prevent the types of over-scaling caused by metrics instability during rebalance. +When the Couchbase Stabilization Period is specified, the Kubernetes Operator will put _all_ {HorizontalPodAutoscaler} resources associated with the Couchbase cluster into https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#implicit-maintenance-mode-deactivation[_maintenance mode_^] during rebalance operations. When in maintenance mode, the Horizontal Pod Autoscaler will not monitor targeted metrics, and therefore will stop making scaling recommendations. Once the rebalance operation is complete, the Horizontal Pod Autoscaler will remain in maintenance mode for the duration of the stabilization period, after which it will resume monitoring metrics. @@ -580,7 +580,7 @@ $ kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 ---- If you receive a `NotFound` error then you will need to install a custom metrics service. -The recommended custom metrics service to use with the Autonomous Operator is the https://github.com/DirectXMan12/k8s-prometheus-adapter[Prometheus Adapter^]. +The recommended custom metrics service to use with the Kubernetes Operator is the https://github.com/DirectXMan12/k8s-prometheus-adapter[Prometheus Adapter^]. When performing auto-scaling based on Couchbase Server metrics, the discovery of available metrics can be performed through Prometheus queries that are beyond the scope of this document. However, the Couchbase Server docs contain a https://docs.couchbase.com/server/current/metrics-reference/metrics-reference.html[list of the Couchbase metrics available^]. diff --git a/modules/ROOT/pages/concept-couchbase-logging.adoc b/modules/ROOT/pages/concept-couchbase-logging.adoc index f888cef2..b6cc819b 100644 --- a/modules/ROOT/pages/concept-couchbase-logging.adoc +++ b/modules/ROOT/pages/concept-couchbase-logging.adoc @@ -24,7 +24,7 @@ By default, Couchbase cluster deployments process logs within the Couchbase Serv When a Couchbase cluster deployment is configured to use xref:concept-persistent-volumes.adoc[persistent volumes] -- as is xref:best-practices.adoc#storage[recommended] for all production deployments -- log files are written to either the `default` or `logs` volume. When using default logging, logs cannot be collected from the Couchbase Server container's standard console output, as is https://kubernetes.io/docs/concepts/cluster-administration/logging/[typical^] in Kubernetes environments. -Instead, the Autonomous Operator package is distributed with a support tool -- xref:tools/cao.adoc[`cao`] -- which can be used to collect a log snapshot at any time. +Instead, the Kubernetes Operator package is distributed with a support tool -- xref:tools/cao.adoc[`cao`] -- which can be used to collect a log snapshot at any time. This tool is often used for collecting resources, logs, and events from the Kubernetes cluster for use in Couchbase Support requests. It is also capable of collecting just Couchbase-related logs via its `--collectinfo` option. @@ -39,19 +39,19 @@ To avoid these limitations, you can choose to configure <>. -Although Couchbase Server doesn't natively support log forwarding, the Autonomous Operator can optionally deploy and manage a third-party log processor on each Couchbase pod that enables Couchbase Server logs to be forwarded to the log processor's standard console output as well as other destinations. +Although Couchbase Server doesn't natively support log forwarding, the Kubernetes Operator can optionally deploy and manage a third-party log processor on each Couchbase pod that enables Couchbase Server logs to be forwarded to the log processor's standard console output as well as other destinations. Forwarding logs to standard console output is desirable since it allows for https://kubernetes.io/docs/tasks/debug-application-cluster/debug-running-pod/#examine-pod-logs[simple debugging^] and standards-based integration with centralized log management systems running in the Kubernetes cluster. === How Log Forwarding Works There are two primary components that provide log forwarding: -. A _log processor image_ is used by the Autonomous Operator to deploy the `logging` sidecar container onto each Couchbase Server pod. +. A _log processor image_ is used by the Kubernetes Operator to deploy the `logging` sidecar container onto each Couchbase Server pod. The log processor reads the logs that Couchbase Server has written to a persistent volume, processes them, and then forwards them to a destination such as standard console output. . The _log forwarding configuration_, stored in a Kubernetes Secret, that gets consumed by the `logging` sidecar container and which controls its behavior. -When log forwarding is enabled, the Autonomous Operator uses Couchbase-provided <> for both of these components. +When log forwarding is enabled, the Kubernetes Operator uses Couchbase-provided <> for both of these components. [NOTE] ==== @@ -72,12 +72,12 @@ image::logging-sidecar-overview.png[] === About the Default Log Forwarding Image and Configuration Log forwarding can be enabled via the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification (it is _disabled_ by default). -When log forwarding is enabled, the Autonomous Operator defaults to a Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[_log processor image_^] that is based on https://fluentbit.io/[Fluent Bit^]. -The Autonomous Operator also automatically deploys a default _log forwarding configuration_ in the form of a Kubernetes Secret that gets consumed by the `logging` sidecar container. +When log forwarding is enabled, the Kubernetes Operator defaults to a Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[_log processor image_^] that is based on https://fluentbit.io/[Fluent Bit^]. +The Kubernetes Operator also automatically deploys a default _log forwarding configuration_ in the form of a Kubernetes Secret that gets consumed by the `logging` sidecar container. The default, Couchbase-supplied log processor image provides several benefits, such as built-in _parsers_, _filters_, and optional log _redaction_ (another type of filtering), as well as the ability to restart Fluent Bit without having to restart the entire pod, thus providing better performance and higher availability than the standard Fluent Bit image. -The built-in parsers and filters are stored in individual configuration files, which are then combined to provide the default https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/configuration-file[_main configuration_^] deployed by the Autonomous Operator. -Alternatively, these built-in parsers and filters can be selectively invoked by a custom, user-supplied main configuration that can be used instead of the default one provided by the Autonomous Operator. +The built-in parsers and filters are stored in individual configuration files, which are then combined to provide the default https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/configuration-file[_main configuration_^] deployed by the Kubernetes Operator. +Alternatively, these built-in parsers and filters can be selectively invoked by a custom, user-supplied main configuration that can be used instead of the default one provided by the Kubernetes Operator. The default log forwarding configuration outputs log events to the `logging` container's standard console output. However, a custom configuration can include more than one output, allowing specific logs to be https://docs.fluentbit.io/manual/concepts/data-pipeline/router[routed^] to different -- even multiple -- destinations. diff --git a/modules/ROOT/pages/concept-couchbase-networking.adoc b/modules/ROOT/pages/concept-couchbase-networking.adoc index 304c1f94..84d4a0c0 100644 --- a/modules/ROOT/pages/concept-couchbase-networking.adoc +++ b/modules/ROOT/pages/concept-couchbase-networking.adoc @@ -221,7 +221,7 @@ However, if you are running Sync Gateway on the same Kubernetes cluster as Couch | ⚠️ Yes |=== -In <> above, the *Relationship to Cluster* column indicates the location of the Sync Gateway cluster in relation to the Couchbase cluster that is being managed by the Autonomous Operator. *_Local_* refers to instances where Sync Gateway is deployed in the same Kubernetes cluster where Couchbase Server is running (see <> and <>). +In <> above, the *Relationship to Cluster* column indicates the location of the Sync Gateway cluster in relation to the Couchbase cluster that is being managed by the Kubernetes Operator. *_Local_* refers to instances where Sync Gateway is deployed in the same Kubernetes cluster where Couchbase Server is running (see <> and <>). *_Remote_* refers to instances where Sync Gateway is deployed outside of the Kubernetes cluster where Couchbase Server is running (see <>). * Sync Gateway 2.8.2 and higher do not experience any connection issues related to exposed features as these versions have full support for DNS SRV lookup _and_ support explicit network selection. diff --git a/modules/ROOT/pages/concept-kubernetes-networking.adoc b/modules/ROOT/pages/concept-kubernetes-networking.adoc index e77b612f..85de90cd 100644 --- a/modules/ROOT/pages/concept-kubernetes-networking.adoc +++ b/modules/ROOT/pages/concept-kubernetes-networking.adoc @@ -77,7 +77,7 @@ image:NetworkDocsRouted-Overlay.png["Overlay network architecture"] Istio is currently the only supported service mesh. -Use of service meshes should, for the most part, be transparent to the Autonomous Operator and Couchbase cluster, however there are a few things to be aware of: +Use of service meshes should, for the most part, be transparent to the Kubernetes Operator and Couchbase cluster, however there are a few things to be aware of: * Dynamic Admission Controller Considerations @@ -87,11 +87,11 @@ Use of service meshes should, for the most part, be transparent to the Autonomou * Couchbase Cluster Considerations -** The service mesh must be enabled in the namespace before you install the Autonomous Operator and provision any Couchbase clusters. -** You cannot enable/disable a service mesh in a namespace where an Autonomous Operator deployment is already running. +** The service mesh must be enabled in the namespace before you install the Kubernetes Operator and provision any Couchbase clusters. +** You cannot enable/disable a service mesh in a namespace where an Kubernetes Operator deployment is already running. This is especially true of migration to strict mTLS as Couchbase cluster nodes will not be able to communicate with one another during the upgrade. While an upgrade to permissive mTLS may work, it has not been tested, therefore is unsupported. -** You should not configure the Autonomous Operator to use TLS if the service mesh is already providing an mTLS transport. +** You should not configure the Kubernetes Operator to use TLS if the service mesh is already providing an mTLS transport. ** IP-based networking should not be used with strict mTLS. ** In order to establish connections between a client and server when strict mTLS is enabled, both the client and server need to be running with an Envoy proxy, and be part of the same Istio control plane. For this reason, clients and XDCR connections originating from outside of the Kubernetes cluster must connect to a Couchbase cluster with either no or permissive mTLS. @@ -137,7 +137,7 @@ Each network plugin may have its own way of configuring the network policy or us For the purposes of this documentation we only reference the default Kubernetes configuration to allow it to be reused or translated to the specific implementation required. For more secure deployments, the typical approach is to have a https://kubernetes.io/docs/concepts/services-networking/network-policies/#default-deny-all-ingress-and-all-egress-traffic[deny-all traffic that is not approved^] within a namespace. -If this is the case then the following rules need to be implemented to allow Couchbase Server and Couchbase Autonomous Operator to correctly function. +If this is the case then the following rules need to be implemented to allow Couchbase Server and Couchbase Kubernetes Operator to correctly function. .Network Policy Rules * DNS resolution must be possible, typically by enabling port 53 traffic although this can be constrained to the DNS deployment namespace and/or pods as required. @@ -152,7 +152,7 @@ If this is the case then the following rules need to be implemented to allow Cou * SDKs require traffic to be allowed from their location to the Couchbase Server pods, primarily they use ports 8091/18091 and 11210/11207 for bootstrapping. ** This will be specific to the SDK used but each SDK has a https://docs.couchbase.com/go-sdk/current/howtos/managing-connections.html[managing connections] page. -The recommendation would be deploy Couchbase Server and Couchbase Autonomous Operator within a dedicated namespace and allow internal traffic within it. +The recommendation would be deploy Couchbase Server and Couchbase Kubernetes Operator within a dedicated namespace and allow internal traffic within it. The limited external ingress and egress required can then be added as well. It may be good to start with this approach and then lock it down as required or to aid with debugging any issues found. diff --git a/modules/ROOT/pages/concept-label-selection.adoc b/modules/ROOT/pages/concept-label-selection.adoc index d1c8ba67..320161f9 100644 --- a/modules/ROOT/pages/concept-label-selection.adoc +++ b/modules/ROOT/pages/concept-label-selection.adoc @@ -1,23 +1,23 @@ = Couchbase Resource Label Selection [abstract] -The Autonomous Operator manages a Couchbase deployment by aggregating many different types of Kubernetes custom resources. -By labeling resources, the Autonomous Operator knows which resources to select and aggregate into a logical configuration. +The Kubernetes Operator manages a Couchbase deployment by aggregating many different types of Kubernetes custom resources. +By labeling resources, the Kubernetes Operator knows which resources to select and aggregate into a logical configuration. == Overview The `CouchbaseCluster` resource does not contain a single, monolithic configuration for an entire Couchbase cluster. -Instead, configurations for things like buckets, replications, users, etc. are defined as separate resources, which the Autonomous Operator then selects and aggregates into a logical configuration. +Instead, configurations for things like buckets, replications, users, etc. are defined as separate resources, which the Kubernetes Operator then selects and aggregates into a logical configuration. (One of the main reasons for this design is to allow for xref:concept-rbac.adoc[custom resource RBAC].) -All of the Couchbase resources outside of the main `CouchbaseCluster` type are collected by the Autonomous Operator using a list operation in the namespace of the Couchbase cluster. +All of the Couchbase resources outside of the main `CouchbaseCluster` type are collected by the Kubernetes Operator using a list operation in the namespace of the Couchbase cluster. The list operation is optionally supplied with a user-defined _label selector_. Any resource that has the same set of _labels_ that match the label selector of a `CouchbaseCluster` resource will be aggregated. == Default Selection Behavior Let's take the `CouchbaseBucket` resource for example. -By default, when bucket management is enabled in the `CouchbaseCluster`, but no label selector is defined, the Autonomous Operator will select and aggregate any "label-less" bucket resources for management on the cluster. +By default, when bucket management is enabled in the `CouchbaseCluster`, but no label selector is defined, the Kubernetes Operator will select and aggregate any "label-less" bucket resources for management on the cluster. Refer to diagram below: [#image-buckets-single-cluster-no-label] @@ -25,7 +25,7 @@ Refer to diagram below: image::selection-default.png[] This default arrangement is well suited for when a single `CouchbaseCluster` resource is deployed in a single namespace. -However, when _multiple_ `CouchbaseCluster` resources are deployed in the same namespace, this arrangement results in the Autonomous Operator selecting and aggregating all `CouchbaseBucket` resources to all `CouchbaseCluster` resources -- meaning that each cluster would be managing the same buckets. +However, when _multiple_ `CouchbaseCluster` resources are deployed in the same namespace, this arrangement results in the Kubernetes Operator selecting and aggregating all `CouchbaseBucket` resources to all `CouchbaseCluster` resources -- meaning that each cluster would be managing the same buckets. Refer to diagram below: [#image-buckets-multi-cluster-no-label] @@ -34,7 +34,7 @@ image::selection-default-shared.png[] While you might desire the sharing of resources for the purposes of reducing configuration overhead, it can lead to surprising outcomes if you are not aware of the underlying selection algorithm. For this reason, it is recommended that you specify explicit labels for resources, along with their corresponding label selectors for `CouchbaseCluster` resources. -This ensures that the Autonomous Operator will only select and aggregate the appropriate resource for each cluster. +This ensures that the Kubernetes Operator will only select and aggregate the appropriate resource for each cluster. == Using Resource Labels @@ -68,7 +68,7 @@ metadata: cluster: my-cluster ---- -The reason for defining the label selector first is that without a label selector defined, the Autonomous Operator will immediately aggregate any unlabeled resources to the `CouchbaseCluster` once it's deployed. +The reason for defining the label selector first is that without a label selector defined, the Kubernetes Operator will immediately aggregate any unlabeled resources to the `CouchbaseCluster` once it's deployed. As discussed in the previous section, this can have deleterious effects if you have more than one `CouchbaseCluster` resource already deployed in the same namespace. However, by deploying the `CouchbaseCluster` resource with the bucket label selector `cluster: my-cluster` in this example, you can ensure that the cluster will only select `CouchbaseBucket` resources that have the matching `cluster: my-cluster` label. diff --git a/modules/ROOT/pages/concept-memory-allocation.adoc b/modules/ROOT/pages/concept-memory-allocation.adoc index 0ead224d..d7c79ef6 100644 --- a/modules/ROOT/pages/concept-memory-allocation.adoc +++ b/modules/ROOT/pages/concept-memory-allocation.adoc @@ -2,10 +2,10 @@ [abstract] Couchbase memory allocation is configured in the `CouchbaseCluster` resource. -It's important to understand how memory allocation works in Couchbase Server, and how it applies to deployments using the Autonomous Operator. +It's important to understand how memory allocation works in Couchbase Server, and how it applies to deployments using the Kubernetes Operator. Kubernetes presents some unique challenges when it comes to allocating memory for Couchbase Server. -This page discusses the various Couchbase memory allocation settings presented by the Autonomous Operator, what they actually mean, and how they should be used optimally in your deployment. +This page discusses the various Couchbase memory allocation settings presented by the Kubernetes Operator, what they actually mean, and how they should be used optimally in your deployment. == Memory Quota Basics @@ -13,7 +13,7 @@ In Couchbase Server, memory is allocated _per node_, with each service having it Once you specify the memory quota for a particular Couchbase service, an amount of memory equal to the quota will be reserved on each Couchbase cluster node where an instance of that service exists. Note that instances of the same service cannot have different memory allocations within a cluster. -For deployments using the Autonomous Operator, memory quotas are configured in the `CouchbaseCluster` resource. +For deployments using the Kubernetes Operator, memory quotas are configured in the `CouchbaseCluster` resource. Consider the following cluster of three nodes, with each node running all services: [#image-cluster-homogeneous-service-distribution] @@ -26,7 +26,7 @@ You'll notice that the Query service is not pictured in <> using the Autonomous Operator, the `CouchbaseCluster` configuration would include the following: +When deploying the cluster in <> using the Kubernetes Operator, the `CouchbaseCluster` configuration would include the following: .Cluster with homogeneous service distribution [#cluster-homogeneous-service-distribution] @@ -55,7 +55,7 @@ spec: [NOTE] ==== -The memory quotas from the configuration above are the defaults that the Autonomous Operator will use if none are specified. +The memory quotas from the configuration above are the defaults that the Kubernetes Operator will use if none are specified. The defaults are the lowest allowed and almost certainly will need modification for your specific workload. ==== @@ -102,7 +102,7 @@ Consider the following cluster of four nodes: .Cluster with heterogeneous service distribution image::memory-allocation-Heterogeneous.png[] -When deploying the cluster in <> using the Autonomous Operator, the `CouchbaseCluster` configuration would include the following: +When deploying the cluster in <> using the Kubernetes Operator, the `CouchbaseCluster` configuration would include the following: .Cluster with heterogeneous service distribution [#cluster-heterogeneous-service-distribution] @@ -156,7 +156,7 @@ When setting memory quotas for your cluster, you'll need to consider the memory If a Couchbase Server Pod has a total memory quota that is greater than 90% of the Kubernetes node's overall memory, Couchbase Server will produce an error. However, since the application's memory requirements can vary by workload, it's generally recommended that Couchbase Server Pods reserve 25% more memory on top of their total memory quota (especially if the Pod is running the Data service). -When a Couchbase cluster is deployed by the Autonomous Operator, each server Pod is scheduled onto its own dedicated Kubernetes node (recommended), or onto a shared Kubernetes node with other Pods. +When a Couchbase cluster is deployed by the Kubernetes Operator, each server Pod is scheduled onto its own dedicated Kubernetes node (recommended), or onto a shared Kubernetes node with other Pods. Depending on whether your Kubernetes nodes are dedicated or shared, there are slightly different considerations for when you go about setting memory quotas for Couchbase Pods. For shared nodes, you'll be using pod resource requests with the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-resources[`couchbaseclusters.spec.servers.resources`] attribute for each server in the `CouchbaseCluster` configuration. @@ -187,7 +187,7 @@ Modification of memory allocation will cause an upgrade of the affected pods. [IMPORTANT] ==== It is dangerous to change both a memory quota and the resource request at the same time. -Changing both parameters, the resource request and a quota to take advantage of the new request, at the same time could potentially lead to the Couchbase Autonomous Operator performing a swap/rebalance of all nodes in the cluster. +Changing both parameters, the resource request and a quota to take advantage of the new request, at the same time could potentially lead to the Couchbase Kubernetes Operator performing a swap/rebalance of all nodes in the cluster. This is due to the order in which these changes may be applied. If the quota modification gets applied before the new resource request, the memory will not be available for the pod, precipitating operator to create a new pod. To prevent this, change the resource request first, then apply the quota modification. diff --git a/modules/ROOT/pages/concept-operator-logging.adoc b/modules/ROOT/pages/concept-operator-logging.adoc index 62be015e..4c577cfe 100644 --- a/modules/ROOT/pages/concept-operator-logging.adoc +++ b/modules/ROOT/pages/concept-operator-logging.adoc @@ -1,19 +1,19 @@ -= Autonomous Operator Logging += Kubernetes Operator Logging [abstract] -The Autonomous Operator provides flexible logging support to enable failure detection and alerting. +The Kubernetes Operator provides flexible logging support to enable failure detection and alerting. The Operator provides flexible logging support to enable failure detection and alerting. It is also a key resource when submitting a support request with the xref:tools/cbopinfo.adoc[`cbopinfo`] tool. -This page describes logging that is specific to the Autonomous Operator itself. +This page describes logging that is specific to the Kubernetes Operator itself. For information about Couchbase cluster logging, refer to xref:concept-couchbase-logging.adoc[]. == Overview -The Autonomous Operator xref:howto-manage-operator-logging.adoc[emits logs] on the pod console. +The Kubernetes Operator xref:howto-manage-operator-logging.adoc[emits logs] on the pod console. Logs are structured as JSON with one entry per line, thus providing a simple and stable foundation for machine parsing and ingestion into 3rd-party logging databases. -.Example of Autonomous Operator Logs +.Example of Kubernetes Operator Logs [source,json] ---- {"level":"info","ts":1580377225.2966235,"logger":"couchbaseutil","msg":"Cluster status","cluster":"default/cb-example","balance":"balanced","rebalancing":false} diff --git a/modules/ROOT/pages/concept-platform-certification.adoc b/modules/ROOT/pages/concept-platform-certification.adoc index 8d3ff5a9..6be074f0 100644 --- a/modules/ROOT/pages/concept-platform-certification.adoc +++ b/modules/ROOT/pages/concept-platform-certification.adoc @@ -2,7 +2,7 @@ :stem: [abstract] -Certifying your platform for use with Couchbase Autonomous Operator. +Certifying your platform for use with Couchbase Kubernetes Operator. == Why Self-Certify? @@ -66,7 +66,7 @@ Additionally, to test platform behavior, the self-certification image will need == What is the Self-Certification Lifecycle Process? -Couchbase Operator Self-Certification Lifecycle is a self-service offering with an easy, step-by-step process to validate the compatibility of Kubernetes platforms and other platform-specific components such as storage and networking with Autonomous Operator. +Couchbase Operator Self-Certification Lifecycle is a self-service offering with an easy, step-by-step process to validate the compatibility of Kubernetes platforms and other platform-specific components such as storage and networking with Kubernetes Operator. The certification workflows consist of the following steps: @@ -74,7 +74,7 @@ The certification workflows consist of the following steps: . Configure the Kubernetes platform and other platform-specific components such as storage and networking correctly. -. Run the Operator Self-Certification Tool (shipped with Couchbase Autonomous Operator 2.3 and above). +. Run the Operator Self-Certification Tool (shipped with Couchbase Kubernetes Operator 2.3 and above). . Submit the results to Couchbase for approval. diff --git a/modules/ROOT/pages/concept-pod-templating.adoc b/modules/ROOT/pages/concept-pod-templating.adoc index 563c75b4..fb5b6117 100644 --- a/modules/ROOT/pages/concept-pod-templating.adoc +++ b/modules/ROOT/pages/concept-pod-templating.adoc @@ -1,28 +1,28 @@ = Couchbase Pod Templating [abstract] -The Autonomous Operator allows users to define a pod template to use when creating pods for a Couchbase Server class. +The Kubernetes Operator allows users to define a pod template to use when creating pods for a Couchbase Server class. Modifying pod metadata such as labels and annotations will update the pod in-place. Any other modification will result in a cluster upgrade in order to fulfill the request. The Operator reserves the right to modify or replace any field. == Operators Attribute Modifications -Some of the attributes in the pod template are overridden by the Autonomous Operator. The following attributes are overridden: +Some of the attributes in the pod template are overridden by the Kubernetes Operator. The following attributes are overridden: === Metadata -* `metadata.name` - The name of the pod is overridden by the Autonomous Operator. -* `metadata.labels` - The Autonomous Operator adds labels to the pod to identify the pod as part of a operator managed Couchbase cluster. -* `metadata.annotaions` - The Autonomous Operator adds annotations to the pod to identify the pod as part of a operator managed Couchbase cluster. +* `metadata.name` - The name of the pod is overridden by the Kubernetes Operator. +* `metadata.labels` - The Kubernetes Operator adds labels to the pod to identify the pod as part of a operator managed Couchbase cluster. +* `metadata.annotaions` - The Kubernetes Operator adds annotations to the pod to identify the pod as part of a operator managed Couchbase cluster. === Spec -* `spec.containers` - The Autonomous Operator overrides any containers to run the Couchbase Server process and any other required containers. -* `spec.restartPolicy` - The Autonomous Operator overrides the restart policy to `Never`. -* `spec.hostname` - The Autonomous Operator overrides the hostname to the pod name. -* `spec.subdomain` - The Autonomous Operator overrides the subdomain to the cluster name. -* `spec.terminationGracePeriodSeconds` - The Autonomous Operator overrides the termination grace period to 1200 seconds. -* `spec.securityContext` - The Autonomous Operator overrides the security context to the security context provided in `cluster.spec.security.podSecurityContext`. -* `spec.readinessGates` - The Autonomous Operator overrides the readiness gates to manage the readiness of the pods. -* `spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution` - The Autonomous Operator adds a pod anti-affinity rule to ensure that pods are not scheduled on the same node if `cluster.spec.antiAffinity` is set to `true`. -* `spec.nodeSelector` - The Autonomous Operator adds a node selector to ensure that pods are scheduled on the correct Availability Zone if they are enabled for the pods server class. -* `spec.hostAliases` - The Autonomous Operator overrides any host aliases to map `127.0.0.1` to `localhost` the pod DNS name, unless istio mode is enabled. -* `spec.volumes` - The Autonomous Operator adds any required volumes to the pod. +* `spec.containers` - The Kubernetes Operator overrides any containers to run the Couchbase Server process and any other required containers. +* `spec.restartPolicy` - The Kubernetes Operator overrides the restart policy to `Never`. +* `spec.hostname` - The Kubernetes Operator overrides the hostname to the pod name. +* `spec.subdomain` - The Kubernetes Operator overrides the subdomain to the cluster name. +* `spec.terminationGracePeriodSeconds` - The Kubernetes Operator overrides the termination grace period to 1200 seconds. +* `spec.securityContext` - The Kubernetes Operator overrides the security context to the security context provided in `cluster.spec.security.podSecurityContext`. +* `spec.readinessGates` - The Kubernetes Operator overrides the readiness gates to manage the readiness of the pods. +* `spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution` - The Kubernetes Operator adds a pod anti-affinity rule to ensure that pods are not scheduled on the same node if `cluster.spec.antiAffinity` is set to `true`. +* `spec.nodeSelector` - The Kubernetes Operator adds a node selector to ensure that pods are scheduled on the correct Availability Zone if they are enabled for the pods server class. +* `spec.hostAliases` - The Kubernetes Operator overrides any host aliases to map `127.0.0.1` to `localhost` the pod DNS name, unless istio mode is enabled. +* `spec.volumes` - The Kubernetes Operator adds any required volumes to the pod. diff --git a/modules/ROOT/pages/concept-rbac.adoc b/modules/ROOT/pages/concept-rbac.adoc index 6ea595b2..466b5829 100644 --- a/modules/ROOT/pages/concept-rbac.adoc +++ b/modules/ROOT/pages/concept-rbac.adoc @@ -1,7 +1,7 @@ = Couchbase Resource RBAC [abstract] -The Autonomous Operator manages many different types of Kubernetes custom resources, giving you the ability to control access to your Couchbase deployments based on which resource type each user should have access to. +The Kubernetes Operator manages many different types of Kubernetes custom resources, giving you the ability to control access to your Couchbase deployments based on which resource type each user should have access to. == Overview diff --git a/modules/ROOT/pages/concept-scheduling.adoc b/modules/ROOT/pages/concept-scheduling.adoc index 08ab5541..a36f32b3 100644 --- a/modules/ROOT/pages/concept-scheduling.adoc +++ b/modules/ROOT/pages/concept-scheduling.adoc @@ -26,7 +26,7 @@ In a Kubernetes cluster dedicated to a single Couchbase cluster deployment, enab Anti-affinity does not prevent distinct Couchbase clusters from being scheduled on the same Kubernetes nodes. Neither does it prevent Couchbase clusters from being scheduled alongside other applications that may interfere with them. -The Autonomous Operator offers two parameters that can be used in concert to guarantee workload isolation. +The Kubernetes Operator offers two parameters that can be used in concert to guarantee workload isolation. === Taints and Tolerations diff --git a/modules/ROOT/pages/concept-tls.adoc b/modules/ROOT/pages/concept-tls.adoc index be7cce31..9aa3fbbd 100644 --- a/modules/ROOT/pages/concept-tls.adoc +++ b/modules/ROOT/pages/concept-tls.adoc @@ -190,7 +190,7 @@ Determining a full proof way to completely obfuscate the passphrase is beyond th === Securing Local Scripts -When script passphrase registration is configured, the Autonomous Operator employs additional security measures to ensure that script creation and execution cannot be compromised by any external parties. +When script passphrase registration is configured, the Kubernetes Operator employs additional security measures to ensure that script creation and execution cannot be compromised by any external parties. Therefore, the user only needs to provide a passphrase secret while the Operator internally creates the passphrase script and mounts it into each of the Couchbase Server Pods. The Operator also mounts another private key into Couchbase Server in order to securely transfer the passphrase to Couchbase for on-demand use rather than statically mounting the passphrase in the Server Pod alongside the encrypted key. The overall design is as follows: diff --git a/modules/ROOT/pages/concept-user-rbac.adoc b/modules/ROOT/pages/concept-user-rbac.adoc index d03963d8..4b2dd74f 100644 --- a/modules/ROOT/pages/concept-user-rbac.adoc +++ b/modules/ROOT/pages/concept-user-rbac.adoc @@ -1,7 +1,7 @@ = Couchbase User RBAC [abstract] -The Couchbase Autonomous Operator manages Couchbase Role-Based Access Control (RBAC) for the authorization of administrative users and groups. +The Couchbase Kubernetes Operator manages Couchbase Role-Based Access Control (RBAC) for the authorization of administrative users and groups. == Overview @@ -12,7 +12,7 @@ The `CouchbaseGroup` resource contains a set of roles that are to be applied to .Basic User Role Binding image::user-binding-default.png[] -The Autonomous Operator only creates users that are bound to groups. +The Kubernetes Operator only creates users that are bound to groups. Therefore, all three resources are required in order to create an authorized user. == User Role Binding @@ -48,7 +48,7 @@ a| * **security_admin:** Management of user roles The `CouchbaseGroup` represents a collection of administrative and bucket roles which can be applied to users. There is a direct association between the `CouchbaseGroup` resource and xref:server:learn:security/authorization-overview.adoc[Couchbase Server RBAC groups] such that Couchbase Server RBAC groups are created and deleted when corresponding `CouchbaseGroup` resources are created and deleted. -Whenever users are bound to a group, the Autonomous Operator ensures that the corresponding Couchbase Server RBAC group exists with the requested roles, and then proceeds to add the requested users to the group. +Whenever users are bound to a group, the Kubernetes Operator ensures that the corresponding Couchbase Server RBAC group exists with the requested roles, and then proceeds to add the requested users to the group. === Setting Roles @@ -111,7 +111,7 @@ Multiple Buckets, Scopes and Collections can be specified. However, `CouchbaseS === Referencing LDAP Groups Couchbase Server provides LDAP integration which allows external user authentication. -The Autonomous Operator can be used to enable this functionality when an `ldapGroupRef` is specified within the `CouchbaseGroup` resource. +The Kubernetes Operator can be used to enable this functionality when an `ldapGroupRef` is specified within the `CouchbaseGroup` resource. [source,yaml] ---- @@ -180,7 +180,7 @@ metadata: ---- Note that `CouchbaseRoleBinding` resources don't support labels and don't directly utilize label selection. -Instead, the Autonomous Operator looks at the names of the users and groups specified in the `CouchbaseRoleBinding` resource. +Instead, the Kubernetes Operator looks at the names of the users and groups specified in the `CouchbaseRoleBinding` resource. If those names match the `CouchbaseUser` and `CouchbaseGroup` resources that are both being selected by the same cluster, then they will be bound together. Therefore, so long as the `CouchbaseUser` and `CouchbaseGroup` resources have the same label, the users and groups specified in the `CouchbaseRoleBinding` resource will be bound together. diff --git a/modules/ROOT/pages/helm-couchbase-config.adoc b/modules/ROOT/pages/helm-couchbase-config.adoc index 1c12fde5..d2409c73 100644 --- a/modules/ROOT/pages/helm-couchbase-config.adoc +++ b/modules/ROOT/pages/helm-couchbase-config.adoc @@ -2,7 +2,7 @@ include::partial$constants.adoc[] [abstract] -The official Couchbase Helm Chart for the Autonomous Operator comes with a default configuration that can be customized to fit your deployment needs. +The official Couchbase Helm Chart for the Kubernetes Operator comes with a default configuration that can be customized to fit your deployment needs. This page describes the parameters of the official Couchbase Helm Chart. In particular, this page describes the contents of the chart's https://github.com/couchbase-partners/helm-charts/blob/master/charts/couchbase-operator/values.yaml[values.yaml^], which contains the chart's default values. @@ -62,7 +62,7 @@ The Couchbase Chart is capable of installing the Operator, Admission Controller, [#install] === `couchbaseOperator` -This field specifies whether or not the Couchbase Autonomous Operator will be installed. +This field specifies whether or not the Couchbase Kubernetes Operator will be installed. [cols="1",options="header"] |=== @@ -513,7 +513,7 @@ The search domains to use when looking up hostnames _Value rules:_ The `coredns.searches` value is an optional list of strings. -== Autonomous Operator +== Kubernetes Operator The Helm chart deploys the Operator as a Kubernetes https://kubernetes.io/docs/concepts/workloads/controllers/deployment/[Deployment]. diff --git a/modules/ROOT/pages/helm-managing-guide.adoc b/modules/ROOT/pages/helm-managing-guide.adoc index 296e24c0..c5155ae4 100644 --- a/modules/ROOT/pages/helm-managing-guide.adoc +++ b/modules/ROOT/pages/helm-managing-guide.adoc @@ -7,7 +7,7 @@ You can manage the release by updating, upgrading, or uninstalling it. When you install a Helm chart, the Helm client creates an instance of the chart in your Kubernetes cluster. This instance is called a _release_, and Helm uses it to manage all of the objects and resources that the chart creates. -When you deploy the Autonomous Operator or another component via the Couchbase Helm Chart, you will manage the deployed resources by making updates to the release in Helm. +When you deploy the Kubernetes Operator or another component via the Couchbase Helm Chart, you will manage the deployed resources by making updates to the release in Helm. The sections on this page describe how to manage the Helm releases that make up your deployments. @@ -31,9 +31,9 @@ This is to ensure that Helm can continue to update and manage all resources appr == Upgrade a Deployment -=== Upgrading the Autonomous Operator +=== Upgrading the Kubernetes Operator -Upgrading the Autonomous Operator and Admission Controller to a newer version requires that you upgrade the _release_ to a newer version of its _chart_. +Upgrading the Kubernetes Operator and Admission Controller to a newer version requires that you upgrade the _release_ to a newer version of its _chart_. This allows Helm to ensure that all dependencies specified by the chart get updated appropriately. [IMPORTANT] @@ -65,7 +65,7 @@ Once the CRD upgrade is complete, then upgrade the chart version: helm upgrade --version {helm-repo} ---- -Where `` is the version of the Couchbase Helm Chart that you want to upgrade to, and `` is the name of the release that is managing the instance of the Autonomous Operator that you wish to upgrade. +Where `` is the version of the Couchbase Helm Chart that you want to upgrade to, and `` is the name of the release that is managing the instance of the Kubernetes Operator that you wish to upgrade. [WARNING] ==== @@ -87,11 +87,11 @@ If upgrade fails you will need to rebuild your cluster. ==== Limitations -* It is not possible to upgrade the 1.2.x Autonomous Operator chart to 2.x.x. -If you have a previous installation of the Autonomous Operator chart, you will need to <>, as well as delete the CRD. +* It is not possible to upgrade the 1.2.x Kubernetes Operator chart to 2.x.x. +If you have a previous installation of the Kubernetes Operator chart, you will need to <>, as well as delete the CRD. -* If you didn't originally install the Autonomous Operator using Helm, then you cannot upgrade the Autonomous Operator using Helm. -At this time, installations of the Autonomous Operator that weren't created with Helm cannot be ported over to using Helm. +* If you didn't originally install the Kubernetes Operator using Helm, then you cannot upgrade the Kubernetes Operator using Helm. +At this time, installations of the Kubernetes Operator that weren't created with Helm cannot be ported over to using Helm. === Upgrading a Couchbase Cluster @@ -102,7 +102,7 @@ The first method is preferred, since upgrading the entire chart will ensure that [IMPORTANT] ==== -When upgrading a Couchbase cluster, you should first upgrade the Autonomous Operator to the latest compatible version so as to ensure that the cluster can be properly managed. +When upgrading a Couchbase cluster, you should first upgrade the Kubernetes Operator to the latest compatible version so as to ensure that the cluster can be properly managed. ==== .To upgrade a Couchbase cluster by using a newer chart diff --git a/modules/ROOT/pages/helm-setup-guide.adoc b/modules/ROOT/pages/helm-setup-guide.adoc index f22071dc..146bcc97 100644 --- a/modules/ROOT/pages/helm-setup-guide.adoc +++ b/modules/ROOT/pages/helm-setup-guide.adoc @@ -2,17 +2,17 @@ include::partial$constants.adoc[] [abstract] -Use the official Couchbase Helm Chart to deploy multiple components, including the Autonomous Operator, Admission Controller, Couchbase clusters, and Sync Gateway. +Use the official Couchbase Helm Chart to deploy multiple components, including the Kubernetes Operator, Admission Controller, Couchbase clusters, and Sync Gateway. https://helm.sh/[Helm^] is a tool that streamlines the installation and management of applications on Kubernetes platforms. -The official Couchbase Helm Chart can help you easily set up the Couchbase Autonomous Operator and deploy Couchbase clusters. +The official Couchbase Helm Chart can help you easily set up the Couchbase Kubernetes Operator and deploy Couchbase clusters. -This page describes how to use the Couchbase Helm Chart to create various deployments of the Autonomous Operator, Admission Controller, Couchbase clusters, and Sync Gateway. +This page describes how to use the Couchbase Helm Chart to create various deployments of the Kubernetes Operator, Admission Controller, Couchbase clusters, and Sync Gateway. The Couchbase Helm Chart is primarily intended to make it easy to deploy with the defaults to get a working system in an empty cluster. For more complex scenarios, make sure to refer to the operator documentation as well, particularly the xref:concept-operator.adoc[operator architecture] and xref:reference-reference-architecture.adoc[reference architecture]. -A particular use case that is complex is upgrading so make sure to cover all the xref:howto-operator-upgrade.adoc[Autonomous Operator upgrade] and xref:concept-upgrade.adoc[Couchbase Server upgrade] sections. +A particular use case that is complex is upgrading so make sure to cover all the xref:howto-operator-upgrade.adoc[Kubernetes Operator upgrade] and xref:concept-upgrade.adoc[Couchbase Server upgrade] sections. The recommendation, for more complex scenarios, is to manage the operator directly rather than relying on Helm to do it as the operator provides a lot more direct control and this approach simplifies the upgrade process. @@ -46,7 +46,7 @@ helm repo update == Install the Couchbase Helm Chart Use the following commands to install the default Couchbase Helm Chart. -The default chart deploys the Autonomous Operator, the Admission Controller, and a Couchbase cluster. +The default chart deploys the Kubernetes Operator, the Admission Controller, and a Couchbase cluster. [{tabs}] @@ -104,13 +104,13 @@ helm install -f openshift_values.yaml {helm-repo} -- ==== -Installing the default chart provides a quick way to try out using the Autonomous Operator for managing Couchbase Server on Kubernetes platforms. +Installing the default chart provides a quick way to try out using the Kubernetes Operator for managing Couchbase Server on Kubernetes platforms. However, for more involved development and production use-cases, you will need to customize the installation to better your needs. [#custom-installation] == Customize the Installation -The Couchbase Helm Chart can be installed as-is for previewing Autonomous Operator functionality. +The Couchbase Helm Chart can be installed as-is for previewing Kubernetes Operator functionality. However, customizing the installation with your own configuration will be necessary for production environments. Customizing the chart installation allows you to do two things: @@ -118,7 +118,7 @@ Customizing the chart installation allows you to do two things: . Specify which components will be deployed . Configure the deployed components -The Couchbase Helm Chart is capable of installing and configuring the Autonomous Operator, Admission Controller, Couchbase cluster, and Sync Gateway. +The Couchbase Helm Chart is capable of installing and configuring the Kubernetes Operator, Admission Controller, Couchbase cluster, and Sync Gateway. Enabling and configuring each component is accomplished by https://helm.sh/docs/chart_template_guide/values_files/[overriding^] the default values in the Couchbase Helm Chart's xref:helm-couchbase-config.adoc[`values.yaml` file]. There are two methods for specifying overrides during chart installation: `--values` and `--set`. @@ -206,8 +206,8 @@ install: syncGateway: false ---- -For example, if you wanted to have a Helm release that exclusively managed the Autonomous Operator and Admission Controller, then you would override the value for `couchbaseCluster` with a value of `false`, leaving only `couchbaseOperator: true` and `admissionController: true`, and all others `false`. -Likewise, if you already had the Autonomous Operator and Admission Controller deployed in your environment, and you just wanted to deploy a Couchbase cluster, then you would override the values for `couchbaseOperator` and `admissionController` with a value of `false`, leaving only `couchbaseCluster: true`, and all others `false`. +For example, if you wanted to have a Helm release that exclusively managed the Kubernetes Operator and Admission Controller, then you would override the value for `couchbaseCluster` with a value of `false`, leaving only `couchbaseOperator: true` and `admissionController: true`, and all others `false`. +Likewise, if you already had the Kubernetes Operator and Admission Controller deployed in your environment, and you just wanted to deploy a Couchbase cluster, then you would override the values for `couchbaseOperator` and `admissionController` with a value of `false`, leaving only `couchbaseCluster: true`, and all others `false`. Even though the Couchbase Helm Chart has full configuration parameters for each component, if a component is disabled in the `install` section, then that component's configuration parameters are ignored. @@ -256,14 +256,14 @@ To change the type of service that is used to expose Sync Gateway, you can speci helm install mobile --set install.syncGateway=true --set syncGateway.config.use_tls_server=false --set syncGateway.exposeServiceType=LoadBalancer {helm-repo} ---- -For more information about using Sync Gateway with the Autonomous Operator, you can refer to the xref:tutorial-sync-gateway.adoc[Sync Gateway Tutorial]. +For more information about using Sync Gateway with the Kubernetes Operator, you can refer to the xref:tutorial-sync-gateway.adoc[Sync Gateway Tutorial]. [#deploy-production] == Production Considerations === TLS Encryption -Production deployments should enable TLS to encrypt traffic between the Autonomous Operator and the Couchbase cluster. +Production deployments should enable TLS to encrypt traffic between the Kubernetes Operator and the Couchbase cluster. TLS certificates can be auto-generated, or provided by the user. [#tls-certificate-gen] @@ -276,17 +276,17 @@ Install the chart with `tls` enabled: helm install my-release --set tls.generate=true {helm-repo} ---- -The Autonomous Operator will create the certificates and then configure them as Kubernetes Secrets for the cluster. +The Kubernetes Operator will create the certificates and then configure them as Kubernetes Secrets for the cluster. [NOTE] ==== -There is an issue (https://issues.couchbase.com/browse/K8S-1900[K8S-1900^]) that may cause a certificate error when using the Helm chart to upgrade the Autonomous Operator: +There is an issue (https://issues.couchbase.com/browse/K8S-1900[K8S-1900^]) that may cause a certificate error when using the Helm chart to upgrade the Kubernetes Operator: ---- certificate cannot be verified for zone ---- -This issue is caused by the certificate not having the necessary subject alternative names (SANs) required by the new version of the Autonomous Operator. +This issue is caused by the certificate not having the necessary subject alternative names (SANs) required by the new version of the Kubernetes Operator. To resolve this issue, start by regenerating the Secrets from the new chart version: @@ -304,7 +304,7 @@ Now update the Secrets in Kubernetes with the new ones: kubectl apply -f secrets.yaml ---- -The Autonomous Operator should now pick up the new certificates and proceed through the upgrade process. +The Kubernetes Operator should now pick up the new certificates and proceed through the upgrade process. ==== [#tls-certificate-byo] @@ -332,7 +332,7 @@ helm install my-release -f tls_values.yaml {helm-repo} === Deploying Multiple Chart Instances (Releases) The example installation commands on this page assume the default namespace is used (these commands don't specify the `-n` option). -This is important to note because the Couchbase Helm Chart deploys both the Autonomous Operator and the Admission Controller by default, _and these components should not be deployed more than once in the same namespace_. +This is important to note because the Couchbase Helm Chart deploys both the Kubernetes Operator and the Admission Controller by default, _and these components should not be deployed more than once in the same namespace_. _The Admission Controller should only be deployed once per Kubernetes cluster_ as indicated in <> and in the xref:concept-operator.adoc#dynamic-admission-controller[operator architecture]. To prevent deployment of the Admission Controller by the Couchbase Helm Chart, you can set the `install.admissionController=false` parameter either in the values file or on the command line: @@ -342,7 +342,7 @@ To prevent deployment of the Admission Controller by the Couchbase Helm Chart, y helm install my-release --set install.admissionController=false {helm-repo} ---- -If you install the default Couchbase Helm Chart multiple times in the same namespace, then you'll end up with multiple instances of the Autonomous Operator and the Admission Controller, which will cause errors in your deployments. +If you install the default Couchbase Helm Chart multiple times in the same namespace, then you'll end up with multiple instances of the Kubernetes Operator and the Admission Controller, which will cause errors in your deployments. In addition, the example installation commands on this page also specify `my-release` as the name for the https://helm.sh/docs/glossary/#release[chart release^]. If you plan to use Helm to install multiple instances (releases) of the Couchbase Helm Chart, you should consider giving each release a unique name to help you more easily identify the resources that are associated with each release. @@ -375,7 +375,7 @@ NAME CHART VERSION APP VERSION DES https://hub.helm.sh/charts/couchbase/couchbase-... 2.1.0 2.1.0 A Helm chart to deploy the Couchbase Autonomous... ---- -Here, the `CHART VERSION` is *2.1.0*, and the `APP VERSION` (the Autonomous Operator version) is *2.1.0*. +Here, the `CHART VERSION` is *2.1.0*, and the `APP VERSION` (the Kubernetes Operator version) is *2.1.0*. To install a specific version of the Couchbase Helm Chart chart, include the `--version` argument during installation: diff --git a/modules/ROOT/pages/howto-backup.adoc b/modules/ROOT/pages/howto-backup.adoc index ed9f6a67..46cf132b 100644 --- a/modules/ROOT/pages/howto-backup.adoc +++ b/modules/ROOT/pages/howto-backup.adoc @@ -3,14 +3,14 @@ include::partial$constants.adoc[] [abstract] -You can configure the Autonomous Operator to take periodic, automated backups of your Couchbase cluster with the existing functionality provided by `cbbackupmgr`, as well as being able to trigger automated immediate backups. +You can configure the Kubernetes Operator to take periodic, automated backups of your Couchbase cluster with the existing functionality provided by `cbbackupmgr`, as well as being able to trigger automated immediate backups. == Overview This page details how to backup a Couchbase cluster and restore data in the face of disaster. -A conceptual overview of using the Autonomous Operator to backup and restore Couchbase clusters can be found in xref:concept-backup.adoc[]. +A conceptual overview of using the Kubernetes Operator to backup and restore Couchbase clusters can be found in xref:concept-backup.adoc[]. -The Autonomous Operator supports two of the backup strategies available in `cbbackupmgr`: _Full Only_ and _Full/Incremental_. +The Kubernetes Operator supports two of the backup strategies available in `cbbackupmgr`: _Full Only_ and _Full/Incremental_. Complete descriptions and explanations of these strategies can be found in the xref:server:backup-restore:cbbackupmgr-strategies.adoc[`cbbackupmgr` documentation]. The examples on this page assume a backup schedule based on the _Full/Incremental_ strategy for both creating backups and performing restores. @@ -25,7 +25,7 @@ For further information about setting file system groups see the xref:concept-pe == Enable Automated Backup -In order for the Autonomous Operator to manage the automated backup of a cluster, the feature must be enabled in the `CouchbaseCluster` resource. +In order for the Kubernetes Operator to manage the automated backup of a cluster, the feature must be enabled in the `CouchbaseCluster` resource. [source,yaml,subs="attributes,verbatim"] ---- @@ -40,7 +40,7 @@ spec: <.> The only required field to enable automated backup is xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-backup-managed[`couchbaseclusters.spec.backup.managed`]. -<.> If the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-backup-image[`couchbaseclusters.spec.backup.image`] field is left unspecified, then it will be automatically populated with the most recent container image that was available when the installed version of the Autonomous Operator was released. +<.> If the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-backup-image[`couchbaseclusters.spec.backup.image`] field is left unspecified, then it will be automatically populated with the most recent container image that was available when the installed version of the Kubernetes Operator was released. The default image for open source Kubernetes comes from https://hub.docker.com/r/couchbase/operator-backup[Docker Hub^], and the default image for OpenShift comes from the https://access.redhat.com/containers/#/vendor/couchbase[Red Hat Container Catalog^]. + When running on Red Hat OpenShift, you will want to modify this to use the Red Hat Container Catalog image. @@ -96,15 +96,15 @@ spec: <1> Periodic backups require `spec.strategy` to be either `full_only` or `full_incremental` -<2> On detection of the `CouchbaseBackup` resource, the Autonomous Operator creates the correct cron jobs for the `spec.full.schedule` and the `spec.incremental.schedule`. +<2> On detection of the `CouchbaseBackup` resource, the Kubernetes Operator creates the correct cron jobs for the `spec.full.schedule` and the `spec.incremental.schedule`. In this example a full backup would be performed at 3:00AM on a Sunday and then an incremental backup on every other day of the week at 3:00AM. -<3> The Autonomous Operator will also create a PersistentVolumeClaim (PVC) to store the backups and logs with the same name that is specified in `metadata.name`. +<3> The Kubernetes Operator will also create a PersistentVolumeClaim (PVC) to store the backups and logs with the same name that is specified in `metadata.name`. So if a PVC called "my-backup" does not yet exist in this case, one will be created. This would also happen if for some reason the PVC was deleted. -An immediate backup can also be triggered immediately using `CouchbaseBackup` resources with the `immediate_full` or `immediate_incremental` strategies. When the Autonomous Operator detects `CouchbaseBackup` resource with either of these strategies it will attempt to trigger a backup Job immediately. The following is a simple configuration with the minimum required fields set to take an immediate backup. +An immediate backup can also be triggered immediately using `CouchbaseBackup` resources with the `immediate_full` or `immediate_incremental` strategies. When the Kubernetes Operator detects `CouchbaseBackup` resource with either of these strategies it will attempt to trigger a backup Job immediately. The following is a simple configuration with the minimum required fields set to take an immediate backup. [source,yaml] ---- @@ -229,7 +229,7 @@ spec: A `CouchbaseBackupRestore` resource behaves differently from a `CouchbaseBackup` resource in that it spawns just a singular, one-time job which attempts to restore the requested backup or range of backups. In the example above, the `CouchbaseBackupRestore` resource configuration is restoring the first backup in the repository `"cb-example-2020-02-12T19_00_03"`. -The first backup in any repository will be a full backup since the Autonomous Operator performs a full backup of the cluster after the creation of each backup repository. +The first backup in any repository will be a full backup since the Kubernetes Operator performs a full backup of the cluster after the creation of each backup repository. If you don't know the name of the backup repository that you want to restore from, you can find the name without having to explore the contents of a Persistent Volume Claim by simply referring to the xref:resource/couchbasebackup.adoc#couchbasebackups-status[`couchbasebackups.status`] object of the existing `CouchbaseBackup` resource. @@ -249,8 +249,8 @@ spec: str: latest ---- -In this example above, the Autonomous Operator would restore a range of backups from the latest backup repository. -The omission of the `spec.repo` field means that the Autonomous Operator will look for the most recent backup repository. +In this example above, the Kubernetes Operator would restore a range of backups from the latest backup repository. +The omission of the `spec.repo` field means that the Kubernetes Operator will look for the most recent backup repository. [IMPORTANT] ==== @@ -574,7 +574,7 @@ Attempts to edit things like the name or strategy will fail. [[online-backup-volume-resizing]] === Online Backup Volume Resizing -A Backup PVC that is referenced by an existing xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resource can be resized _manually_ by the user, or _automatically_ by the Autonomous Operator. +A Backup PVC that is referenced by an existing xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resource can be resized _manually_ by the user, or _automatically_ by the Kubernetes Operator. [IMPORTANT] ==== @@ -591,12 +591,12 @@ To perform a manual resize, simply edit xref:resource/couchbasebackup.adoc#couch The resize will then be performed with the next scheduled backup job. NOTE: The underlying StorageClass must be configured to allow volume expansion in order to modify the size of the Backup PVC (as stated <>). -Changes to the volume size may go through,but the Autonomous Operator will error until the change is reverted. +Changes to the volume size may go through,but the Kubernetes Operator will error until the change is reverted. [[automated-backup-volume-resizing]] ==== Automated Backup Volume Resizing -A xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resource can be modified to allow the Autonomous Operator to automatically resize the Backup PVC once a specific percentage of space is left. +A xref:resource/couchbasebackup.adoc[`CouchbaseBackup`] resource can be modified to allow the Kubernetes Operator to automatically resize the Backup PVC once a specific percentage of space is left. [source,yaml] ---- @@ -632,7 +632,7 @@ In this case, if the volume is currently 80 GiB when the threshold is reached, t When this field is not defined, no bounds are imposed. NOTE: The underlying StorageClass must be configured to allow volume expansion in order to modify the size of the Backup PVC (as stated <>). -Changes to the volume size may go through, but the Autonomous Operator will error until the change is reverted. +Changes to the volume size may go through, but the Kubernetes Operator will error until the change is reverted. === Deleting a Backup Configuration @@ -727,7 +727,7 @@ Like with other Couchbase custom resources, this means specifying a label for RB <.> Tolerations are applied to pods, and allow (but do not require) the pods to be scheduled onto nodes with matching taints. With taints and tolerations, you can grant backup pods exclusive access to specific nodes. -In this example, if we wish to run all backup pods on a dedicated node and isolate them from the rest of the Autonomous Operator pods, we can do this by tainting a node with the key-value of `app:cbbackup` and defining a matching toleration. +In this example, if we wish to run all backup pods on a dedicated node and isolate them from the rest of the Kubernetes Operator pods, we can do this by tainting a node with the key-value of `app:cbbackup` and defining a matching toleration. Further reference on all of these fields can be found in the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-backup[`couchbaseclusters.spec.backup`] resource configuration. For more overall information please see xref:concept-scheduling[Couchbase Scheduling and Isolation]. diff --git a/modules/ROOT/pages/howto-client-sdks.adoc b/modules/ROOT/pages/howto-client-sdks.adoc index b01fdc46..aad74fc3 100644 --- a/modules/ROOT/pages/howto-client-sdks.adoc +++ b/modules/ROOT/pages/howto-client-sdks.adoc @@ -23,7 +23,7 @@ Various Couchbase clients behave differently from one another in the way they pe This inconsistent behavior is avoided by specifying a network selection flag in the connection string that is used by the client to connect to the Couchbase cluster. This is known as _explicit network selection_. -The connection string examples throughout the Autonomous Operator documentation use explicit network selection to help avoid undesirable client behavior. +The connection string examples throughout the Kubernetes Operator documentation use explicit network selection to help avoid undesirable client behavior. Connection strings for internally-networked clients use `network=default`, while externally-networked clients use `network=external`. One important caveat is that explicit network selection is not supported by older Couchbase clients. diff --git a/modules/ROOT/pages/howto-couchbase-autoscaling.adoc b/modules/ROOT/pages/howto-couchbase-autoscaling.adoc index 900d7b6e..5d2f6c7d 100644 --- a/modules/ROOT/pages/howto-couchbase-autoscaling.adoc +++ b/modules/ROOT/pages/howto-couchbase-autoscaling.adoc @@ -7,10 +7,10 @@ Configure Couchbase clusters to automatically scale based on observed usage metr == Overview -The Autonomous Operator supports xref:concept-mds.adoc[Multi-Dimensional Scaling] through independently-configurable server classes, which are xref:howto-couchbase-scale.adoc[manually scalable] by default. -However, the Autonomous Operator optionally supports the automatic scaling of Couchbase clusters through an integration with the https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^]. +The Kubernetes Operator supports xref:concept-mds.adoc[Multi-Dimensional Scaling] through independently-configurable server classes, which are xref:howto-couchbase-scale.adoc[manually scalable] by default. +However, the Kubernetes Operator optionally supports the automatic scaling of Couchbase clusters through an integration with the https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^]. -The sections on this page describe how to enable and configure auto-scaling for Couchbase clusters managed by the Autonomous Operator. +The sections on this page describe how to enable and configure auto-scaling for Couchbase clusters managed by the Kubernetes Operator. For a conceptual description of this feature, please refer to xref:concept-couchbase-autoscaling.adoc[]. == Preparing for Auto-scaling @@ -32,7 +32,7 @@ Refer to xref:concept-couchbase-autoscaling.adoc#about-exposed-metrics[About Exp Enabling auto-scaling for a particular Couchbase cluster starts with modifying the relevant xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource. The required configuration parameters for enabling log forwarding are described in the example below. -(The Autonomous Operator will set the default values for any fields that are not specified by the user.) +(The Kubernetes Operator will set the default values for any fields that are not specified by the user.) .Basic xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] Auto-Scaling Parameters [source,yaml,subs="attributes,verbatim"] @@ -60,19 +60,19 @@ spec: autoscaleStabilizationPeriod: 600s # <.> ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `true` triggers the Autonomous Operator to create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for the relevant server class. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `true` triggers the Kubernetes Operator to create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for the relevant server class. In this example, a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource will be created for the `index` server class. Refer to xref:concept-couchbase-autoscaling.adoc#about-the-couchbase-autoscaler[About the Couchbase Autoscaler] for a conceptual overview of the role the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource plays in auto-scaling. <.> In this example, a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource will also be created for the `query` server class. -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-autoscalestabilizationperiod[`couchbaseclusters.spec.autoscaleStabilizationPeriod`]: This field defines the xref:concept-couchbase-autoscaling.adoc#couchbase-stabilization-period[_Couchbase Stabilization Period_], which is an internal safety mechanism provided by the Autonomous Operator that is meant to help prevent over-scaling caused by metrics instability during rebalance. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-autoscalestabilizationperiod[`couchbaseclusters.spec.autoscaleStabilizationPeriod`]: This field defines the xref:concept-couchbase-autoscaling.adoc#couchbase-stabilization-period[_Couchbase Stabilization Period_], which is an internal safety mechanism provided by the Kubernetes Operator that is meant to help prevent over-scaling caused by metrics instability during rebalance. The value specified in this field determines how long {HorizontalPodAutoscaler} resources will remain in https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#implicit-maintenance-mode-deactivation[_maintenance mode_^] after the cluster finishes rebalancing. + In this example, the stabilization period has been set to `600s`, which means that the Horizontal Pod Autoscaler will not restart monitoring until 10 minutes after the previous rebalance has completed. Refer to xref:concept-couchbase-autoscaling-best-practices.adoc[] for additional guidance on setting this value in production environments. -After deploying the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification, the Autonomous Operator will create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. +After deploying the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification, the Kubernetes Operator will create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. IMPORTANT: Enabling auto-scaling for a particular server class configuration *does not* immediately subject the cluster to being auto-scaled. The xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource simply acts as an endpoint for the {HorizontalPodAutoscaler} resource to access the pods that are selected for auto-scaling. @@ -95,24 +95,24 @@ query.cb-example 2 query <.> `NAME`: Each xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource is named using the format `__.__`. The name is important as it must be referenced when <> in order link the two resources together. -<.> `SIZE`: This is the current number of Couchbase nodes that the Autonomous Operator is maintaining for the `index` server class. -The Autonomous Operator keeps the size of a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource in sync with the size of its associated server class configuration. +<.> `SIZE`: This is the current number of Couchbase nodes that the Kubernetes Operator is maintaining for the `index` server class. +The Kubernetes Operator keeps the size of a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource in sync with the size of its associated server class configuration. [IMPORTANT] ==== -xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources are fully managed by the Autonomous Operator and should not be manually created, modified, or deleted by the user. -If one is manually deleted, the Autonomous Operator will re-create it. +xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources are fully managed by the Kubernetes Operator and should not be manually created, modified, or deleted by the user. +If one is manually deleted, the Kubernetes Operator will re-create it. However, it is possible to edit the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] (refer to <> below). -A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource only gets deleted by the Autonomous Operator when <> for the associated server class, or if the associated xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource is deleted altogether. +A xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource only gets deleted by the Kubernetes Operator when <> for the associated server class, or if the associated xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource is deleted altogether. ==== [[creating-a-horizontalpodautoscaler-resource]] == Creating a `HorizontalPodAutoscaler` Resource -The Autonomous Operator relies on the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^] to provide auto-scaling capabilities. +The Kubernetes Operator relies on the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler (HPA)^] to provide auto-scaling capabilities. The Horizontal Pod Autoscaler is configured via a {HorizontalPodAutoscaler} resource, which is the primary interface by which auto-scaling is configured. -Unlike the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Autonomous Operator, the {HorizontalPodAutoscaler} resource is created and managed by the user. +Unlike the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Kubernetes Operator, the {HorizontalPodAutoscaler} resource is created and managed by the user. The following configuration represents an example to scale the server class from <>. @@ -155,7 +155,7 @@ spec: * `kind`: This field must be set to `CouchbaseAutoscaler`. * `name`: This field must reference the unique `name` of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource. -As discussed in the previous section, xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resources are automatically created by the Autonomous Operator using the name format `__.__`. +As discussed in the previous section, xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resources are automatically created by the Kubernetes Operator using the name format `__.__`. -- + Refer to xref:concept-couchbase-autoscaling.adoc#referencing-the-couchbase-autoscaler[Referencing the Couchbase Autoscaler] in the concept documentation for more detailed information about these fields. @@ -251,7 +251,7 @@ Clusters that have automatic down-scaling disabled can be manually scaled down b $ kubectl scale --replicas=2 query.cb-example ---- -The above command edits the xref:concept-couchbase-autoscaling.adoc#scale-subresource[_scale subresource_] and results in the Autonomous Operator scaling the server class named `query` to a size of `2`. +The above command edits the xref:concept-couchbase-autoscaling.adoc#scale-subresource[_scale subresource_] and results in the Kubernetes Operator scaling the server class named `query` to a size of `2`. [[disabling-auto-scaling]] == Disabling Auto-scaling @@ -280,24 +280,24 @@ spec: - query ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `false` triggers the Autonomous Operator to delete the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource that had previously been created for the relevant server class. -In this example, the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource associated with the `index` server class will be deleted by the Autonomous Operator upon submitting the configuration. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`]: Setting this field to `false` triggers the Kubernetes Operator to delete the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource that had previously been created for the relevant server class. +In this example, the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource associated with the `index` server class will be deleted by the Kubernetes Operator upon submitting the configuration. -Upon deleting the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, the Autonomous Operator will no longer reconcile the current size of the server class with the recommendations of the Horizontal Pod Autoscaler, and instead the value specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-size[`couchbaseclusters.spec.servers.size`] will become the new source of truth. +Upon deleting the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, the Kubernetes Operator will no longer reconcile the current size of the server class with the recommendations of the Horizontal Pod Autoscaler, and instead the value specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-size[`couchbaseclusters.spec.servers.size`] will become the new source of truth. For example, if the above configuration were to be submitted, it would result in the `index` and `query` server classes each being scaled to `size: 2` from whatever size they had previously been auto-scaled to. -It's important to note, however, that the {HorizontalPodAutoscaler} resource is not managed by the Autonomous Operator, and therefore does not get deleted along with the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource. +It's important to note, however, that the {HorizontalPodAutoscaler} resource is not managed by the Kubernetes Operator, and therefore does not get deleted along with the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource. It will continue to exist in the current namespace until it is manually deleted by the user. Since the {HorizontalPodAutoscaler} resource can continue to be used if auto-scaling is subsequently re-enabled, it is important to <> of the {HorizontalPodAutoscaler} resource to ensure that it is persisted as expected. If the desire is to only temporarily disable auto-scaling, the {HorizontalPodAutoscaler} resource can be left to persist until auto-scaling is eventually re-enabled. -This only works if the names of both the server class and the Couchbase cluster remain the same, because when xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] is set back to `true`, the Autonomous Operator will create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource that is already xref:concept-couchbase-autoscaling.adoc#referencing-the-couchbase-autoscaler[referenced] by the existing {HorizontalPodAutoscaler} resource. +This only works if the names of both the server class and the Couchbase cluster remain the same, because when xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] is set back to `true`, the Kubernetes Operator will create a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource that is already xref:concept-couchbase-autoscaling.adoc#referencing-the-couchbase-autoscaler[referenced] by the existing {HorizontalPodAutoscaler} resource. In this case, the cluster will immediately become subject to the recommendations of the Horizontal Pod Autoscaler. [NOTE] ==== Deleting just the {HorizontalPodAutoscaler} resource will also have the effect of "disabling" auto-scaling. -In this scenario, the Autonomous Operator continues to maintain the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, but it will remain at the same size that was last recommended by the Horizontal Pod Autoscaler before it was deleted. +In this scenario, the Kubernetes Operator continues to maintain the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] resource, but it will remain at the same size that was last recommended by the Horizontal Pod Autoscaler before it was deleted. ==== == Related Links diff --git a/modules/ROOT/pages/howto-couchbase-create.adoc b/modules/ROOT/pages/howto-couchbase-create.adoc index 2d9b4d89..ce8ecd1b 100644 --- a/modules/ROOT/pages/howto-couchbase-create.adoc +++ b/modules/ROOT/pages/howto-couchbase-create.adoc @@ -5,11 +5,11 @@ include::partial$constants.adoc[] == Prerequisites -Before you attempt to deploy a Couchbase Server cluster with the Couchbase Autonomous Operator, ensure that you have done the following: +Before you attempt to deploy a Couchbase Server cluster with the Couchbase Kubernetes Operator, ensure that you have done the following: * You have reviewed the xref:prerequisite-and-setup.adoc[prerequisites] -* You have downloaded the https://www.couchbase.com/downloads[Autonomous Operator package^] -* You have xref:install-kubernetes.adoc[deployed the admission controller and the Autonomous Operator], and both are up and running +* You have downloaded the https://www.couchbase.com/downloads[Kubernetes Operator package^] +* You have xref:install-kubernetes.adoc[deployed the admission controller and the Kubernetes Operator], and both are up and running + The package contains YAML configuration files that will help you set up a Couchbase cluster. + diff --git a/modules/ROOT/pages/howto-couchbase-log-forwarding.adoc b/modules/ROOT/pages/howto-couchbase-log-forwarding.adoc index 6c1e7696..3ffaa44d 100644 --- a/modules/ROOT/pages/howto-couchbase-log-forwarding.adoc +++ b/modules/ROOT/pages/howto-couchbase-log-forwarding.adoc @@ -10,12 +10,12 @@ Couchbase Server produces a xref:server:manage:manage-logging/manage-logging.ado By default, these logs cannot be collected from the Couchbase Server container's standard console output. This limits the ability to integrate Couchbase logging with 3rd-party monitoring or collection technologies deployed within a Kubernetes cluster. -However, the Autonomous Operator can optionally enable xref:concept-couchbase-logging.adoc#log-forwarding[_log forwarding_] by deploying a third party log processor in a sidecar container on each Couchbase pod, which then reads the log files and forwards them to standard console output. +However, the Kubernetes Operator can optionally enable xref:concept-couchbase-logging.adoc#log-forwarding[_log forwarding_] by deploying a third party log processor in a sidecar container on each Couchbase pod, which then reads the log files and forwards them to standard console output. For this purpose, Couchbase supplies a default https://hub.docker.com/r/couchbase/fluent-bit[log processor image^] based on https://fluentbit.io/[Fluent Bit^]. The sections on this page describe how to enable and configure log forwarding using the Couchbase-supplied log processor image. -NOTE: The Couchbase-supplied log processor container image is only supported on Kubernetes platforms in conjunction with the Couchbase Autonomous Operator. +NOTE: The Couchbase-supplied log processor container image is only supported on Kubernetes platforms in conjunction with the Couchbase Kubernetes Operator. NOTE: Log forwarding requires that logs be written to a persistent volume (i.e. the Couchbase deployment's `default` or `logs` volumes are backed by xref:best-practices.adoc#storage[persistent storage]). Fully-ephemeral clusters are not supported by this feature. @@ -27,7 +27,7 @@ NOTE: Log forwarding requires that xref:resource/couchbasecluster.adoc#couchbase Log forwarding is fundamentally provided by two components: -. the _log processor image_ that is used by the Autonomous Operator to deploy the `logging` sidecar container onto each Couchbase Server pod, and +. the _log processor image_ that is used by the Kubernetes Operator to deploy the `logging` sidecar container onto each Couchbase Server pod, and . the _log forwarding configuration_, stored in a Kubernetes Secret, that gets consumed by the `logging` sidecar container and which controls its behavior. @@ -35,7 +35,7 @@ Enabling log forwarding for a particular Couchbase cluster involves enabling the The required configuration parameters for enabling log forwarding are described in the example below. Specified values represent the defaults for their respective fields unless otherwise noted in a callout. -(The Autonomous Operator will set the default values for any fields that are not specified by the user.) +(The Kubernetes Operator will set the default values for any fields that are not specified by the user.) .Basic xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] Parameters That Enable Log Forwarding [source,yaml,subs="attributes,verbatim"] @@ -66,9 +66,9 @@ spec: ---- <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-enabled[`couchbaseclusters.spec.logging.server.enabled`]: This is technically the only field that must be changed in order to enable log forwarding. -Setting this field to `true` (defaults to `false`) instructs the Autonomous Operator to deploy the `logging` sidecar container on each pod. +Setting this field to `true` (defaults to `false`) instructs the Kubernetes Operator to deploy the `logging` sidecar container on each pod. -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-sidecar-image[`couchbaseclusters.spec.logging.server.sidecar.image`]: This field specifies the container image that the Autonomous Operator will use for deploying the `logging` sidecar container. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-sidecar-image[`couchbaseclusters.spec.logging.server.sidecar.image`]: This field specifies the container image that the Kubernetes Operator will use for deploying the `logging` sidecar container. This field defaults to `couchbase/{logging-version}`, which pulls the Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[log processor image^]. You may need to modify this field if your Kubernetes nodes can't pull from the Docker public registry. @@ -86,7 +86,7 @@ $ kubectl logs cb-example-0000 logging == Configuring Log Forwarding As described in <>, there are two primary components that provide log forwarding: the _log processor image_ and the _log forwarding configuration_. -The Autonomous Operator uses Couchbase-provided defaults for both of these components, which can be used _as-is_ (refer to <>). +The Kubernetes Operator uses Couchbase-provided defaults for both of these components, which can be used _as-is_ (refer to <>). However, these components can be further customized to better meet the needs of your environment (refer to <>). === Enable memory buffer limits @@ -135,17 +135,17 @@ spec: memory: 500Mi ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`]: When this field is set to `true` (the default), the Autonomous Operator ensures that the `logging` sidecar container always uses the default log forwarding configuration. -The Autonomous Operator accomplishes this by creating a Secret that contains the default log forwarding configuration, which is then consumed by the `logging` sidecar container. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`]: When this field is set to `true` (the default), the Kubernetes Operator ensures that the `logging` sidecar container always uses the default log forwarding configuration. +The Kubernetes Operator accomplishes this by creating a Secret that contains the default log forwarding configuration, which is then consumed by the `logging` sidecar container. The name of the Secret will be whatever name is specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`]. -If a Secret already exists with the same name, the Autonomous Operator overwrites it, ensuring that the default log forwarding configuration is maintained. +If a Secret already exists with the same name, the Kubernetes Operator overwrites it, ensuring that the default log forwarding configuration is maintained. <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`]: This field defines the name of the Secret that contains the log forwarding configuration that will be consumed by the `logging` sidecar container. -This field defaults to `fluent-bit-config` and will be the name of the Secret that gets automatically created by the Autonomous Operator when xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] is set to `true`. +This field defaults to `fluent-bit-config` and will be the name of the Secret that gets automatically created by the Kubernetes Operator when xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] is set to `true`. + IMPORTANT: If running multiple clusters in the same Kubernetes namespace, make sure to use a different name for the Secret of each cluster rather than attempting to share the same Kubernetes Secret. -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-sidecar-image[`couchbaseclusters.spec.logging.server.sidecar.image`]: This field specifies the container image that the Autonomous Operator will use for deploying the `logging` sidecar container. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-sidecar-image[`couchbaseclusters.spec.logging.server.sidecar.image`]: This field specifies the container image that the Kubernetes Operator will use for deploying the `logging` sidecar container. This field defaults to `couchbase/{logging-version}`, which pulls the Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[log processor image^]. You may need to modify this field if your Kubernetes nodes can't pull from the Docker public registry. + @@ -192,10 +192,10 @@ spec: memory: 500Mi ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`]: When this field is set to `false` (defaults to `true`), the Autonomous Operator allows the Secret specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`] to contain a non-default log forwarding configuration. -This field _must_ be set to `false` in order to use a custom log forwarding configuration, otherwise the Autonomous Operator will always reconcile and update the Secret with the _default_ log forwarding configuration. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`]: When this field is set to `false` (defaults to `true`), the Kubernetes Operator allows the Secret specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`] to contain a non-default log forwarding configuration. +This field _must_ be set to `false` in order to use a custom log forwarding configuration, otherwise the Kubernetes Operator will always reconcile and update the Secret with the _default_ log forwarding configuration. + -NOTE: If xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] was ever set to `true` when you enabled log forwarding, then the Autonomous Operator will have already created the default Secret. +NOTE: If xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] was ever set to `true` when you enabled log forwarding, then the Kubernetes Operator will have already created the default Secret. In this situation, if you were to then set this field to `false`, the `logging` sidecar container would continue to consume the default Secret. You could then choose to add your custom log forwarding configuration to this same Secret. However, if you were to change xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`] to point to a different Secret, it won't get picked up until the next time a pod starts. @@ -221,10 +221,10 @@ This field only needs to be modified if a custom image is specified in xref:reso Since a log forwarding configuration can contain sensitive information, it is stored in a Kubernetes Secret. The Secret is used to https://kubernetes.io/docs/concepts/configuration/secret/#restrictions[populate the volume mounted into the sidecar^] so that the actual _configuration files_ get picked up by the log processor. -When <>, the Autonomous Operator automatically creates a Secret named `fluent-bit-config` that contains the default log forwarding configuration. +When <>, the Kubernetes Operator automatically creates a Secret named `fluent-bit-config` that contains the default log forwarding configuration. This configuration, which can be viewed on https://github.com/couchbase/couchbase-fluent-bit/blob/main/conf/fluent-bit.conf[GitHub^], is used by the Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[log processor image^] in order to provide features like automatic _parsing_ of a number of supported logs, automatic _filtering_ for adding useful information to the logs (e.g. pod host names), as well as optional log _redaction_ (another type of filtering). -When <>, the Autonomous Operator does _not_ automatically create a log forwarding configuration Secret. +When <>, the Kubernetes Operator does _not_ automatically create a log forwarding configuration Secret. Instead, the administrator is expected to create a custom Secret themselves, and specify that Secret in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`]. The rest of this section covers some relatively simple ways in which you can customize the default log forwarding configuration, such as limiting the number of forwarded logs, and enabling log redaction. @@ -267,7 +267,7 @@ stringData: match couchbase.log.audit # <.> ---- -<.> `metadata.name`: The Autonomous Operator expects the default name `fluent-bit-config`. +<.> `metadata.name`: The Kubernetes Operator expects the default name `fluent-bit-config`. If you use a different name, then you will need to specify that name in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`]. <.> `stringData.fluent-bit.conf`: Log forwarding configuration files are defined here in the `stringData` field of the Secret (the `data` field is also https://kubernetes.io/docs/concepts/configuration/secret/[potentially an option^]). @@ -315,7 +315,7 @@ Therefore, specifying the https://docs.fluentbit.io/manual/concepts/key-concepts You can copy the <> Secret above and create it in your Kubernetes cluster for use with existing and future Couchbase cluster deployments. However, please review <>, as there are a few things that you need to be aware of when creating a custom log forwarding configuration Secret. -In particular, you should make sure that any Couchbase cluster deployment that references the Secret in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`] _also_ has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] set to `false`, otherwise the Autonomous Operator will overwrite the custom Secret with the _default_ log forwarding configuration. +In particular, you should make sure that any Couchbase cluster deployment that references the Secret in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-configurationname[`couchbaseclusters.spec.logging.server.configurationName`] _also_ has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-server-manageconfiguration[`couchbaseclusters.spec.logging.server.manageConfiguration`] set to `false`, otherwise the Kubernetes Operator will overwrite the custom Secret with the _default_ log forwarding configuration. [[updating-existing-custom-log-forwarding-configuration]] === Updating an Existing Custom Log Forwarding Configuration @@ -397,7 +397,7 @@ LUA scripting has an overhead and it is recommended to use at least one extra Fl <.> `redaction.salt`: You can optionally define a custom salt for the hashing of tagged data. The salt is specified in the configuration Secret as a separate file/value (in the example, the salt value is `salty`). -If a salt is not specified, the Autonomous Operator will default to using the cluster name as the salt. +If a salt is not specified, the Kubernetes Operator will default to using the cluster name as the salt. After <> the log forwarding configuration with the <> above, you'll notice output similar to the following, showing the redacted strings as hashes: diff --git a/modules/ROOT/pages/howto-guide-couchbase-user-rbac.adoc b/modules/ROOT/pages/howto-guide-couchbase-user-rbac.adoc index 385bdf59..035deb5e 100644 --- a/modules/ROOT/pages/howto-guide-couchbase-user-rbac.adoc +++ b/modules/ROOT/pages/howto-guide-couchbase-user-rbac.adoc @@ -1,5 +1,5 @@ = How-to Guide: Couchbase User RBAC -:description: A how-to guide on configuring Couchbase user authentication and authorization using the Autonomous Operator. +:description: A how-to guide on configuring Couchbase user authentication and authorization using the Kubernetes Operator. :page-toclevels: 2 [abstract] @@ -7,17 +7,17 @@ == Overview -This guide will describe how to create authenticated users and bind them to specific roles to provide multiple levels of authorization using the Autonomous Operator. +This guide will describe how to create authenticated users and bind them to specific roles to provide multiple levels of authorization using the Kubernetes Operator. Users can be authenticated either by Couchbase's built-in authentication system or by an external authentication system such as OpenLDAP. -The Autonomous Operator refers to Couchbase Authentication as the `local` domain, and LDAP Authentication as the `external` domain. +The Kubernetes Operator refers to Couchbase Authentication as the `local` domain, and LDAP Authentication as the `external` domain. This guide will focus on using the `local` domain for authentication. == Prerequisites * If you are new to role-based access control in Couchbase, refer to the xref:server:learn:security/roles.adoc[Roles Page] -* If you are new to Couchbase Autonomous Operator (CAO), refer to the xref:overview.adoc[Autonomous Operator Introduction] +* If you are new to Couchbase Kubernetes Operator (CAO), refer to the xref:overview.adoc[Kubernetes Operator Introduction] * Couchbase Scopes and Collections was added in Version 7.0. Refer to the xref:concept-scopes-and-collections.adoc[Couchbase Scopes and Collections] page to learn more about these. diff --git a/modules/ROOT/pages/howto-guide-data-topology-sync.adoc b/modules/ROOT/pages/howto-guide-data-topology-sync.adoc index af90313a..3bbd07a5 100644 --- a/modules/ROOT/pages/howto-guide-data-topology-sync.adoc +++ b/modules/ROOT/pages/howto-guide-data-topology-sync.adoc @@ -1,16 +1,16 @@ = How-to Guide: Data Topology Synchronization -:description: A how-to guide on data topology synchronization with Couchbase Autonomous Operator. +:description: A how-to guide on data topology synchronization with Couchbase Kubernetes Operator. [abstract] {description} == Overview -In the following guide, we'll show you how to discover the configuration of a Couchbase cluster in the form of Kubernetes resources, and how the Autonomous Operator manages those resources. +In the following guide, we'll show you how to discover the configuration of a Couchbase cluster in the form of Kubernetes resources, and how the Kubernetes Operator manages those resources. == Prerequisites -* If you are new to Couchbase Autonomous Operator (CAO), refer to the xref:overview.adoc[Autonomous Operator Introduction] +* If you are new to Couchbase Kubernetes Operator (CAO), refer to the xref:overview.adoc[Kubernetes Operator Introduction] * Couchbase Scopes and Collections was added in Version 7.0. Refer to the xref:concept-scopes-and-collections.adoc[Couchbase Scopes and Collections] page to learn more about these. diff --git a/modules/ROOT/pages/howto-guide-save-restore.adoc b/modules/ROOT/pages/howto-guide-save-restore.adoc index a789ad9b..6a5b5aa1 100644 --- a/modules/ROOT/pages/howto-guide-save-restore.adoc +++ b/modules/ROOT/pages/howto-guide-save-restore.adoc @@ -1,5 +1,5 @@ = How-to Guide: Data Topology Save and Restore -:description: A how-to guide on using the "Write Once and Create Anywhere" capability of Autonomous Operator. +:description: A how-to guide on using the "Write Once and Create Anywhere" capability of Kubernetes Operator. :page-toclevels: 2 [abstract] @@ -7,11 +7,11 @@ == Overview -This guide will show you how to save the configuration of one Couchbase cluster, and how to restore it on a different Couchbase cluster using the "Write Once and Create Anywhere" capability of Couchbase Autonomous Operator (CAO). +This guide will show you how to save the configuration of one Couchbase cluster, and how to restore it on a different Couchbase cluster using the "Write Once and Create Anywhere" capability of Couchbase Kubernetes Operator (CAO). == Prerequisites -* If you are new to Couchbase Autonomous Operator (CAO), refer to the xref:overview.adoc[Autonomous Operator Introduction] +* If you are new to Couchbase Kubernetes Operator (CAO), refer to the xref:overview.adoc[Kubernetes Operator Introduction] * Couchbase Scopes and Collections was added in Version 7.0. Refer to the xref:concept-scopes-and-collections.adoc[Couchbase Scopes and Collections] page to learn more about these diff --git a/modules/ROOT/pages/howto-guide-xdcr-scopes-collections.adoc b/modules/ROOT/pages/howto-guide-xdcr-scopes-collections.adoc index 040c56aa..c3002d86 100644 --- a/modules/ROOT/pages/howto-guide-xdcr-scopes-collections.adoc +++ b/modules/ROOT/pages/howto-guide-xdcr-scopes-collections.adoc @@ -1,5 +1,5 @@ = How-to Guide: XDCR with Scopes and Collections -:description: A how-to guide on configuring cross data center replication (XDCR) using the Autonomous Operator. +:description: A how-to guide on configuring cross data center replication (XDCR) using the Kubernetes Operator. :page-toclevels: 2 [abstract] @@ -16,12 +16,12 @@ This guide will take you through a few examples on how to configure XDCR. * If you are new to role-based access control in Couchbase, refer to the xref:server:learn:security/roles.adoc[Roles Page] -* If you are new to Couchbase Autonomous Operator (CAO), refer to the xref:overview.adoc[Autonomous Operator Introduction] +* If you are new to Couchbase Kubernetes Operator (CAO), refer to the xref:overview.adoc[Kubernetes Operator Introduction] * Couchbase Scopes and Collections was added in Version 7.0. Refer to the xref:concept-scopes-and-collections.adoc[Couchbase Scopes and Collections] page to learn more about these -* To install the Couchbase Autonomous Operator please refer to xref:install-kubernetes.adoc[Install Operator on Kubernetes] or xref:install-openshift.adoc[Install Operator on OpenShift] +* To install the Couchbase Kubernetes Operator please refer to xref:install-kubernetes.adoc[Install Operator on Kubernetes] or xref:install-openshift.adoc[Install Operator on OpenShift] == Configure XDCR diff --git a/modules/ROOT/pages/howto-manage-couchbase-logging.adoc b/modules/ROOT/pages/howto-manage-couchbase-logging.adoc index 917f23b5..a8d33261 100644 --- a/modules/ROOT/pages/howto-manage-couchbase-logging.adoc +++ b/modules/ROOT/pages/howto-manage-couchbase-logging.adoc @@ -2,12 +2,12 @@ include::partial$constants.adoc[] [abstract] -The Autonomous Operator can be configured to manage certain aspects of Couchbase Server logging, and comes with tools for collecting Couchbase Server logs. +The Kubernetes Operator can be configured to manage certain aspects of Couchbase Server logging, and comes with tools for collecting Couchbase Server logs. == Overview The Couchbase Server application records important events, and saves the details to a xref:server:manage:manage-logging/manage-logging.adoc#log-file-listing[variety] of log files. -These logs are distinct from the logs that are generated by the Autonomous Operator xref:concept-operator-logging.adoc[itself]. +These logs are distinct from the logs that are generated by the Kubernetes Operator xref:concept-operator-logging.adoc[itself]. Logging is performed continuously within each Couchbase Server container in a Couchbase deployment. When using xref:concept-persistent-volumes.adoc[persistent volumes] -- as is xref:best-practices.adoc#storage[recommended] for all production deployments -- log files are written to either the `default` or `logs` volume. @@ -41,7 +41,7 @@ _Without active intervention, rotated audit logs will eventually consume all ava === About Managed Audit Logging _Managed_ audit logging involves the administrator directly enabling audit logging in Couchbase Server, and requires that the administrator actively manage the resultant audit log files. -Managed audit logging can be implemented after the Couchbase cluster has been successfully deployed by the Autonomous Operator. +Managed audit logging can be implemented after the Couchbase cluster has been successfully deployed by the Kubernetes Operator. Once the cluster is deployed, the administrator can enable and configure audit logging directly through the Couchbase UI, CLI, or REST API. Refer to xref:server:manage:manage-security/manage-auditing.adoc[] in the Couchbase Server documentation for more information. @@ -54,12 +54,12 @@ It is expected that the administrator will implement an automated system for exp NOTE: Automated audit logging requires that logs be written to a persistent volume (i.e. the Couchbase deployment's `default` or `logs` volumes are backed by xref:best-practices.adoc#storage[persistent storage]). Fully-ephemeral clusters are not supported by this feature. -_Automated_ audit logging involves having the Autonomous Operator handle the audit log configuration and optionally manage the resultant audit log files. -An audit logging configuration can be specified in the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification, allowing the Autonomous Operator to set up audit logging in Couchbase Server, and optionally manage the resultant audit log files. +_Automated_ audit logging involves having the Kubernetes Operator handle the audit log configuration and optionally manage the resultant audit log files. +An audit logging configuration can be specified in the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification, allowing the Kubernetes Operator to set up audit logging in Couchbase Server, and optionally manage the resultant audit log files. The required configuration parameters for enabling audit logging are described in the example below. Specified values represent the defaults for their respective fields unless otherwise noted in a callout. -(The Autonomous Operator will set the default values for any fields that are not specified by the user.) +(The Kubernetes Operator will set the default values for any fields that are not specified by the user.) [source,yaml,subs="attributes,verbatim"] ---- @@ -98,14 +98,14 @@ This is technically the only field that is required to configure garbage collect in Couchbase Server 7.2.4+. Note, however, that garbage collection can only be enabled if xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-audit-enabled[`couchbaseclusters.spec.logging.audit.enabled`] is also set to `true`. After enabling automated audit logging, you should take care only to use the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource specification for making further modifications to the audit logging configuration. -Manual changes that are made to the configuration via the Couchbase UI, CLI, or REST API (such as changing the audit log directory) are not prevented by the Autonomous Operator, and can cause audit logging failures. +Manual changes that are made to the configuration via the Couchbase UI, CLI, or REST API (such as changing the audit log directory) are not prevented by the Kubernetes Operator, and can cause audit logging failures. -NOTE: Changing the location of the audit log is not supported, as it would break the ability for the Autonomous Operator to xref:concept-couchbase-logging.adoc#log-forwarding[forward] audit logs. +NOTE: Changing the location of the audit log is not supported, as it would break the ability for the Kubernetes Operator to xref:concept-couchbase-logging.adoc#log-forwarding[forward] audit logs. ==== Sidecar Garbage Collection kbd:[deprecated] -Native audit log cleanup was introduced in Couchbase Server 7.2.4, for earlier versions the Couchbase Autonomous Operator can deploy a sidecar container with the Couchbase Server to cleanup rotated logs. +Native audit log cleanup was introduced in Couchbase Server 7.2.4, for earlier versions the Couchbase Kubernetes Operator can deploy a sidecar container with the Couchbase Server to cleanup rotated logs. [source,yaml,subs="attributes,verbatim"] ---- @@ -157,7 +157,7 @@ It is highly recommended that you use, or migrate to, one of the other modes. == Collecting Logs -The Autonomous Operator package is distributed with a support tool -- xref:tools/cao.adoc[`cao`] -- which can be used to collect logs from Couchbase Server deployments. +The Kubernetes Operator package is distributed with a support tool -- xref:tools/cao.adoc[`cao`] -- which can be used to collect logs from Couchbase Server deployments. The xref:tools/cao.adoc[`cao`] tool performs _explicit logging_, which means it captures a snapshot of the current logs at the time the tool is was run. Explicit logging can either be performed for all nodes in the cluster, or for one or more individual nodes. The results are saved as zip files: each zip file contains the log-data generated for an individual node. @@ -172,10 +172,10 @@ To avoid these limitations, you can choose to configure xref:concept-couchbase-l [[collect-logs-with-cao]] === Collecting Logs with `cao` -When run without any flags or options, the xref:tools/cao.adoc[`cao`] tool collects a filtered list of the Kubernetes resources associated with the Autonomous Operator in a given namespace. +When run without any flags or options, the xref:tools/cao.adoc[`cao`] tool collects a filtered list of the Kubernetes resources associated with the Kubernetes Operator in a given namespace. However, to also collect logs from Couchbase Server deployments, the xref:tools/cao.adoc#cao-collect-logs[`--collectinfo`] flag is required. -When xref:tools/cao.adoc[`cao`] is run unscoped with the xref:tools/cao.adoc#cao-collect-logs[`--collectinfo`] flag, it will look for logs from all Couchbase Server deployments that are managed by the Autonomous Operator. +When xref:tools/cao.adoc[`cao`] is run unscoped with the xref:tools/cao.adoc#cao-collect-logs[`--collectinfo`] flag, it will look for logs from all Couchbase Server deployments that are managed by the Kubernetes Operator. However, you can scope the command to a particular cluster in order to look for just the logs from that cluster. Run the following command to begin the log collection process for the Couchbase Server deployment named `cb-example`: @@ -234,7 +234,7 @@ The xref:tools/cao.adoc[`cao`] tool collects logs from all log volumes in a Couc Detached PVCs can occur more commonly when running xref:best-practices.adoc#ephemeral-clusters[ephemeral clusters]. When a detached PVC is encountered, xref:tools/cao.adoc[`cao`] will automatically create a temporary Couchbase Server pod, mount the log volume to it, and then run xref:server:cli:cbcollect-info-tool.adoc[`cbcollect_info`] to collect the logs. -Once the logs have been downloaded, the Autonomous Operator will delete the temporary pod (but will _not_ delete the PVC). +Once the logs have been downloaded, the Kubernetes Operator will delete the temporary pod (but will _not_ delete the PVC). [TIP] ==== @@ -261,16 +261,16 @@ In most situations, the xref:tools/cao.adoc[`cao`] tool will allow logs to be co Even in cases where logs are found to exist on detached PersistentVolumeClaims (PVCs), xref:tools/cao.adoc[`cao`] will <> by creating temporary pods that mount the PVCs. However, a case may arise where xref:tools/cao.adoc[`cao`] fails to collect logs from a detached PVC. -For example, if a stateful service -- such as Data, Index, or Analytics -- were to crash, and then continue to crash each time the Autonomous Operator recovered the pod, xref:tools/cao.adoc[`cao`] would unlikely be able to collect the Couchbase Server logs from the pod without manual intervention. +For example, if a stateful service -- such as Data, Index, or Analytics -- were to crash, and then continue to crash each time the Kubernetes Operator recovered the pod, xref:tools/cao.adoc[`cao`] would unlikely be able to collect the Couchbase Server logs from the pod without manual intervention. This is because in this hypothetical situation, the pod does not remain alive long enough for xref:tools/cao.adoc[`cao`] to perform normal log collection; xref:tools/cao.adoc[`cao`] also doesn't see the PVC as detached, and therefore doesn't automatically create a temporary pod to collect the logs as it normally would for a detached PVC. The general process for manual log collection is as follows: -. Pause the Autonomous Operator's management of the Couchbase cluster by setting xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-paused[`couchbaseclusters.spec.paused`] to `true`. +. Pause the Kubernetes Operator's management of the Couchbase cluster by setting xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-paused[`couchbaseclusters.spec.paused`] to `true`. + Pausing management of the Couchbase cluster serves two purposes. -The first purpose is that it will prevent the Autonomous Operator from attempting to recover the malfunctioning pod after Kubernetes has killed it. -The second purpose is that it allows you to create a temporary replacement pod and mount the the detached PVCs to it without the Autonomous Operator interfering. +The first purpose is that it will prevent the Kubernetes Operator from attempting to recover the malfunctioning pod after Kubernetes has killed it. +The second purpose is that it allows you to create a temporary replacement pod and mount the the detached PVCs to it without the Kubernetes Operator interfering. . Create a temporary pod resource with the persistent volumes mounted. The basic template will look like the following: @@ -379,4 +379,4 @@ $ kubectl cp default/cb-example-0005:/tmp/cbcollectinfo-default-cb-example-0005- $ kubectl delete pod cb-example-0005 ---- -. Resume the Autonomous Operator's management of the Couchbase cluster either by removing xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-paused[`couchbaseclusters.spec.paused`] or setting it to `false`. +. Resume the Kubernetes Operator's management of the Couchbase cluster either by removing xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-paused[`couchbaseclusters.spec.paused`] or setting it to `false`. diff --git a/modules/ROOT/pages/howto-manage-operator-logging.adoc b/modules/ROOT/pages/howto-manage-operator-logging.adoc index 74cb7ace..0a40c4d6 100644 --- a/modules/ROOT/pages/howto-manage-operator-logging.adoc +++ b/modules/ROOT/pages/howto-manage-operator-logging.adoc @@ -1,35 +1,35 @@ -= Autonomous Operator Troubleshooting += Kubernetes Operator Troubleshooting :page-aliases: logs-troubleshooting.adoc, howto-troubleshooting.adoc include::partial$constants.adoc[] [abstract] -If you run into issues with the Autonomous Operator, you can troubleshoot by examining the logs and events that it generates. +If you run into issues with the Kubernetes Operator, you can troubleshoot by examining the logs and events that it generates. -The Autonomous Operator generates logs that can be used for auditing and troubleshooting purposes. -This page describes logging that is specific to the Autonomous Operator itself. +The Kubernetes Operator generates logs that can be used for auditing and troubleshooting purposes. +This page describes logging that is specific to the Kubernetes Operator itself. For information about Couchbase cluster logging, refer to xref:howto-manage-couchbase-logging.adoc[]. == Overview -The Autonomous Operator generates xref:concept-operator-logging.adoc[logs] that include information about itself and the various other Kubernetes components that make up the xref:concept-operator.adoc[Operator deployment]. +The Kubernetes Operator generates xref:concept-operator-logging.adoc[logs] that include information about itself and the various other Kubernetes components that make up the xref:concept-operator.adoc[Operator deployment]. These logs are distinct from the logs that are generated by the xref:concept-couchbase-logging.adoc[Couchbase Server application]. -This page provides information about how to collect and scrutinize logging information that is produced by the Autonomous Operator. -When troubleshooting the Autonomous Operator, it is important to first rule out Kubernetes itself as the root cause of the problem. +This page provides information about how to collect and scrutinize logging information that is produced by the Kubernetes Operator. +When troubleshooting the Kubernetes Operator, it is important to first rule out Kubernetes itself as the root cause of the problem. The Kubernetes https://kubernetes.io/docs/tasks/debug-application-cluster/troubleshooting/[Troubleshooting Guide^] contains a great deal of helpful information about debugging applications within a Kubernetes cluster. -Familiarity with the xref:reference-operator-configuration.adoc[Operator's configuration settings] can be helpful when troubleshooting the Autonomous Operator. +Familiarity with the xref:reference-operator-configuration.adoc[Operator's configuration settings] can be helpful when troubleshooting the Kubernetes Operator. -== Collecting Autonomous Operator Logs +== Collecting Kubernetes Operator Logs -Using `kubectl` or `oc`, you can choose to print the Autonomous Operator logs to to standard console output. +Using `kubectl` or `oc`, you can choose to print the Kubernetes Operator logs to to standard console output. [{tabs}] ==== Kubernetes:: + -- -Start by getting the name of the Autonomous Operator pod. +Start by getting the name of the Kubernetes Operator pod. [source,console] ---- @@ -55,20 +55,20 @@ time="2018-01-23T22:56:51Z" level=info msg="I'm the leader, attempt to start the time="2018-01-23T22:56:51Z" level=info msg="Creating the couchbase-operator controller" module=main ---- -Alternatively, you can specify the Autonomous Operator deployment to get the logs. +Alternatively, you can specify the Kubernetes Operator deployment to get the logs. [source,console] ---- $ kubectl logs deployment/couchbase-operator ---- -Since there is only one instance of the Autonomous Operator in the deployment, the the underlying command will automatically select the correct pod and print the logs. +Since there is only one instance of the Kubernetes Operator in the deployment, the the underlying command will automatically select the correct pod and print the logs. -- OpenShift:: + -- -Start by getting the name of the Autonomous Operator pod. +Start by getting the name of the Kubernetes Operator pod. [source,console] ---- @@ -94,25 +94,25 @@ time="2018-01-23T22:56:51Z" level=info msg="I'm the leader, attempt to start the time="2018-01-23T22:56:51Z" level=info msg="Creating the couchbase-operator controller" module=main ---- -Alternatively, you can specify the Autonomous Operator deployment to get the logs. +Alternatively, you can specify the Kubernetes Operator deployment to get the logs. [source,console] ---- $ oc logs deployment/couchbase-operator ---- -Since there is only one instance of the Autonomous Operator in the deployment, the the underlying command will automatically select the correct pod and print the logs. +Since there is only one instance of the Kubernetes Operator in the deployment, the the underlying command will automatically select the correct pod and print the logs. -- ==== -If you're troubleshooting the Autonomous Operator, watch for the following messages which indicate that the Operator is unable to reconcile a Couchbase cluster into a desired state: +If you're troubleshooting the Kubernetes Operator, watch for the following messages which indicate that the Operator is unable to reconcile a Couchbase cluster into a desired state: * Logs with `level=error` * Operator is unable to get cluster state after N retries -== Profiling the Autonomous Operator +== Profiling the Kubernetes Operator -For more advanced troubleshooting, the Autonomous Operator supports the Go language https://golang.org/pkg/net/http/pprof/[pprof] feature and serves profiling data on its default listen address `localhost:8080`. +For more advanced troubleshooting, the Kubernetes Operator supports the Go language https://golang.org/pkg/net/http/pprof/[pprof] feature and serves profiling data on its default listen address `localhost:8080`. You can access this endpoint by running a remote shell or forwarding the port to your local system. [{tabs}] @@ -180,7 +180,7 @@ $ go tool pprof localhost:8080/debug/pprof/heap Kubernetes Events provide insights into what is happening inside a Kubernetes cluster. They record significant occurrences and changes in the state of resources, such as the creation, deletion, or failure of pods, nodes, services, and other Kubernetes objects. -They can be used to monitor changes that have occurred in the cluster, and can be helpful when troubleshooting issues with the Autonomous Operator. However, they expire after a certain period of time, typically one hour. You can use the https://github.com/couchbase/couchbase-k8s-event-collector[Kubernetes Event Collector] tool to collect and store events for longer periods of time. +They can be used to monitor changes that have occurred in the cluster, and can be helpful when troubleshooting issues with the Kubernetes Operator. However, they expire after a certain period of time, typically one hour. You can use the https://github.com/couchbase/couchbase-k8s-event-collector[Kubernetes Event Collector] tool to collect and store events for longer periods of time. The Kubernetes Event Collector watches for Kubernetes events within a namespace and stores them to a buffer which can be stashed. It can be deployed and configured using helm diff --git a/modules/ROOT/pages/howto-operator-upgrade.adoc b/modules/ROOT/pages/howto-operator-upgrade.adoc index de6d6877..35c3d5b5 100644 --- a/modules/ROOT/pages/howto-operator-upgrade.adoc +++ b/modules/ROOT/pages/howto-operator-upgrade.adoc @@ -2,7 +2,7 @@ :page-aliases: upgrading-the-operator :tabs: -Upgrading the Couchbase Autonomous Operator is a five-step process: +Upgrading the Couchbase Kubernetes Operator is a five-step process: - <> - <> diff --git a/modules/ROOT/pages/howto-persistent-volumes.adoc b/modules/ROOT/pages/howto-persistent-volumes.adoc index 0bcff8da..92b4bad5 100644 --- a/modules/ROOT/pages/howto-persistent-volumes.adoc +++ b/modules/ROOT/pages/howto-persistent-volumes.adoc @@ -99,7 +99,7 @@ You can also modify the storage class and the Operator will detect and upgrade t Normally, the Couchbase cluster must undergo a rolling upgrade whenever the volume size is modified. However, persistent volumes that are already in use by Couchbase clusters can optionally be _expanded in-place_ without needing to perform an upgrade on the underlying storage subsystem. -The Autonomous Operator achieves this by working in conjunction with https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims[Kubernetes Persistent Volume Expansion^] to claim additional storage for running pods without any downtime. +The Kubernetes Operator achieves this by working in conjunction with https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims[Kubernetes Persistent Volume Expansion^] to claim additional storage for running pods without any downtime. [source,yaml] ---- @@ -120,12 +120,12 @@ spec: storage: 2Gi # <.> ---- -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-enableonlinevolumeexpansion[`couchbaseclusters.spec.enableOnlineVolumeExpansion`]: This field must be set to `true` for the Autonomous Operator to allow online volume expansion. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-enableonlinevolumeexpansion[`couchbaseclusters.spec.enableOnlineVolumeExpansion`]: This field must be set to `true` for the Kubernetes Operator to allow online volume expansion. <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-onlinevolumeexpansiontimeoutinmins[`couchbaseclusters.spec.onlineVolumeExpansionTimeoutInMins`]: This field must be provided as a retry mechanism with a timeout in minutes. It could be in between 0 to 30 minutes, defaulting to 10 minutes. No unit is needed to be provided. -<.> Modifying the storage size will trigger the Autonomous Operator to detect that existing persistent volume claims do not match the intended size (as it normally would). -However, if the new value is larger than the previous value, the Autonomous Operator will attempt an online expansion of the volume. +<.> Modifying the storage size will trigger the Kubernetes Operator to detect that existing persistent volume claims do not match the intended size (as it normally would). +However, if the new value is larger than the previous value, the Kubernetes Operator will attempt an online expansion of the volume. You can verify the status of the volume expansion task by checking events on the `CouchbaseCluster` resource: @@ -160,7 +160,7 @@ It's important to note that setting xref:resource/couchbasecluster.adoc#couchbas Please review the following notes before attempting online volume expansion: * The underlying `StorageClass` must be capable of performing https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims[volume expansions^] (`allowVolumeExpansion=true`). -** The Autonomous Operator has no way of detecting if the underlying storage class supports volume expansion. +** The Kubernetes Operator has no way of detecting if the underlying storage class supports volume expansion. Therefore, it is important that you confirm that your volume type supports volume expansion before enabling online volume expansion in the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] resource. + In general, block storage volume types such as `GCE-PD`, `AWS-EBS`, A`zure Disk`, `Cinder`, and `Ceph RBD` typically require a full file system expansion, whereas network attached file systems like `Glusterfs` and `Azure File` can always be expanded online. @@ -168,12 +168,12 @@ In general, block storage volume types such as `GCE-PD`, `AWS-EBS`, A`zure Disk` * Volume size can only be _increased_. ** Kubernetes does not currently support online reductions in volume size. ** New storage sizes can only be specified in xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-volumeclaimtemplates[`volumeClaimTemplates.spec.resources.requests.storage`], and must be a larger value than the current size (values smaller than the current size will be blocked by the dynamic admission controller). -Note that persistent volumes are fully managed by the Autonomous Operator, therefore any manual changes to the PersistentVolumeClaim size made outside of the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] spec will be reverted. +Note that persistent volumes are fully managed by the Kubernetes Operator, therefore any manual changes to the PersistentVolumeClaim size made outside of the xref:resource/couchbasecluster.adoc[`CouchbaseCluster`] spec will be reverted. ** To reduce volume size, set xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-enableonlinevolumeexpansion[`couchbaseclusters.spec.enableOnlineVolumeExpansion`] back to `false` and proceed with <> (which requires rolling upgrade). -* If online volume expansion fails for some reason, the Autonomous Operator will fall back to a traditional rolling upgrade as a means to expand volumes. +* If online volume expansion fails for some reason, the Kubernetes Operator will fall back to a traditional rolling upgrade as a means to expand volumes. -* The Autonomous Operator cannot detect if https://kubernetes.io/docs/concepts/storage/persistent-volumes/#resizing-an-in-use-persistentvolumeclaim[resizing in-use PersistentVolumeClaims (`ExpandInUsePersistentVolumes`)^] is enabled on the current Kubernetes cluster. +* The Kubernetes Operator cannot detect if https://kubernetes.io/docs/concepts/storage/persistent-volumes/#resizing-an-in-use-persistentvolumeclaim[resizing in-use PersistentVolumeClaims (`ExpandInUsePersistentVolumes`)^] is enabled on the current Kubernetes cluster. diff --git a/modules/ROOT/pages/howto-prometheus.adoc b/modules/ROOT/pages/howto-prometheus.adoc index cd6de5d2..e311ecbf 100644 --- a/modules/ROOT/pages/howto-prometheus.adoc +++ b/modules/ROOT/pages/howto-prometheus.adoc @@ -2,7 +2,7 @@ include::partial$constants.adoc[] [abstract] -You can set up the Autonomous Operator to use the Couchbase Server's native support for metrics collection, for Couchbase Server versions newer than Version 7.0 + +You can set up the Kubernetes Operator to use the Couchbase Server's native support for metrics collection, for Couchbase Server versions newer than Version 7.0 + Couchbase native support for metric collection exposes a Prometheus compatible endpoint on all Pods without the need for third party tools. IMPORTANT: Couchbase native support is available for Couchbase Server versions 7.0 or higher and is the recommended way for collecting metrics with Prometheus. @@ -153,15 +153,15 @@ Use of Prometheus exporter is deprecated and will be removed in a future release It is highly recommended that you use the native Couchbase Server Metrics endpoint. ==== -The Autonomous Operator provides Prometheus integration for collecting and exposing Couchbase Server metrics via the https://github.com/couchbase/couchbase-exporter[Couchbase Prometheus Exporter^]. +The Kubernetes Operator provides Prometheus integration for collecting and exposing Couchbase Server metrics via the https://github.com/couchbase/couchbase-exporter[Couchbase Prometheus Exporter^]. The Couchbase Exporter is a https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#how-pods-manage-multiple-containers["sidecar" container^] that is injected into each Couchbase Server pod. Prometheus metrics collection is enabled in the `CouchbaseCluster` resource. The configuration allows you to specify a Couchbase-provided container image that contains the Prometheus Exporter. -The Autonomous Operator injects the image as a https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#how-pods-manage-multiple-containers["sidecar" container^] in each Couchbase Server pod. +The Kubernetes Operator injects the image as a https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#how-pods-manage-multiple-containers["sidecar" container^] in each Couchbase Server pod. -NOTE: The Couchbase-supplied Prometheus Exporter container image is only supported on Kubernetes platforms in conjunction with the Couchbase Autonomous Operator. +NOTE: The Couchbase-supplied Prometheus Exporter container image is only supported on Kubernetes platforms in conjunction with the Couchbase Kubernetes Operator. == Couchbase Exporter Configuration @@ -182,7 +182,7 @@ spec: <.> Setting xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-monitoring-prometheus-enabled[`couchbaseclusters.spec.monitoring.prometheus.enabled`] to `true` enables injection of the sidecar into Couchbase Server pods. -<.> If the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-monitoring-prometheus-image[`couchbaseclusters.spec.monitoring.prometheus.image`] field is left unspecified, then the dynamic admission controller will automatically populate it with the most recent container image that was available when the installed version of the Autonomous Operator was released. +<.> If the xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-monitoring-prometheus-image[`couchbaseclusters.spec.monitoring.prometheus.image`] field is left unspecified, then the dynamic admission controller will automatically populate it with the most recent container image that was available when the installed version of the Kubernetes Operator was released. The default image for open source Kubernetes comes from https://hub.docker.com/r/couchbase/exporter[Docker Hub^], and the default image for OpenShift comes from https://access.redhat.com/containers/#/vendor/couchbase[Red Hat Container Catalog^]. + If pulling directly from the the Red Hat Container Catalog, then the path will be something similar to `registry.connect.redhat.com/couchbase/exporter:{prometheus-version}` (you can refer to the catalog for the most recent images). @@ -237,12 +237,12 @@ For instructions on how to create a custom metrics configuration and build it in Once configured, active metrics can be collected from each Couchbase Server pod on port 9091. -The Autonomous Operator does not create or manage resources for third-party software. +The Kubernetes Operator does not create or manage resources for third-party software. Prometheus scrape targets must be manually created by the user. === Couchbase Cluster Auto-scaling -The Autonomous Operator supports xref:concept-couchbase-autoscaling.adoc[auto-scaling Couchbase clusters]. +The Kubernetes Operator supports xref:concept-couchbase-autoscaling.adoc[auto-scaling Couchbase clusters]. In order to properly take advantage of this feature, users must xref:concept-couchbase-autoscaling.adoc#couchbase-metrics[expose Couchbase metrics through the Kubernetes custom metrics API]. Discovery of available metrics can be performed through Prometheus https://github.com/couchbase/couchbase-exporter#queries[queries^]. diff --git a/modules/ROOT/pages/howto-tls-passphrase.adoc b/modules/ROOT/pages/howto-tls-passphrase.adoc index 467e7343..37d0747f 100644 --- a/modules/ROOT/pages/howto-tls-passphrase.adoc +++ b/modules/ROOT/pages/howto-tls-passphrase.adoc @@ -32,7 +32,7 @@ Refer to xref:howto-tls.adoc#creating-secrets[TLS Secret Create] documentation t == Passphrase registration -The Autonomous Operator is capable of registering a local script or a rest endpoint to generate the secret passphrase used by a private key. +The Kubernetes Operator is capable of registering a local script or a rest endpoint to generate the secret passphrase used by a private key. Passphrase TLS can be enabled from a non-TLS cluster or from a cluster with plain TLS keys. When enabling passphrase TLS on a Cluster that is already provisioned, the Couchbase Cluster will enter a rolling upgrade of the Server Pods. diff --git a/modules/ROOT/pages/howto-xdcr.adoc b/modules/ROOT/pages/howto-xdcr.adoc index 5de4f0bb..8dd5d59c 100644 --- a/modules/ROOT/pages/howto-xdcr.adoc +++ b/modules/ROOT/pages/howto-xdcr.adoc @@ -325,7 +325,7 @@ The hostname is calculated as per the xref:howto-client-sdks.adoc#ip-based-addre == Scopes and collections support With Couchbase Server version 7 and greater, scope and collections support is now present for XDCR. -The Couchbase Autonomous Operator fully supports the various options available to the Couchbase Server version it is running with, full details can be found in the xref:server:manage:manage-xdcr/replicate-using-scopes-and-collections.html[official documentation]. +The Couchbase Kubernetes Operator fully supports the various options available to the Couchbase Server version it is running with, full details can be found in the xref:server:manage:manage-xdcr/replicate-using-scopes-and-collections.html[official documentation]. [NOTE] ==== diff --git a/modules/ROOT/pages/install-kubernetes.adoc b/modules/ROOT/pages/install-kubernetes.adoc index 89b6bc77..707e605d 100644 --- a/modules/ROOT/pages/install-kubernetes.adoc +++ b/modules/ROOT/pages/install-kubernetes.adoc @@ -2,11 +2,11 @@ :page-aliases: install-admission-controller, list-and-describe [abstract] -This guide walks through the recommended procedure for installing the Couchbase Autonomous Operator on an open source Kubernetes cluster that has _RBAC enabled_. +This guide walks through the recommended procedure for installing the Couchbase Kubernetes Operator on an open source Kubernetes cluster that has _RBAC enabled_. [IMPORTANT] ==== -If you are looking to upgrade an existing installation of the Operator, see xref:howto-operator-upgrade.adoc[Upgrading the Autonomous Operator]. +If you are looking to upgrade an existing installation of the Operator, see xref:howto-operator-upgrade.adoc[Upgrading the Kubernetes Operator]. ==== == Helm Installation @@ -33,9 +33,9 @@ All commands in this guide are run as a system administrator account; they requi There are numerous certified Kubernetes offerings that are conformant to the https://www.cncf.io/certification/software-conformance/[CNCF Certified Kubernetes program^]. This program ensures that every vendor’s version of Kubernetes supports the required APIs, as do open source community versions. -Couchbase runs its own certification suites on the most widely used vendors to ensure the Couchbase Autonomous Operator is fully compatible and supported. +Couchbase runs its own certification suites on the most widely used vendors to ensure the Couchbase Kubernetes Operator is fully compatible and supported. -The following certified Kubernetes hosted vendors are supported by the Autonomous Operator: +The following certified Kubernetes hosted vendors are supported by the Kubernetes Operator: * Amazon Elastic Kubernetes Service (EKS) * Google Kubernetes Engine (GKE) diff --git a/modules/ROOT/pages/install-openshift.adoc b/modules/ROOT/pages/install-openshift.adoc index 49a198b6..5f2e7daf 100644 --- a/modules/ROOT/pages/install-openshift.adoc +++ b/modules/ROOT/pages/install-openshift.adoc @@ -1,11 +1,11 @@ = Install the Operator on OpenShift [abstract] -This guide walks through the recommended procedure for installing the Couchbase Autonomous Operator on a Red Hat OpenShift project. +This guide walks through the recommended procedure for installing the Couchbase Kubernetes Operator on a Red Hat OpenShift project. [IMPORTANT] ==== -If you are looking to upgrade an existing installation of the Operator, see xref:howto-operator-upgrade.adoc[Upgrading the Autonomous Operator]. +If you are looking to upgrade an existing installation of the Operator, see xref:howto-operator-upgrade.adoc[Upgrading the Kubernetes Operator]. ==== == Prerequisites @@ -45,7 +45,7 @@ Refer to the xref:concept-operator.adoc[operator architecture document] for addi [IMPORTANT] ==== -If you use the Openshift Marketplace UI to deploy the Couchbase Autonomous Operator, the dynamic admission controller (DAC) will not be deployed. +If you use the Openshift Marketplace UI to deploy the Couchbase Kubernetes Operator, the dynamic admission controller (DAC) will not be deployed. It is recommended that you use the `cao create admission` command to deploy the DAC after installing the Operator. ==== diff --git a/modules/ROOT/pages/overview.adoc b/modules/ROOT/pages/overview.adoc index 097b1f45..a10f5943 100644 --- a/modules/ROOT/pages/overview.adoc +++ b/modules/ROOT/pages/overview.adoc @@ -1,6 +1,6 @@ = Introduction -The Couchbase Cloud-Native Database is the native integration of Couchbase Server with cloud-native technologies, facilitated by the Couchbase Autonomous Operator. +The Couchbase Cloud-Native Database is the native integration of Couchbase Server with cloud-native technologies, facilitated by the Couchbase Kubernetes Operator. This integration empowers organizations to build and run scalable stateful applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. diff --git a/modules/ROOT/pages/prerequisite-and-setup.adoc b/modules/ROOT/pages/prerequisite-and-setup.adoc index ae1330ec..522d7f65 100644 --- a/modules/ROOT/pages/prerequisite-and-setup.adoc +++ b/modules/ROOT/pages/prerequisite-and-setup.adoc @@ -3,9 +3,9 @@ include::partial$constants.adoc[] [abstract] -The Autonomous Operator supports several popular Kubernetes environments and cloud-native utilities. +The Kubernetes Operator supports several popular Kubernetes environments and cloud-native utilities. -To install the Couchbase Autonomous Operator, all you need is a Kubernetes or OpenShift cluster running one of the <>. +To install the Couchbase Kubernetes Operator, all you need is a Kubernetes or OpenShift cluster running one of the <>. NOTE: For all supported software versions listed on this page, maintenance/patch releases (x.x**.X**) inherit the same support level, unless noted otherwise. @@ -146,7 +146,7 @@ This release supports the following managed Kubernetes services and utilities: == Persistent Volume Compatibility Persistent volumes are mandatory for production deployments. -Review the Autonomous Operator xref:best-practices.adoc#persistent-volumes-best-practices[best practices] for more information about cluster supportability requirements. +Review the Kubernetes Operator xref:best-practices.adoc#persistent-volumes-best-practices[best practices] for more information about cluster supportability requirements. == Hardware Requirements @@ -170,7 +170,7 @@ You can read more about pod scheduling in the xref:best-practices.adoc#pod-sched === Architecture requirements -The Autonomous Operator supports both ARM and AMD64 Kubernetes clusters. +The Kubernetes Operator supports both ARM and AMD64 Kubernetes clusters. The architecture of each node must be uniform across the cluster as the use of mixed architecture nodes is not supported. NOTE: The official Couchbase docker repository contains multi-arch images which do not require explicit references to architecture tags when being pulled and deployed. diff --git a/modules/ROOT/pages/prerequisite-cloud.adoc b/modules/ROOT/pages/prerequisite-cloud.adoc index f79f553e..da881c6e 100644 --- a/modules/ROOT/pages/prerequisite-cloud.adoc +++ b/modules/ROOT/pages/prerequisite-cloud.adoc @@ -135,7 +135,7 @@ The https://cloud.google.com/sdk/[Google Cloud SDK^] can allow you to authentica === Authorization -By default, Google GKE does not provide the necessary privileges required to deploy the Autonomous Operator. +By default, Google GKE does not provide the necessary privileges required to deploy the Kubernetes Operator. The required privileges can be granted to a specific user with the following command: [source,console] diff --git a/modules/ROOT/pages/reference-admission-cli.adoc b/modules/ROOT/pages/reference-admission-cli.adoc index 9789ea9d..183f14bb 100644 --- a/modules/ROOT/pages/reference-admission-cli.adoc +++ b/modules/ROOT/pages/reference-admission-cli.adoc @@ -1,7 +1,7 @@ = Dynamic Admission Controller Deployment Settings [abstract] -Command line options for the Autonomous Operator Dynamic Admission Controller. +Command line options for the Kubernetes Operator Dynamic Admission Controller. == Dynamic Admission Controller Deployment diff --git a/modules/ROOT/pages/reference-operator-configuration.adoc b/modules/ROOT/pages/reference-operator-configuration.adoc index 472efcdb..62b30b0b 100644 --- a/modules/ROOT/pages/reference-operator-configuration.adoc +++ b/modules/ROOT/pages/reference-operator-configuration.adoc @@ -3,7 +3,7 @@ == Operator Deployment -The Couchbase Autonomous Operator configuration is defined below. +The Couchbase Kubernetes Operator configuration is defined below. This is intended as a reference only, and you should prefer the use of the xref:tools/cao.adoc[`cao` utility] or xref:helm-setup-guide.adoc[Helm], as these will handle configuration for you and provide an abstraction layer, less prone to modification. IMPORTANT: Most of the fields in the Operator configuration should never be changed and it is recommended that you use the configuration as is. However, there are some exceptions noted below. @@ -140,9 +140,9 @@ Controls at what level a log message generates a stack trace for debugging purpo == Environment Variables -When running in different contexts such as Red Hat Marketplace in https://docs.openshift.com/container-platform/4.6/operators/operator_sdk/osdk-generating-csvs.html#olm-enabling-operator-for-restricted-network_osdk-generating-csvs[disconnected mode^], additional environment variables may be added to adjust behavior of the Autonomous Operator. +When running in different contexts such as Red Hat Marketplace in https://docs.openshift.com/container-platform/4.6/operators/operator_sdk/osdk-generating-csvs.html#olm-enabling-operator-for-restricted-network_osdk-generating-csvs[disconnected mode^], additional environment variables may be added to adjust behavior of the Kubernetes Operator. -The following example shows supported image variables that can be used to override the default images provided to the Autonomous Operator. +The following example shows supported image variables that can be used to override the default images provided to the Kubernetes Operator. [source,yaml] ---- spec: diff --git a/modules/ROOT/pages/reference-operator-logging.adoc b/modules/ROOT/pages/reference-operator-logging.adoc index a0c386cc..3fe9f433 100644 --- a/modules/ROOT/pages/reference-operator-logging.adoc +++ b/modules/ROOT/pages/reference-operator-logging.adoc @@ -1,11 +1,11 @@ -= Autonomous Operator Log Attributes += Kubernetes Operator Log Attributes [abstract] -Autonomous Operator logs contain some fixed attributes that can be reliably used in your logging infrastructure. +Kubernetes Operator logs contain some fixed attributes that can be reliably used in your logging infrastructure. == Introduction -The Autonomous Operator emits logs on the pod console. +The Kubernetes Operator emits logs on the pod console. Logs are structured as JSON for simple machine parsing (though, they are schemaless). Logs look similar to the following: @@ -18,7 +18,7 @@ Logs look similar to the following: {"level":"info","ts":1580377226.7565176,"logger":"cluster","msg":"Creating XDCR remote cluster","cluster":"default/cb-example","remote":"remote"} ---- -The Autonomous Operator uses the https://pkg.go.dev/go.uber.org/zap[zap^] library to generate logging information. +The Kubernetes Operator uses the https://pkg.go.dev/go.uber.org/zap[zap^] library to generate logging information. Each entry is organized as a JSON object with key/value pairs of information. Some attributes are fixed and can be reliably used in your logging infrastructure and are documented in the following sections. @@ -28,7 +28,7 @@ Some attributes are fixed and can be reliably used in your logging infrastructur `level`:: This is the log level at which the message was emitted at. Valid values are `info`, `error`, `debug`, and `-N` (where N is an integer value based on debug level). -Levels that are emitted depend on the level that is specified in the Autonomous Operator xref:reference-operator-configuration.adoc[deployment settings]. +Levels that are emitted depend on the level that is specified in the Kubernetes Operator xref:reference-operator-configuration.adoc[deployment settings]. `ts`:: This is the message time stamp. diff --git a/modules/ROOT/pages/reference-operator-rbac.adoc b/modules/ROOT/pages/reference-operator-rbac.adoc index 4e3c151a..a89bc087 100644 --- a/modules/ROOT/pages/reference-operator-rbac.adoc +++ b/modules/ROOT/pages/reference-operator-rbac.adoc @@ -11,7 +11,7 @@ A role essentially maps a name to a set of permissions that a user or service is The key distinction is that cluster-scoped roles can be specified once and used in any name space, whereas namespace-scoped roles have to be defined in each name space they are used in. -The Couchbase Autonomous Operator is currently scoped to a namespace and needs access to various resources within that namespace in order to function correctly. The resources required by the Operator are: +The Couchbase Kubernetes Operator is currently scoped to a namespace and needs access to various resources within that namespace in order to function correctly. The resources required by the Operator are: couchbase.com/couchbaseclusters:: couchbase.com/couchbaseclusters/finalizers:: diff --git a/modules/ROOT/pages/reference-prometheus-metrics.adoc b/modules/ROOT/pages/reference-prometheus-metrics.adoc index 518366e8..b762ed50 100644 --- a/modules/ROOT/pages/reference-prometheus-metrics.adoc +++ b/modules/ROOT/pages/reference-prometheus-metrics.adoc @@ -1,7 +1,7 @@ = Prometheus Metrics Reference [abstract] -This page captures the metrics supplied to Prometheus by the Couchbase Autonomous Operator and links reference pages of a number of additional metrics that are exported by third party libraries. +This page captures the metrics supplied to Prometheus by the Couchbase Kubernetes Operator and links reference pages of a number of additional metrics that are exported by third party libraries. == Operator Metrics diff --git a/modules/ROOT/pages/release-notes.adoc b/modules/ROOT/pages/release-notes.adoc index aff2537e..fe6f106c 100644 --- a/modules/ROOT/pages/release-notes.adoc +++ b/modules/ROOT/pages/release-notes.adoc @@ -1,7 +1,7 @@ -= Release Notes for Couchbase Autonomous Operator {operator-version-minor} += Release Notes for Couchbase Kubernetes Operator {operator-version-minor} include::partial$constants.adoc[] -Autonomous Operator {operator-version-minor} introduces a preview of our new Cluster Migration functionality well as a number of other improvements and minor fixes. +Kubernetes Operator {operator-version-minor} introduces a preview of our new Cluster Migration functionality well as a number of other improvements and minor fixes. Take a look at the xref:whats-new.adoc[What's New] page for a list of new features and improvements that are available in this release. @@ -12,9 +12,9 @@ For installation instructions, refer to: * xref:install-kubernetes.adoc[] * xref:install-openshift.adoc[] -== Upgrading to Autonomous Operator {operator-version-minor} +== Upgrading to Kubernetes Operator {operator-version-minor} -The necessary steps needed to upgrade to this release depend on which version of the Autonomous Operator you are upgrading from. +The necessary steps needed to upgrade to this release depend on which version of the Kubernetes Operator you are upgrading from. === Upgrading from 1.x, 2.0, or 2.1 @@ -31,7 +31,7 @@ For further information read the xref:concept-upgrade.adoc[Couchbase Upgrade] co [#release-v280] == Release 2.8.0 -Couchbase Autonomous Operator 2.8.0 was released in March 2025. +Couchbase Kubernetes Operator 2.8.0 was released in March 2025. [#changes-in-behavior-v280] === Changes in Behaviour diff --git a/modules/ROOT/pages/tutorial-autoscale-data.adoc b/modules/ROOT/pages/tutorial-autoscale-data.adoc index 97aa690f..d5e40306 100644 --- a/modules/ROOT/pages/tutorial-autoscale-data.adoc +++ b/modules/ROOT/pages/tutorial-autoscale-data.adoc @@ -2,13 +2,13 @@ include::partial$constants.adoc[] [abstract] -Learn how to configure auto-scaling for Data Service nodes using the Autonomous Operator. +Learn how to configure auto-scaling for Data Service nodes using the Kubernetes Operator. include::partial$tutorial.adoc[] == Introduction -In this tutorial you'll learn how to use the Autonomous Operator to automatically scale the Couchbase Data Service in order to maintain a target memory utilization threshold for an xref:server:learn:buckets-memory-and-storage/buckets.adoc[Ephemeral bucket]. +In this tutorial you'll learn how to use the Kubernetes Operator to automatically scale the Couchbase Data Service in order to maintain a target memory utilization threshold for an xref:server:learn:buckets-memory-and-storage/buckets.adoc[Ephemeral bucket]. You'll also learn more about how the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler^] (HPA) initiates a request to scale the Data Service in order to maintain desired thresholds. [[before-you-begin]] @@ -19,7 +19,7 @@ Before you begin this tutorial, you'll need to set up a few things first: * You'll need a Kubernetes cluster with at least seven available worker nodes. ** Worker nodes should have 4 vCPU and 16 GiB memory in order to exhibit the expected auto-scaling behavior that you'll be initiating later on in this tutorial. -* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Autonomous Operator, the Couchbase cluster, etc.) +* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Kubernetes Operator, the Couchbase cluster, etc.) ** Once you have Helm installed, you'll need to add the Couchbase chart repository: + @@ -115,8 +115,8 @@ $ helm upgrade --install -f autoscale_values.yaml scale couchbase/couchbase-oper [NOTE] ==== -The Couchbase chart deploys the Autonomous Operator by default. -If you already have the Autonomous Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: +The Couchbase chart deploys the Kubernetes Operator by default. +If you already have the Kubernetes Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: [source,console] ---- @@ -146,7 +146,7 @@ Events: Normal EventAutoscalerCreated 22m Autoscaler for config `default` added ---- -The Autonomous Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. +The Kubernetes Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. The Operator also keeps the size of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource in sync with the size of its associated server class configuration. Run the following command to verify that the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource exists and matches the size of its associated server configuration: @@ -162,10 +162,10 @@ default.scale-couchbase-cluster 2 default <.> <.> In the console output, you'll see: -<.> `NAME`: The Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. -Considering that we enabled auto-scaling for the `default` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Autonomous Operator will be `default.scale-couchbase-cluster`. +<.> `NAME`: The Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. +Considering that we enabled auto-scaling for the `default` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Kubernetes Operator will be `default.scale-couchbase-cluster`. -<.> `SIZE`: This is the current number of Couchbase nodes that the Autonomous Operator is maintaining for the `default` server class. +<.> `SIZE`: This is the current number of Couchbase nodes that the Kubernetes Operator is maintaining for the `default` server class. Considering that we set `servers.default.size` to `2` in our cluster configuration, and because the cluster doesn't yet have the ability to automatically scale, we can expect that the `SIZE` listed here will be `2`. Once we create an HPA for the `default` server class, and the number of `default` nodes begins to scale, the `SIZE` will update to reflect the number of nodes currently being maintained. @@ -243,10 +243,10 @@ spec: EOF ---- -<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Autonomous Operator when you enable auto-scaling for a particular server class. +<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Kubernetes Operator when you enable auto-scaling for a particular server class. <.> `scaleTargetRef.name`: This field needs to reference the `name` of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource. -Since the Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need to specify is `default.scale-couchbase-cluster`. +Since the Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need to specify is `default.scale-couchbase-cluster`. + -- [TIP] @@ -404,7 +404,7 @@ Delete the HPA: $ kubectl delete hpa data-hpa ---- -Uninstall both the Autonomous Operator and Couchbase cluster by deleting the Helm release: +Uninstall both the Kubernetes Operator and Couchbase cluster by deleting the Helm release: [source,console] ---- diff --git a/modules/ROOT/pages/tutorial-autoscale-index.adoc b/modules/ROOT/pages/tutorial-autoscale-index.adoc index 8727705e..1850cafb 100644 --- a/modules/ROOT/pages/tutorial-autoscale-index.adoc +++ b/modules/ROOT/pages/tutorial-autoscale-index.adoc @@ -2,13 +2,13 @@ include::partial$constants.adoc[] [abstract] -Learn how to configure auto-scaling for Index Service nodes using the Autonomous Operator. +Learn how to configure auto-scaling for Index Service nodes using the Kubernetes Operator. include::partial$tutorial.adoc[] == Introduction -In this tutorial you'll learn how to use the Autonomous Operator to automatically scale the Couchbase Index Service in order to maintain a target memory utilization threshold for indexes. +In this tutorial you'll learn how to use the Kubernetes Operator to automatically scale the Couchbase Index Service in order to maintain a target memory utilization threshold for indexes. You'll also learn more about how the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler^] (HPA) initiates a request to scale the Index Service in order to maintain desired thresholds. [[before-you-begin]] @@ -19,7 +19,7 @@ Before you begin this tutorial, you'll need to set up a few things first: * You'll need a Kubernetes cluster with at least eight available worker nodes. ** Worker nodes should have 4 vCPU and 16 GiB memory in order to exhibit the expected auto-scaling behavior that you'll be initiating later on in this tutorial. -* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Autonomous Operator, the Couchbase cluster, etc.) +* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Kubernetes Operator, the Couchbase cluster, etc.) ** Once you have Helm installed, you'll need to add the Couchbase chart repository: + @@ -121,7 +121,7 @@ EOF <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-cluster-indexservicememoryquota[`couchbaseclusters.spec.cluster.indexServiceMemoryQuota`]: For demonstration purposes, we're setting the default minimum memory quota for the Index Service (`256Mi`) so that we can more quickly and easily induce auto-scaling. + -NOTE: This cluster configuration uses the default index storage mode set by the Autonomous Operator, which is `memory_optimized`. +NOTE: This cluster configuration uses the default index storage mode set by the Kubernetes Operator, which is `memory_optimized`. This allows us to demonstrate the benefits of auto-scaling in situations when persisting to disk isn't an option. @@ -141,8 +141,8 @@ $ helm upgrade --install -f autoscale_values.yaml scale couchbase/couchbase-oper [NOTE] ==== -The Couchbase chart deploys the Autonomous Operator by default. -If you already have the Autonomous Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: +The Couchbase chart deploys the Kubernetes Operator by default. +If you already have the Kubernetes Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: [source,console] ---- @@ -172,7 +172,7 @@ Events: Normal EventAutoscalerCreated 22m Autoscaler for config `index` added ---- -The Autonomous Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. +The Kubernetes Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. The Operator also keeps the size of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource in sync with the size of its associated server class configuration. Run the following command to verify that the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource exists and matches the size of its associated server configuration: @@ -188,10 +188,10 @@ index.scale-couchbase-cluster 1 index <.> <.> In the console output, you'll see: -<.> `NAME`: The Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. -Considering that we enabled auto-scaling for the `index` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Autonomous Operator will be `index.scale-couchbase-cluster`. +<.> `NAME`: The Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. +Considering that we enabled auto-scaling for the `index` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Kubernetes Operator will be `index.scale-couchbase-cluster`. -<.> `SIZE`: This is the current number of Couchbase nodes that the Autonomous Operator is maintaining for the `index` server class. +<.> `SIZE`: This is the current number of Couchbase nodes that the Kubernetes Operator is maintaining for the `index` server class. Considering that we set `servers.index.size` to `1` in our cluster configuration, and because the cluster doesn't yet have the ability to automatically scale, we can expect that the `SIZE` listed here will be `1`. Once we create an HPA for the `index` server class, and the number of `index` nodes begins to scale, the `SIZE` will update to reflect the number of nodes currently being maintained. @@ -268,10 +268,10 @@ spec: EOF ---- -<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Autonomous Operator when you enable auto-scaling for a particular server class. +<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Kubernetes Operator when you enable auto-scaling for a particular server class. <.> `scaleTargetRef.name`: This field needs to reference the `name` of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource. -Since the Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need to specify is `index.scale-couchbase-cluster`. +Since the Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need to specify is `index.scale-couchbase-cluster`. + -- [TIP] @@ -462,7 +462,7 @@ Uninstall the monitoring stack by deleting the Helm release: $ helm delete monitor ---- -Uninstall both the Autonomous Operator and Couchbase cluster by deleting the Helm release: +Uninstall both the Kubernetes Operator and Couchbase cluster by deleting the Helm release: [source,console] ---- diff --git a/modules/ROOT/pages/tutorial-autoscale-query.adoc b/modules/ROOT/pages/tutorial-autoscale-query.adoc index 5453e6cd..e34b1971 100644 --- a/modules/ROOT/pages/tutorial-autoscale-query.adoc +++ b/modules/ROOT/pages/tutorial-autoscale-query.adoc @@ -2,13 +2,13 @@ :page-aliases: tutorial-autoscale.adoc [abstract] -Learn how to configure auto-scaling for Query Service nodes using the Autonomous Operator. +Learn how to configure auto-scaling for Query Service nodes using the Kubernetes Operator. include::partial$tutorial.adoc[] == Introduction -In this tutorial you'll learn how to use the Autonomous Operator to automatically scale the Couchbase Query Service in order to maintain a target CPU utilization threshold. +In this tutorial you'll learn how to use the Kubernetes Operator to automatically scale the Couchbase Query Service in order to maintain a target CPU utilization threshold. You'll also learn more about how the Kubernetes https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/[Horizontal Pod Autoscaler^] (HPA) initiates a request to scale the Query Service in order to maintain desired performance thresholds. @@ -20,7 +20,7 @@ Before you begin this tutorial, you'll need to set up a few things first: * You'll need a Kubernetes cluster with at least 10 available worker nodes. ** Worker nodes should have 4 vCPU and 16 GiB memory in order to exhibit the expected auto-scaling behavior that you'll be initiating later on in this tutorial. -* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1^] or higher for installing the necessary dependencies (e.g. the Autonomous Operator, the Couchbase cluster, etc.) +* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1^] or higher for installing the necessary dependencies (e.g. the Kubernetes Operator, the Couchbase cluster, etc.) ** Once you have Helm installed, you'll need to add the Couchbase chart repository: + @@ -164,8 +164,8 @@ $ helm install -f autoscale_values.yaml scale couchbase/couchbase-operator [NOTE] ==== -The Couchbase chart deploys the Autonomous Operator by default. -If you already have the Autonomous Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: +The Couchbase chart deploys the Kubernetes Operator by default. +If you already have the Kubernetes Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: [source,console] ---- @@ -195,7 +195,7 @@ Events: Normal EventAutoscalerCreated 22m Autoscaler for config `query` added ---- -The Autonomous Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. +The Kubernetes Operator automatically creates a xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource for each server class configuration that has xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-autoscaleenabled[`couchbaseclusters.spec.servers.autoscaleEnabled`] set to `true`. The Operator also keeps the size of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource in sync with the size of its associated server class configuration. Run the following command to verify that the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource exists and matches the size of its associated server configuration: @@ -211,10 +211,10 @@ query.scale-couchbase-cluster 2 query <.> <.> In the console output, you'll see: -<.> `NAME`: The Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. -Considering that we enabled auto-scaling for the `query` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Autonomous Operator will be `query.scale-couchbase-cluster`. +<.> `NAME`: The Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`. +Considering that we enabled auto-scaling for the `query` server class configuration, and the name of our cluster is `scale-couchbase-cluster`, we can determine that the name of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource created by the Kubernetes Operator will be `query.scale-couchbase-cluster`. -<.> `SIZE`: This is the current number of Couchbase nodes that the Autonomous Operator is maintaining for the `query` server class. +<.> `SIZE`: This is the current number of Couchbase nodes that the Kubernetes Operator is maintaining for the `query` server class. Considering that we set `servers.query.size` to `2` in our cluster configuration, and because the cluster doesn't yet have the ability to automatically scale, we can expect that the `SIZE` listed here will be `2`. Once we create an HPA for the `query` server class, and the number of `query` nodes begins to scale, the `SIZE` will update to reflect the number of nodes currently being maintained. @@ -287,10 +287,10 @@ spec: EOF ---- -<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Autonomous Operator when you enable auto-scaling for a particular server class. +<.> `scaleTargetRef.kind`: This field must be set to xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`], which is the `kind` of custom resource that gets automatically created by the Kubernetes Operator when you enable auto-scaling for a particular server class. <.> `scaleTargetRef.name`: This field needs to reference the `name` of the xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resource. -Since the Autonomous Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need specify is `query.scale-couchbase-cluster`. +Since the Kubernetes Operator creates xref:resource/couchbaseautoscaler.adoc[`CouchbaseAutoscaler`] custom resources with the name format `__.__`, the name we'll need specify is `query.scale-couchbase-cluster`. + -- [TIP] @@ -610,7 +610,7 @@ Delete the HPA: $ kubectl delete hpa query-cpu-hpa ---- -Uninstall both the Autonomous Operator and Couchbase cluster by deleting the Helm release: +Uninstall both the Kubernetes Operator and Couchbase cluster by deleting the Helm release: [source,console] ---- diff --git a/modules/ROOT/pages/tutorial-cert-manager.adoc b/modules/ROOT/pages/tutorial-cert-manager.adoc index 7ef360ac..c15c28d3 100644 --- a/modules/ROOT/pages/tutorial-cert-manager.adoc +++ b/modules/ROOT/pages/tutorial-cert-manager.adoc @@ -8,7 +8,7 @@ include::partial$tutorial.adoc[] == What is cert-manager? -https://cert-manager.io/[cert-manager^] is a Kubernetes controller -- much like the Autonomous Operator -- that defines Kubernetes resource types that represent X.509 primitives. +https://cert-manager.io/[cert-manager^] is a Kubernetes controller -- much like the Kubernetes Operator -- that defines Kubernetes resource types that represent X.509 primitives. The key resources we will examine in further depth are: Issuer:: @@ -27,7 +27,7 @@ Certificates are initially issued by cert-manager, then at a defined time before Certificates are stored in a Kubernetes `Secret` resource, broadly similar to the standard `kubernetes.io/tls` secret type. The one major difference is that, along with `tls.crt` and `tls.key` secret data, there is also a `ca.crt` copied in from the `Issuer`. -(You may notice that this has heavily influenced the design of the Autonomous Operator's TLS interface.) +(You may notice that this has heavily influenced the design of the Kubernetes Operator's TLS interface.) [[before-we-begin]] == Before We Begin @@ -37,11 +37,11 @@ Before continuing with this tutorial, please ensure the following: * You have installed cert-manager. Follow the official installation guides at https://cert-manager.io/docs/installation/[`cert-manager.io`^]. -* You have installed Autonomous Operator 2.2 or higher. -This tutorial assumes that the installed resources are present, and also leverages the xref:tools/cao.adoc[`cao`] command line tool that comes with the Autonomous Operator binary package. +* You have installed Kubernetes Operator 2.2 or higher. +This tutorial assumes that the installed resources are present, and also leverages the xref:tools/cao.adoc[`cao`] command line tool that comes with the Kubernetes Operator binary package. + -NOTE: You can actually integrate/perform the steps in this tutorial as part of the process of installing the Autonomous Operator. -However, for the sake of making the tutorial more straightforward, it is assumed that you've already performed a basic xref:install-kubernetes.adoc[installation] of the Autonomous Operator. +NOTE: You can actually integrate/perform the steps in this tutorial as part of the process of installing the Kubernetes Operator. +However, for the sake of making the tutorial more straightforward, it is assumed that you've already performed a basic xref:install-kubernetes.adoc[installation] of the Kubernetes Operator. Another thing to note is that all of the commands in this tutorial are run from the same, default, namespace. cert-manager runs cluster scoped, and can see Issuers and Certificates in any namespace, so you can use any namespace you desire. @@ -120,13 +120,13 @@ $ kubectl apply -f ca-issuer.yaml == Using cert-manager with the DAC -The DAC xref:concept-operator.adoc#dynamic-admission-controller[component] of the Autonomous Operator distribution has built-in certificate rotation detection and handling. +The DAC xref:concept-operator.adoc#dynamic-admission-controller[component] of the Kubernetes Operator distribution has built-in certificate rotation detection and handling. This makes it a perfect candidate for automation. [[uninstall-the-existing-dac]] === Uninstall the Existing DAC -As mentioned in the <> section, this tutorial assumes that you've already performed a basic xref:install-kubernetes.adoc[installation] of the Autonomous Operator. +As mentioned in the <> section, this tutorial assumes that you've already performed a basic xref:install-kubernetes.adoc[installation] of the Kubernetes Operator. As part of the installation, you would have also installed the DAC. Before we can continue with the tutorial, we need to _uninstall_ the DAC. (Don't worry, we'll be re-installing it soon.) @@ -210,7 +210,7 @@ couchbase-operator-admission True couchbase-operator-admission 4s === Update the DAC Configuration Settings -When you install the Autonomous Operator, the xref:tools/cao.adoc[`cao`] tool automatically creates a default TLS configuration for you. +When you install the Kubernetes Operator, the xref:tools/cao.adoc[`cao`] tool automatically creates a default TLS configuration for you. However, we don't have to worry about this default configuration because we removed it entirely when we uninstalled the DAC in the section <>. Therefore, in this next step, we will generate a brand new DAC configuration, modify it to make use of our managed certificates, and then submit it to Kubernetes to redeploy the DAC. @@ -289,7 +289,7 @@ If this is the case, check that the correct CA is installed in the webhooks, and == Using cert-manager with a Couchbase Cluster -The Autonomous Operator has been capable of rotating Couchbase Server certificates since version 2.0. +The Kubernetes Operator has been capable of rotating Couchbase Server certificates since version 2.0. With the 2.2 release, we introduced the ability to use new certificate formats, in particular the standard form used by cert-manager. This allows the database's TLS configuration to be specified in code, along with security policies. The key benefits of using this are 1.) oversight -- the ability to peer review configuration; and 2.) auditing -- providing simple, policy driven security constraints. @@ -368,7 +368,7 @@ couchbase-operator-admission True couchbase-operator-admission 32m === Create the Couchbase Cluster Consuming certificates issued by cert-manager is fairly straightforward. -Using the `couchbase-cluster.yaml` template from the Autonomous Operator binary package, make the following edits to the `CouchbaseCluster` custom resource: +Using the `couchbase-cluster.yaml` template from the Kubernetes Operator binary package, make the following edits to the `CouchbaseCluster` custom resource: [source,console] ---- @@ -409,9 +409,9 @@ spec: - query ---- -<.> The `secretSource` TLS provider tells the Autonomous Operator that the secrets will be in `kubernetes.io/tls` format. +<.> The `secretSource` TLS provider tells the Kubernetes Operator that the secrets will be in `kubernetes.io/tls` format. This also requires a `ca.crt` key, which cert-manager provides automatically. -<.> The `serverSecretName` tells the Autonomous Operator to use the cert-manager issued secret defined in the previous section <>. +<.> The `serverSecretName` tells the Kubernetes Operator to use the cert-manager issued secret defined in the previous section <>. Run the following command to create the `Certificate` resource: @@ -437,4 +437,4 @@ cb-example 7.2.3 3 Available 8c531b1cc11680c286d04616cc7a8185 3m3 == Summary -By embracing the `kubernetes.io/tls` format, the Autonomous Operator is able to draw upon great 3rd-party tools, like cert-manager, that offer simplicity, security, and regulation within your Kubernetes environment. +By embracing the `kubernetes.io/tls` format, the Kubernetes Operator is able to draw upon great 3rd-party tools, like cert-manager, that offer simplicity, security, and regulation within your Kubernetes environment. diff --git a/modules/ROOT/pages/tutorial-couchbase-log-forwarding.adoc b/modules/ROOT/pages/tutorial-couchbase-log-forwarding.adoc index 128dbc59..f8b7e40a 100644 --- a/modules/ROOT/pages/tutorial-couchbase-log-forwarding.adoc +++ b/modules/ROOT/pages/tutorial-couchbase-log-forwarding.adoc @@ -3,7 +3,7 @@ include::partial$constants.adoc[] :example-prerequisites: This example assumes you've deployed the CouchbaseCluster resource described at the <>. It also assumes that you are familiar with how to <>. [abstract] -Learn how to configure the Autonomous Operator to forward Couchbase logs using Fluent Bit. +Learn how to configure the Kubernetes Operator to forward Couchbase logs using Fluent Bit. include::partial$tutorial.adoc[] @@ -11,9 +11,9 @@ include::partial$tutorial.adoc[] Having a containerized application's logs available on standard console output is desirable in Kubernetes environments, since it allows for https://kubernetes.io/docs/tasks/debug-application-cluster/debug-running-pod/#examine-pod-logs[simple debugging^], as well as standards-based integration with centralized log management systems running in a Kubernetes cluster. Unfortunately, the Couchbase Server container doesn't natively write its logs to standard console output. -Instead, the xref:concept-couchbase-logging.adoc#default-logging[default behavior] of the Couchbase Server container (in deployments managed by the Autonomous Operator) is to write its xref:server:manage:manage-logging/manage-logging.adoc#log-file-listing[various log files] to the `default` or `logs` persistent volumes. +Instead, the xref:concept-couchbase-logging.adoc#default-logging[default behavior] of the Couchbase Server container (in deployments managed by the Kubernetes Operator) is to write its xref:server:manage:manage-logging/manage-logging.adoc#log-file-listing[various log files] to the `default` or `logs` persistent volumes. -However, as of version 2.2, the Autonomous Operator can optionally deploy and manage a third party log processor on each Couchbase pod which enables Couchbase Server logs to be xref:concept-couchbase-logging.adoc#log-forwarding[forwarded] to the log processor's standard console output as well as other destinations. +However, as of version 2.2, the Kubernetes Operator can optionally deploy and manage a third party log processor on each Couchbase pod which enables Couchbase Server logs to be xref:concept-couchbase-logging.adoc#log-forwarding[forwarded] to the log processor's standard console output as well as other destinations. This guide will walk you through an example of how to configure log forwarding for a Couchbase deployment using the Couchbase-supplied log processor image based on https://fluentbit.io/[Fluent Bit^]. Examples are provided for forwarding logs to Loki and Elasticsearch, as well as how to target Azure blob storage and Amazon S3 storage for Couchbase Server xref:howto-manage-couchbase-logging.adoc#configuring-audit-logging[audit logs]. @@ -22,8 +22,8 @@ An example for configuring log redaction is also shown to demonstrate how the lo [[before-you-begin]] == Before You Begin -This tutorial assumes that you have already xref:install-kubernetes.adoc[installed] the Autonomous Operator. -The Autonomous Operator needs to be running in the same namespace where you deploy the Couchbase cluster in the <> section below. +This tutorial assumes that you have already xref:install-kubernetes.adoc[installed] the Kubernetes Operator. +The Kubernetes Operator needs to be running in the same namespace where you deploy the Couchbase cluster in the <> section below. [[configure-the-couchbase-cluster]] == Configure the Couchbase Cluster @@ -100,7 +100,7 @@ spec: This field normally defaults to `false`. + This is technically the only field that needs to be modified in order to enable log forwarding. -The Autonomous Operator will default to pulling the Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[log processor image^] from the Docker public registry. +The Kubernetes Operator will default to pulling the Couchbase-supplied https://hub.docker.com/r/couchbase/fluent-bit[log processor image^] from the Docker public registry. <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-logging-audit-enabled[`couchbaseclusters.spec.logging.audit.enabled`]: Setting this field to `true` enables xref:howto-manage-couchbase-logging.adoc#configuring-audit-logging[audit logging] on the Couchbase cluster. This field normally defaults to `false`. @@ -125,7 +125,7 @@ Run the following command to deploy it into Kubernetes: $ kubectl apply -f couchbase-cluster-log-forwarding.yaml ---- -Note that the Autonomous Operator must already be deployed and running in the current namespace in order for the above command to succeed (refer to the <>). +Note that the Kubernetes Operator must already be deployed and running in the current namespace in order for the above command to succeed (refer to the <>). Next, verify that the cluster has been deployed successfully. @@ -173,7 +173,7 @@ Now that we've successfully implemented the default configuration for processing The _log forwarding configuration_ determines how the `logging` sidecar container processes and forwards Couchbase logs. Since this configuration can contain sensitive information, it is stored in a Kubernetes Secret. -When we created the Couchbase cluster in the <>, the Autonomous Operator automatically created a _default_ log forwarding configuration Secret with the name `fluent-bit-config`. +When we created the Couchbase cluster in the <>, the Kubernetes Operator automatically created a _default_ log forwarding configuration Secret with the name `fluent-bit-config`. We'll be modifying this Secret in order to implement our own custom configuration. === Allow Custom Configurations @@ -269,7 +269,7 @@ $ kubectl get secret "fluent-bit-config" -o go-template='{{range $k,$v := .data} === Next Steps Now that you've successfully implemented some basic log forwarding customizations, we recommend that you try out some of the other examples in this tutorial. -These examples should help you get an even better idea of the capabilities of both Fluent Bit and the Autonomous Operator when it comes to processing and forwarding Couchbase logs. +These examples should help you get an even better idea of the capabilities of both Fluent Bit and the Kubernetes Operator when it comes to processing and forwarding Couchbase logs. == Example: Loki Stack diff --git a/modules/ROOT/pages/tutorial-kubernetes-network-policy.adoc b/modules/ROOT/pages/tutorial-kubernetes-network-policy.adoc index e571eb91..389848fc 100644 --- a/modules/ROOT/pages/tutorial-kubernetes-network-policy.adoc +++ b/modules/ROOT/pages/tutorial-kubernetes-network-policy.adoc @@ -1,7 +1,7 @@ = Kubernetes Network Policies Using Deny-All Default [abstract] -The Autonomous Operator and Couchbase Server can be used with Kubernetes network policies although this is not officially supported currently. +The Kubernetes Operator and Couchbase Server can be used with Kubernetes network policies although this is not officially supported currently. include::partial$tutorial.adoc[] @@ -11,7 +11,7 @@ Refer to the xref:concept-kubernetes-networking.adoc#network-policies[concepts p [IMPORTANT] ==== -Network policies should work with Couchbase Autonomous Operator deployments but are currently unsupported officially. +Network policies should work with Couchbase Kubernetes Operator deployments but are currently unsupported officially. This information is provided to document a functional set up for those that need it prior to official support. The assumption is standard Kubernetes configuration is used rather than any specific to a particular network plugin. ==== @@ -68,7 +68,7 @@ For the purposes of the example we therefore deploy the DAC to the default names $ helm upgrade --install couchbase-dac couchbase/couchbase-operator --set install.couchbaseCluster=false,install.couchbaseOperator=false --namespace default --wait ---- -== Couchbase Autonomous Operator +== Couchbase Kubernetes Operator We will need to supply the Kubernetes API server details along with the DAC endpoint used by the operator to network policy rules. We also need to supply the Kubernetes namespace to use, here we simply use `test` as the name. diff --git a/modules/ROOT/pages/tutorial-prometheus.adoc b/modules/ROOT/pages/tutorial-prometheus.adoc index d77d7319..5ed52e30 100644 --- a/modules/ROOT/pages/tutorial-prometheus.adoc +++ b/modules/ROOT/pages/tutorial-prometheus.adoc @@ -1,7 +1,7 @@ = Quick Start with Prometheus Monitoring [abstract] -Enable and setup Prometheus Monitoring for the Couchbase Autonomous Operator. +Enable and setup Prometheus Monitoring for the Couchbase Kubernetes Operator. include::partial$tutorial.adoc[] @@ -10,7 +10,7 @@ include::partial$tutorial.adoc[] https://prometheus.io/[Prometheus^] is a leading open-source monitoring solution. As a https://www.cncf.io/announcements/2018/08/09/prometheus-graduates/[graduated project^] of the Cloud Native Computing Foundation, it has become the de facto standard for metrics collection and alert generation on cloud platforms. -The Couchbase Autonomous Operator can optionally manage a sidecar container that can provide detailed metrics to Prometheus about the health of a Couchbase cluster. +The Couchbase Kubernetes Operator can optionally manage a sidecar container that can provide detailed metrics to Prometheus about the health of a Couchbase cluster. Prometheus provides significant visibility into the health and operation of a Couchbase cluster. Metrics can be used to develop alerts for system issues, identify maintenance windows and other valuable business intelligence insights, as well as provide the basis for xref:operator::concept-couchbase-autoscaling.adoc[auto-scaling Couchbase clusters]. @@ -24,7 +24,7 @@ Clone the https://github.com/coreos/kube-prometheus[`kube-prometheus`^] reposito $ git clone https://github.com/coreos/kube-prometheus ---- -Make sure you have a Kubernetes cluster running the Autonomous Operator with xref:howto-prometheus.adoc[monitoring enabled] and follow the Prerequisites section in the https://github.com/prometheus-operator/kube-prometheus[`kube-prometheus`^] documentation. +Make sure you have a Kubernetes cluster running the Kubernetes Operator with xref:howto-prometheus.adoc[monitoring enabled] and follow the Prerequisites section in the https://github.com/prometheus-operator/kube-prometheus[`kube-prometheus`^] documentation. == Manifests Setup @@ -32,7 +32,7 @@ Currently, the `kube-prometheus` project includes a folder called `manifests` th run the Prometheus Operator. The Prometheus Operator creates our Prometheus deployment which scrapes endpoints continuously for Prometheus metrics. We will be creating these manifests in a xref:tutorial-prometheus.adoc#Create-the-manifests[later step]. -The Autonomous Operator, with monitoring enabled, exposes the Couchbase Prometheus metrics using Couchbase Server native support for metrics collection. Couchbase native support is available for Couchbase Server versions 7.0 or higher +The Kubernetes Operator, with monitoring enabled, exposes the Couchbase Prometheus metrics using Couchbase Server native support for metrics collection. Couchbase native support is available for Couchbase Server versions 7.0 or higher Our task is then to get Prometheus to discover and scrape these endpoints in order to monitor the overall cluster through the Prometheus UI and with custom Grafana dashboards. In order for our Prometheus deployment to recognize and scrape Couchbase endpoints, we need to create a Couchbase specific service monitor, and a Couchbase metrics specific service. diff --git a/modules/ROOT/pages/tutorial-rbac-auth.adoc b/modules/ROOT/pages/tutorial-rbac-auth.adoc index 2e130121..a46e2eda 100644 --- a/modules/ROOT/pages/tutorial-rbac-auth.adoc +++ b/modules/ROOT/pages/tutorial-rbac-auth.adoc @@ -2,16 +2,16 @@ = Couchbase User Authentication [abstract] -A tutorial for configuring Couchbase user authentication and authorization using the Autonomous Operator. +A tutorial for configuring Couchbase user authentication and authorization using the Kubernetes Operator. include::partial$tutorial.adoc[] == Overview -This tutorial describes how to use the Autonomous Operator to create authenticated users and bind them to specific roles to provide different levels of authorization. +This tutorial describes how to use the Kubernetes Operator to create authenticated users and bind them to specific roles to provide different levels of authorization. User authentication can be provided by Couchbase itself or an external LDAP service (such as OpenLDAP). -The Autonomous Operator refers to <> as the `local` domain, and <> as the `external` domain. +The Kubernetes Operator refers to <> as the `local` domain, and <> as the `external` domain. [#couchbase-authentication] == Couchbase Authentication diff --git a/modules/ROOT/pages/tutorial-sync-gateway.adoc b/modules/ROOT/pages/tutorial-sync-gateway.adoc index 170cd9a8..3d49e818 100644 --- a/modules/ROOT/pages/tutorial-sync-gateway.adoc +++ b/modules/ROOT/pages/tutorial-sync-gateway.adoc @@ -10,14 +10,14 @@ Sync Gateway is a synchronization server that is responsible for secure data syn It is an integral component of the xref:sync-gateway::index.adoc[Couchbase Mobile] platform. This tutorial defines best practices for deploying Sync Gateway on Kubernetes. -It covers basic connectivity between Sync Gateway and a Couchbase Cluster deployed by the Autonomous Operator. +It covers basic connectivity between Sync Gateway and a Couchbase Cluster deployed by the Kubernetes Operator. == Prerequisites * A Couchbase Server cluster deployed and running. While it is _recommended_ that Couchbase Server is deployed on Kubernetes, it is _not required_. It is possible to deploy Sync Gateway on Kubernetes and connect it to a Couchbase Server cluster that is not on Kubernetes. -However, this guide and all of its instructions assume that Couchbase Server is deployed on Kubernetes using the Autonomous Operator. +However, this guide and all of its instructions assume that Couchbase Server is deployed on Kubernetes using the Kubernetes Operator. [#configuring-sync-gateway] == Configuring Sync Gateway @@ -94,7 +94,7 @@ _Requires Sync Gateway 2.8.2 or higher; otherwise omit this parameter._ -- + NOTE: The `server` property can technically accept connection endpoints as defined in the Sync Gateway xref:sync-gateway::configuration-properties.adoc#databases-this_db-server[documentation]. -However, many of these connection endpoints are not recommended (some not even supported) when connecting to Couchbase Server deployments that are managed by the Autonomous Operator. +However, many of these connection endpoints are not recommended (some not even supported) when connecting to Couchbase Server deployments that are managed by the Kubernetes Operator. In particular, there are xref:concept-couchbase-networking.adoc#sync-gateway-exposed-features-limitations[limitations when using exposed features] that affect which connection methods can be used with certain versions of Sync Gateway. <.> `databases.cb-example.bucket` defines the `metadata.name` to connect to and use to store mobile data. @@ -182,8 +182,8 @@ If not using client certificate authentication, secure the system further by usi In doing so, the scope of operations that can be performed in the event that the Sync Gateway configuration is compromised is limited. The RBAC user corresponding to Sync Gateway can be manually configured as specified in the Sync Gateway xref:sync-gateway::get-started-prepare.adoc#configure-server[Getting Started Guide]. -Alternatively, you can take advantage of the xref:concept-user-rbac.adoc[Couchbase user RBAC management] capability introduced in Autonomous Operator 2.0. -With this method, the Autonomous Operator takes care of creating the relevant Sync Gateway user and binds it to a specified role. +Alternatively, you can take advantage of the xref:concept-user-rbac.adoc[Couchbase user RBAC management] capability introduced in Kubernetes Operator 2.0. +With this method, the Kubernetes Operator takes care of creating the relevant Sync Gateway user and binds it to a specified role. The following subsections assume that you will be using this feature. ==== Enabling RBAC Management @@ -198,7 +198,7 @@ security: managed: true ---- -NOTE: Enabling RBAC management by the Autonomous Operator will remove any RBAC users that were manually created on the cluster. +NOTE: Enabling RBAC management by the Kubernetes Operator will remove any RBAC users that were manually created on the cluster. Therefore, you will need to specify the relevant users and role bindings for those RBAC users if you want to continue using those identities after enabling RBAC management. ==== Creating a Sync Gateway RBAC User @@ -230,7 +230,7 @@ This creates a sync gateway user with the specified password. ==== Role Binding of Sync Gateway User Next, define the `sync-gateway` user and bind it to a group that allows it the "application access" role as defined by Couchbase Server. -The Autonomous Operator will create the required user and group on any Couchbase cluster that selects that user. +The Kubernetes Operator will create the required user and group on any Couchbase cluster that selects that user. [source,yaml] ---- @@ -271,7 +271,7 @@ This is the recommended method of deployment as defined in the xref:concept-labe <.> The `CouchbaseUser` uses the `local` authentication domain, meaning that a password will be locally installed on the Couchbase cluster for authentication. -<.> The `CouchbaseUser` references the secret we previously created so that the Autonomous Operator can associate the `sync-gateway` user with its password. +<.> The `CouchbaseUser` references the secret we previously created so that the Kubernetes Operator can associate the `sync-gateway` user with its password. <.> The `CouchbaseGroup` that the `sync-gateway` user will be a member of needs the `mobile_sync_gateway` role. @@ -325,7 +325,7 @@ $ kubectl apply -f sync-gateway.yaml [#deploying-sync-gateway] == Deploying Sync Gateway -Sync Gateway is a simple stateless application, and therefore does not require any application-specific controller like the Autonomous Operator. +Sync Gateway is a simple stateless application, and therefore does not require any application-specific controller like the Kubernetes Operator. The following is a typical `Deployment` resource configuration for Sync Gateway: [source,yaml,subs="attributes,verbatim"] @@ -435,13 +435,13 @@ You can now move on to xref:tutorial-sync-gateway-clients.adoc[connecting Couchb == Templates -Template files are provided in the Autonomous Operator binary distribution available at https://www.couchbase.com/downloads[couchbase.com/downloads^]. +Template files are provided in the Kubernetes Operator binary distribution available at https://www.couchbase.com/downloads[couchbase.com/downloads^]. These template files are provided as *evaluation examples* -- they should be modified to suit production deployments. * `sync-gateway.yaml`: Sample Deployment Controller for Sync Gateway using RBAC for server connectivity. This template creates a sync gateway RBAC user per procedures outlined in the previous section <>. -* `couchbase-custer.yaml`: Sample `CouchbaseCluster` custom resource deployment to be used with the Autonomous Operator. +* `couchbase-custer.yaml`: Sample `CouchbaseCluster` custom resource deployment to be used with the Kubernetes Operator. + NOTE: The `couchbase-custer.yaml` template has RBAC management set to `false` by default. So before you deploy the Sync Gateway cluster using the `sync-gateway.yaml` template, you must enable RBAC management as specified in the previous section <>. diff --git a/modules/ROOT/pages/tutorial-tls.adoc b/modules/ROOT/pages/tutorial-tls.adoc index 204735cd..f5a5b080 100644 --- a/modules/ROOT/pages/tutorial-tls.adoc +++ b/modules/ROOT/pages/tutorial-tls.adoc @@ -122,7 +122,7 @@ Enter pass phrase for tls.key: === Private Key Formatting (Legacy) Due to an https://issues.couchbase.com/browse/MB-24404[issue^] with Couchbase Server's private key handling, server keys may need to be PKCS#1 formatted. -This was addressed in Autonomous Operator 2.2 (and this tutorial) with the implementation of xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-networking-tls-secretsource[`couchbaseclusters.spec.networking.tls.secretSource`]. +This was addressed in Kubernetes Operator 2.2 (and this tutorial) with the implementation of xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-networking-tls-secretsource[`couchbaseclusters.spec.networking.tls.secretSource`]. However, if you are using legacy TLS configuration with xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-networking-tls-static[`couchbaseclusters.spec.networking.tls.static`], you will need to format the server keys in PKCS#1: diff --git a/modules/ROOT/pages/tutorial-velero-backup.adoc b/modules/ROOT/pages/tutorial-velero-backup.adoc index 012b6017..50f470d0 100644 --- a/modules/ROOT/pages/tutorial-velero-backup.adoc +++ b/modules/ROOT/pages/tutorial-velero-backup.adoc @@ -25,7 +25,7 @@ This tutorial was tested using https://velero.io/[Velero^] version 1.2.0, using It is important to correctly configure https://velero.io/[Velero^] so that it has the ability to perform volume snapshots. A list of providers are provided in the https://velero.io/docs/v1.2.0/supported-providers/[Velero support matrix^]. -== Installing Couchbase Autonomous Operator +== Installing Couchbase Kubernetes Operator For this tutorial we will install the dynamic admission controller (DAC) in the default namespace: diff --git a/modules/ROOT/pages/tutorial-volume-expansion.adoc b/modules/ROOT/pages/tutorial-volume-expansion.adoc index 4a938f14..5fc5dd64 100644 --- a/modules/ROOT/pages/tutorial-volume-expansion.adoc +++ b/modules/ROOT/pages/tutorial-volume-expansion.adoc @@ -2,14 +2,14 @@ include::partial$constants.adoc[] [abstract] -Learn how to use the Autonomous Operator to perform online persistent volume expansion for Couchbase Server deployments in Kubernetes. +Learn how to use the Kubernetes Operator to perform online persistent volume expansion for Couchbase Server deployments in Kubernetes. include::partial$tutorial.adoc[] == Introduction -In this tutorial you'll learn how to use the Autonomous Operator to expand persistent volumes that are already in use by Couchbase clusters without needing to perform an upgrade on the underlying storage subsystem. -The Autonomous Operator performs storage upgrades by working in conjunction with https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims[Kubernetes Persistent Volume Expansion^] to claim additional storage for running pods without any downtime. +In this tutorial you'll learn how to use the Kubernetes Operator to expand persistent volumes that are already in use by Couchbase clusters without needing to perform an upgrade on the underlying storage subsystem. +The Kubernetes Operator performs storage upgrades by working in conjunction with https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims[Kubernetes Persistent Volume Expansion^] to claim additional storage for running pods without any downtime. [[before-you-begin]] == Before You Begin @@ -26,7 +26,7 @@ Refer to xref:howto-persistent-volumes.adoc#online-volume-expansion[Online Volum ** This tutorial references the `azurefile` storage class which is provided by the Azure Kubernetes Service (AKS). You'll need to use the name of your particular storage class if installing in a non-AKS Kubernetes environment. -* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Autonomous Operator, the Couchbase cluster, etc.) +* You'll need https://helm.sh/docs/intro/install/[Helm version 3.1] or higher for installing the necessary dependencies (e.g. the Kubernetes Operator, the Couchbase cluster, etc.) ** Once you have Helm installed, you'll need to add the Couchbase chart repository: + @@ -95,7 +95,7 @@ EOF <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-enableonlinevolumeexpansion[`couchbaseclusters.spec.enableOnlineVolumeExpansion`]: Setting this field to `true` enables online expansion of persistent volumes. -<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-volumemounts[`couchbaseclusters.spec.servers.volumeMounts`]: With this configuration we're telling the Autonomous Operator to provision persistent volume claims for the `data` mount path according to the `data-expanding` claim template. +<.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-servers-volumemounts[`couchbaseclusters.spec.servers.volumeMounts`]: With this configuration we're telling the Kubernetes Operator to provision persistent volume claims for the `data` mount path according to the `data-expanding` claim template. <.> xref:resource/couchbasecluster.adoc#couchbaseclusters-spec-volumeclaimtemplates[`couchbaseclusters.spec.volumeClaimTemplates`]: This configuration defines the `data-expanding` claim template. + @@ -116,8 +116,8 @@ $ helm install -f pvc_resize_values.yaml expand couchbase/couchbase-operator [NOTE] ==== -The Couchbase chart deploys the Autonomous Operator by default. -If you already have the Autonomous Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: +The Couchbase chart deploys the Kubernetes Operator by default. +If you already have the Kubernetes Operator deployed in the current namespace, then you'll need to specify additional overrides during chart installation so that only the Couchbase cluster is deployed: [source,console] ---- @@ -198,7 +198,7 @@ Normal ExpandVolumeSucceeded 6s Successfully expanded volume scale-c Running the commands in this section will uninstall all of the resources that were created during the course of this tutorial. -Uninstall both the Autonomous Operator and Couchbase cluster by deleting the Helm release: +Uninstall both the Kubernetes Operator and Couchbase cluster by deleting the Helm release: [source,console] ---- diff --git a/modules/ROOT/pages/whats-new.adoc b/modules/ROOT/pages/whats-new.adoc index ba545d18..9431421b 100644 --- a/modules/ROOT/pages/whats-new.adoc +++ b/modules/ROOT/pages/whats-new.adoc @@ -1,11 +1,11 @@ = What's New? include::partial$constants.adoc[] -Autonomous Operator {operator-version-minor} introduces a preview of our new Cluster Migration functionality well as a number of other improvements and minor fixes. +Kubernetes Operator {operator-version-minor} introduces a preview of our new Cluster Migration functionality well as a number of other improvements and minor fixes. == Cluster Migration -Released as a preview here, with a full GA planned for Autonomous Operator 2.8.1, Cluster Migration allows you to transfer a currently-unmanaged Couchbase Server cluster over to being managed by the Operator, with zero downtime. +Released as a preview here, with a full GA planned for Kubernetes Operator 2.8.1, Cluster Migration allows you to transfer a currently-unmanaged Couchbase Server cluster over to being managed by the Operator, with zero downtime. See xref:concept-migration.adoc[Couchbase Cluster Migration] for more details. From 97c681523708c2666428b7910f325261e2d82736 Mon Sep 17 00:00:00 2001 From: Hakim Cassimally Date: Wed, 11 Jun 2025 16:43:42 +0100 Subject: [PATCH 5/5] Update antora.yml --- antora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antora.yml b/antora.yml index e204e554..c94abfcd 100644 --- a/antora.yml +++ b/antora.yml @@ -1,5 +1,5 @@ name: operator -title: Autonomous Operator +title: Kubernetes Operator version: '2.8' prerelease: false start_page: ROOT:overview.adoc

1qFR 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