CouchbaseCluster Resource
The CouchbaseCluster resource represents a Couchbase cluster. It allows configuration of cluster topology, networking, storage and security options.
The following is an example resource, depicting the overall structure and any defaults (consult the field reference for valid values for "empty" values, such as empty strings etc.):
apiVersion: v2
kind: CouchbaseCluster
metadata:
name: ""
spec:
antiAffinity: false
autoResourceAllocation:
cpuLimits: 4
cpuRequests: 2
enabled: false
overheadPercent: 25
autoscaleStabilizationPeriod: ""
backup:
image: couchbase/operator-backup:1.3.1
imagePullSecrets:
- name: ""
managed: false
nodeSelector: {}
objectEndpoint:
secret: ""
url: ""
useVirtualPath: false
resources: {}
s3Secret: ""
selector: {}
serviceAccountName: couchbase-backup
tolerations:
- effect: ""
key: ""
operator: ""
tolerationSeconds: 0
value: ""
useIAMRole: false
buckets:
managed: false
selector:
matchExpressions:
- key: ""
operator: ""
values:
- ""
matchLabels:
synchronize: false
cluster:
analyticsServiceMemoryQuota: 1Gi
autoCompaction:
databaseFragmentationThreshold:
percent: 30
size: ""
parallelCompaction: false
timeWindow:
abortCompactionOutsideWindow: false
end: ""
start: ""
tombstonePurgeInterval: 72h
viewFragmentationThreshold:
percent: 30
size: ""
autoFailoverMaxCount: 3
autoFailoverOnDataDiskIssues: false
autoFailoverOnDataDiskIssuesTimePeriod: 120s
autoFailoverServerGroup: false
autoFailoverTimeout: 120s
clusterName: ""
data:
readerThreads: 0
writerThreads: 0
dataServiceMemoryQuota: 256Mi
eventingServiceMemoryQuota: 256Mi
indexServiceMemoryQuota: 256Mi
indexStorageSetting: memory_optimized
indexer:
logLevel: info
maxRollbackPoints: 2
memorySnapshotInterval: 200ms
stableSnapshotInterval: 5s
storageMode: memory_optimized
threads: 0
query:
backfillEnabled: True
temporarySpace: 5Gi
temporarySpaceUnlimited: false
queryServiceMemoryQuota: ""
searchServiceMemoryQuota: 256Mi
enableOnlineVolumeExpansion: false
enablePreviewScaling: false
hibernate: false
hibernationStrategy: ""
image: ""
logging:
audit:
disabledEvents:
- 0
disabledUsers:
- ""
enabled: false
garbageCollection:
sidecar:
age: 1h
enabled: false
image: busybox:1.33.1
interval: 20m
resources: {}
rotation:
interval: 15m
size: 20Mi
logRetentionCount: 0
logRetentionTime: ""
server:
configurationName: fluent-bit-config
enabled: false
manageConfiguration: True
sidecar:
configurationMountPath: /fluent-bit/config/
image: couchbase/fluent-bit:1.2.1
resources: {}
monitoring:
prometheus:
authorizationSecret: ""
enabled: false
image: ""
resources: {}
networking:
addressFamily: ""
adminConsoleServiceTemplate: {}
adminConsoleServiceType: NodePort
adminConsoleServices:
- ""
disableUIOverHTTP: false
disableUIOverHTTPS: false
dns:
domain: ""
exposeAdminConsole: false
exposedFeatureServiceTemplate: {}
exposedFeatureServiceType: NodePort
exposedFeatureTrafficPolicy: ""
exposedFeatures:
- ""
loadBalancerSourceRanges:
- ""
networkPlatform: ""
serviceAnnotations:
tls:
cipherSuites:
- ""
clientCertificatePaths:
- delimiter: ""
path: ""
prefix: ""
clientCertificatePolicy: ""
nodeToNodeEncryption: ""
rootCAs:
- ""
secretSource:
clientSecretName: ""
serverSecretName: ""
static:
operatorSecret: ""
serverSecret: ""
tlsMinimumVersion: TLS1.2
waitForAddressReachable: 10m
waitForAddressReachableDelay: 2m
paused: false
platform: ""
recoveryPolicy: ""
rollingUpgrade:
maxUpgradable: 0
maxUpgradablePercent: ""
security:
adminSecret: ""
ldap:
authenticationEnabled: True
authorizationEnabled: false
bindDN: ""
bindSecret: ""
cacert: ""
cacheValueLifetime: 30000
encryption: ""
groupsQuery: ""
hosts:
- ""
nestedGroupsEnabled: false
nestedGroupsMaxDepth: 10
port: 389
serverCertValidation: false
tlsSecret: ""
userDNMapping:
query: ""
template: ""
rbac:
managed: false
selector: {}
securityContext: {}
serverGroups:
- ""
servers:
- autoscaleEnabled: false
env: []
envFrom: []
name: ""
pod: {}
resources: {}
serverGroups:
- ""
services:
- ""
size: 0
volumeMounts:
analytics:
- ""
data: ""
default: ""
index: ""
logs: ""
softwareUpdateNotifications: false
upgradeStrategy: ""
volumeClaimTemplates: []
xdcr:
managed: false
remoteClusters:
- authenticationSecret: ""
hostname: ""
name: ""
replications:
selector: {}
tls:
secret: ""
uuid: ""
status:
allocations:
- allocatedMemory: ""
allocatedMemoryPercent: 0
analyticsServiceAllocation: ""
dataServiceAllocation: ""
eventingServiceAllocation: ""
indexServiceAllocation: ""
name: ""
requestedMemory: ""
searchServiceAllocation: ""
unusedMemory: ""
unusedMemoryPercent: 0
autoscalers:
- ""
buckets:
- compressionMode: ""
conflictResolution: ""
enableFlush: false
enableIndexReplica: false
evictionPolicy: ""
ioPriority: ""
memoryQuota: 0
name: ""
password: ""
replicas: 0
type: ""
clusterId: ""
conditions:
- lastTransitionTime: ""
lastUpdateTime: ""
message: ""
reason: ""
status: ""
type: ""
controlPaused: false
currentVersion: ""
groups:
- ""
members:
ready:
- ""
unready:
- ""
size: 0
users:
- ""
couchbaseclusters.apiVersion
Description
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources.
couchbaseclusters.kind
Description
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds.
couchbaseclusters.metadata
Description
Standard object metadata as defined for all Kubernetes types.
For additional details see the Kubernetes reference documentation.
couchbaseclusters.metadata.name
Description
The name of a resource. This must be unique for the kind of resource within the namespace.
All resources must have a name.
The name may be omitted and metadata.generateName
used instead to generate a unique resource name.
For additional details on resource names, see the Kubernetes reference documentation.
couchbaseclusters.metadata.namespace
Description
The namespace the resource resides in. All resources reside in a namespace.
The namespace is optional and may be specified in YAML configuration to override the namespace supplied by kubectl
.
For additional details on namespaces, see the Kubernetes reference documentation.
couchbaseclusters.metadata.labels
Description
Labels allow resources to be labeled with key/value pairs of data. Labels are indexed and allow resources to be selected based upon specified labels.
Labels are relevant for certain types when using label selection within your resources.
For additional details on labels and selectors, see the Kubernetes reference documentation.
couchbaseclusters.metadata.annotations
Description
Annotations allow resources to be annotated with key/value pairs of data. Annotations are arbitrary, and not indexed, so cannot be used to select resources, however may be used to add context or accounting to your resources.
For additional details on annotations, see the Kubernetes reference documentation.
couchbaseclusters.spec
Description
ClusterSpec is the specification for a CouchbaseCluster resources, and allows the cluster to be customized.
couchbaseclusters.spec.autoResourceAllocation
Description
AutoResourceAllocation populates pod resource requests based on the services running on that pod.
When enabled, this feature will calculate the memory request as the total of service allocations defined in spec.cluster
, plus an overhead defined by spec.autoResourceAllocation.overheadPercent
.Changing individual allocations for a service will cause a cluster upgrade as allocations are modified in the underlying pods.
This field also allows default pod CPU requests and limits to be applied.
All resource allocations can be overridden by explicitly configuring them in the spec.servers.resources
field.
couchbaseclusters.spec.autoResourceAllocation.cpuLimits
Constraints
Type: string
Default: 4
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
CPULimits automatically populates the CPU limits across all Couchbase server pods. This field defaults to "4" CPUs. Explicitly specifying the CPU limit for a particular server class will override this value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.autoResourceAllocation.cpuRequests
Constraints
Type: string
Default: 2
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
CPURequests automatically populates the CPU requests across all Couchbase server pods. The default value of "2", is the minimum recommended number of CPUs required to run Couchbase Server. Explicitly specifying the CPU request for a particular server class will override this value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.autoscaleStabilizationPeriod
Description
AutoscaleStabilizationPeriod defines how long after a rebalance the corresponding HorizontalPodAutoscaler should remain in maintenance mode. During maintenance mode all autoscaling is disabled since every HorizontalPodAutoscaler associated with the cluster becomes inactive. Since certain metrics can be unpredictable when Couchbase is rebalancing or upgrading, setting a stabilization period helps to prevent scaling recommendations from the HorizontalPodAutoscaler for a provided period of time. Values must be a valid Kubernetes duration of 0s or higher: https://golang.org/pkg/time/#ParseDuration A value of 0, puts the cluster in maintenance mode during rebalance but immediately exits this mode once the rebalance has completed. When undefined, the HPA is never put into maintenance mode during rebalance.
couchbaseclusters.spec.backup.imagePullSecrets.name
Description
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?.
couchbaseclusters.spec.backup.tolerations.tolerationSeconds
Description
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
couchbaseclusters.spec.buckets.managed
Description
Managed defines whether buckets are managed by the Operator (true), or user managed (false). When Operator managed, all buckets must be defined with either CouchbaseBucket, CouchbaseEphemeralBucket or CouchbaseMemcachedBucket resources. Manual addition of buckets will be reverted by the Operator. When user managed, the Operator will not interrogate buckets at all. This field defaults to false.
couchbaseclusters.spec.buckets.synchronize
Description
Synchronize allows unmanaged buckets, scopes, and collections to be synchronized as Kubernetes resources by the Operator.
This feature is intended for development only and should not be used for production workloads.
The synchronization workflow starts with spec.buckets.managed
being set to false, the user can manually create buckets, scopes, and collections using the Couchbase UI, or other tooling.
When you wish to commit to Kubernetes resources, you must specify a unique label selector in the spec.buckets.selector
field, and this field is set to true.
The Operator will create Kubernetes resources for you, and upon completion set the cluster’s Synchronized
status condition.
You may then safely set spec.buckets.managed
to true and the Operator will manage these resources as per usual.
To update an already managed data topology, you must first set it to unmanaged, make any changes, and delete any old resources, then follow the standard synchronization workflow.
The Operator can not, and will not, ever delete, or make modifications to resource specifications that are intended to be user managed, or managed by a life cycle management tool.
These actions must be instigated by an end user.
For a more complete experience, refer to the documentation for the cao save
and cao restore
CLI commands.
couchbaseclusters.spec.cluster.analyticsServiceMemoryQuota
Constraints
Type: string
Default: 1Gi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
AnalyticsServiceMemQuota is the amount of memory that should be allocated to the analytics service. This value is per-pod, and only applicable to pods belonging to server classes running the analytics service. This field must be a quantity greater than or equal to 1Gi. This field defaults to 1Gi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.autoCompaction.databaseFragmentationThreshold.size
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
Size is the amount of disk framentation, that once exceeded, will trigger decompaction. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.autoCompaction.tombstonePurgeInterval
Description
TombstonePurgeInterval controls how long to wait before purging tombstones. This field must be in the range 1h-1440h, defaulting to 72h. More info: https://golang.org/pkg/time/#ParseDuration.
couchbaseclusters.spec.cluster.autoCompaction.viewFragmentationThreshold.size
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
Size is the amount of disk framentation, that once exceeded, will trigger decompaction. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.autoFailoverOnDataDiskIssuesTimePeriod
Description
AutoFailoverOnDataDiskIssuesTimePeriod defines how long to wait for transient errors before failing over a faulty disk. This field must be in the range 5-3600s, defaulting to 120s. More info: https://golang.org/pkg/time/#ParseDuration.
couchbaseclusters.spec.cluster.autoFailoverTimeout
Description
AutoFailoverTimeout defines how long Couchbase server will wait between a pod being witnessed as down, until when it will failover the pod. Couchbase server will only failover pods if it deems it safe to do so, and not result in data loss. This field must be in the range 5-3600s, defaulting to 120s. More info: https://golang.org/pkg/time/#ParseDuration.
couchbaseclusters.spec.cluster.data.readerThreads
Description
ReaderThreads allows the number of threads used by the data service, per pod, to be altered. This value must be between 4 and 64 threads, and should only be increased where there are sufficient CPU resources allocated for their use. If not specified, this defaults to the default value set by Couchbase Server.
couchbaseclusters.spec.cluster.data.writerThreads
Description
ReaderThreads allows the number of threads used by the data service, per pod, to be altered. This setting is especially relevant when using "durable writes", increasing this field will have a large impact on performance. This value must be between 4 and 64 threads, and should only be increased where there are sufficient CPU resources allocated for their use. If not specified, this defaults to the default value set by Couchbase Server.
couchbaseclusters.spec.cluster.dataServiceMemoryQuota
Constraints
Type: string
Default: 256Mi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
DataServiceMemQuota is the amount of memory that should be allocated to the data service. This value is per-pod, and only applicable to pods belonging to server classes running the data service. This field must be a quantity greater than or equal to 256Mi. This field defaults to 256Mi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.eventingServiceMemoryQuota
Constraints
Type: string
Default: 256Mi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
EventingServiceMemQuota is the amount of memory that should be allocated to the eventing service. This value is per-pod, and only applicable to pods belonging to server classes running the eventing service. This field must be a quantity greater than or equal to 256Mi. This field defaults to 256Mi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.indexServiceMemoryQuota
Constraints
Type: string
Default: 256Mi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
IndexServiceMemQuota is the amount of memory that should be allocated to the index service. This value is per-pod, and only applicable to pods belonging to server classes running the index service. This field must be a quantity greater than or equal to 256Mi. This field defaults to 256Mi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.indexStorageSetting
Description
DEPRECATED - by indexer.
The index storage mode to use for secondary indexing. This field must be one of "memory_optimized" or "plasma", defaulting to "memory_optimized". This field is immutable and cannot be changed unless there are no server classes running the index service in the cluster.
couchbaseclusters.spec.cluster.indexer.logLevel
couchbaseclusters.spec.cluster.query.temporarySpace
Constraints
Type: string
Default: 5Gi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
TemporarySpace allows the temporary storage used by the query service backfill, per-pod, to be modified.
This field requires backfillEnabled
to be set to true in order to have any effect.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.queryServiceMemoryQuota
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
QueryServiceMemQuota is a dummy field. By default, Couchbase server provides no memory resource constraints for the query service, so this has no effect on Couchbase server. It is, however, used when the spec.autoResourceAllocation feature is enabled, and is used to define the amount of memory reserved by the query service for use with Kubernetes resource scheduling. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.cluster.searchServiceMemoryQuota
Constraints
Type: string
Default: 256Mi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
SearchServiceMemQuota is the amount of memory that should be allocated to the search service. This value is per-pod, and only applicable to pods belonging to server classes running the search service. This field must be a quantity greater than or equal to 256Mi. This field defaults to 256Mi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.enableOnlineVolumeExpansion
Description
EnableOnlineVolumeExpansion enables online expansion of Persistent Volumes. You can only expand a PVC if its storage class’s "allowVolumeExpansion" field is set to true. Additionally, Kubernetes feature "ExpandInUsePersistentVolumes" must be enabled in order to expand the volumes which are actively bound to Pods. Volumes can only be expanded and not reduced to a smaller size. See: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#resizing-an-in-use-persistentvolumeclaim If "EnableOnlineVolumeExpansion" is enabled for use within an environment that does not actually support online volume and file system expansion then the cluster will fallback to rolling upgrade procedure to create a new set of Pods for use with resized Volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims.
couchbaseclusters.spec.image
couchbaseclusters.spec.logging.audit.disabledEvents
Description
The list of event ids to disable for auditing purposes. This is passed to the REST API with no verification by the operator. Refer to the documentation for details: https://docs.couchbase.com/server/current/audit-event-reference/audit-event-reference.html.
couchbaseclusters.spec.logging.audit.disabledUsers
Description
The list of users to ignore for auditing purposes. This is passed to the REST API with minimal validation it meets an acceptable regex pattern. Refer to the documentation for full details on how to configure this: https://docs.couchbase.com/server/current/manage/manage-security/manage-auditing.html#ignoring-events-by-user.
couchbaseclusters.spec.logging.audit.garbageCollection
Description
Handle all optional garbage collection (GC) configuration for the audit functionality. This is not part of the audit REST API, it is intended to handle GC automatically for the audit logs. By default the Couchbase Server rotates the audit logs but does not clean up the rotated logs. This is left as an operation for the cluster administrator to manage, the operator allows for us to automate this: https://docs.couchbase.com/server/current/manage/manage-security/manage-auditing.html.
couchbaseclusters.spec.logging.audit.rotation
Description
The interval to optionally rotate the audit log. This is passed to the REST API, see here for details: https://docs.couchbase.com/server/current/manage/manage-security/manage-auditing.html.
couchbaseclusters.spec.logging.audit.rotation.size
Constraints
Type: string
Default: 20Mi
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
Size allows the specification of a rotation size for the log, defaults to 20Mi. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.spec.logging.server.configurationName
Description
ConfigurationName is the name of the Secret to use holding the logging configuration in the namespace. A Secret is used to ensure we can safely store credentials but this can be populated from plaintext if acceptable too. If it does not exist then one will be created with defaults in the namespace so it can be easily updated whilst running. Note that if running multiple clusters in the same kubernetes namespace then you should use a separate Secret for each, otherwise the first cluster will take ownership (if created) and the Secret will be cleaned up when that cluster is removed. If running clusters in separate namespaces then they will be separate Secrets anyway.
couchbaseclusters.spec.logging.server.manageConfiguration
Description
A boolean which indicates whether the operator should manage the configuration or not. If omitted then this defaults to true which means the operator will attempt to reconcile it to default values. To use a custom configuration make sure to set this to false. Note that the ownership of any Secret is not changed so if a Secret is created externally it can be updated by the operator but it’s ownership stays the same so it will be cleaned up when it’s owner is.
couchbaseclusters.spec.logging.server.sidecar.configurationMountPath
Description
ConfigurationMountPath is the location to mount the ConfigurationName Secret into the image. If another log shipping image is used that needs a different mount then modify this. Note that the configuration file must be called 'fluent-bit.conf' at the root of this path, there is no provision for overriding the name of the config file passed as the COUCHBASE_LOGS_CONFIG_FILE environment variable.
couchbaseclusters.spec.networking.addressFamily
Description
AddressFamily allows the manual selection of the address family to use. When this field is not set, Couchbase server will default to using IPv4 for internal communication and also support IPv6 on dual stack systems. Setting this field to either IPv4 or IPv6 will force Couchbase to use the selected protocol for internal communication, and also disable all other protocols to provide added security and simplicty when defining firewall rules. Disabling of address families is only supported in Couchbase Server 7.0.2+.
couchbaseclusters.spec.networking.adminConsoleServiceTemplate
Description
AdminConsoleServiceTemplate provides a template used by the Operator to create and manage the admin console service. This allows services to be annotated, the service type defined and any other options that Kubernetes provides. When using a LoadBalancer service type, TLS and dynamic DNS must also be enabled. The Operator reserves the right to modify or replace any field. More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#service-v1-core.
couchbaseclusters.spec.networking.adminConsoleServiceType
Description
DEPRECATED - by adminConsoleServiceTemplate.
AdminConsoleServiceType defines whether to create a node port or load balancer service. When using a LoadBalancer service type, TLS and dynamic DNS must also be enabled. This field must be one of "NodePort" or "LoadBalancer", defaulting to "NodePort".
couchbaseclusters.spec.networking.dns.domain
Description
Domain is the domain to create pods in. When populated the Operator will annotate the admin console and per-pod services with the key "external-dns.alpha.kubernetes.io/hostname". These annotations can be used directly by a Kubernetes External-DNS controller to replicate load balancer service IP addresses into a public DNS server.
couchbaseclusters.spec.networking.exposedFeatureServiceTemplate
Description
ExposedFeatureServiceTemplate provides a template used by the Operator to create and manage per-pod services. This allows services to be annotated, the service type defined and any other options that Kubernetes provides. When using a LoadBalancer service type, TLS and dynamic DNS must also be enabled. The Operator reserves the right to modify or replace any field. More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#service-v1-core.
couchbaseclusters.spec.networking.exposedFeatureServiceType
Description
DEPRECATED - by exposedFeatureServiceTemplate.
ExposedFeatureServiceType defines whether to create a node port or load balancer service. When using a LoadBalancer service type, TLS and dynamic DNS must also be enabled. This field must be one of "NodePort" or "LoadBalancer", defaulting to "NodePort".
couchbaseclusters.spec.networking.exposedFeatureTrafficPolicy
Description
DEPRECATED - by exposedFeatureServiceTemplate.
ExposedFeatureTrafficPolicy defines how packets should be routed from a load balancer service to a Couchbase pod. When local, traffic is routed directly to the pod. When cluster, traffic is routed to any node, then forwarded on. While cluster routing may be slower, there are some situations where it is required for connectivity. This field must be either "Cluster" or "Local", defaulting to "Local",.
couchbaseclusters.spec.networking.exposedFeatures
Description
ExposedFeatures is a list of Couchbase features to expose when using a networking model that exposes the Couchbase cluster externally to Kubernetes. This field also triggers the creation of per-pod services used by clients to connect to the Couchbase cluster. When admin, only the administrator port is exposed, allowing remote administration. When xdcr, only the services required for remote replication are exposed. The xdcr feature is only required when the cluster is the destination of an XDCR replication. When client, all services are exposed as required for client SDK operation. This field may contain any of "admin", "xdcr" and "client". Each feature may only be included once.
couchbaseclusters.spec.networking.loadBalancerSourceRanges
Constraints
Type: []string
Pattern (Regular Expression): ^\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,2}$
Description
DEPRECATED - by adminConsoleServiceTemplate and exposedFeatureServiceTemplate.
LoadBalancerSourceRanges applies only when an exposed service is of type LoadBalancer and limits the source IP ranges that are allowed to use the service. Items must use IPv4 class-less interdomain routing (CIDR) notation e.g. 10.0.0.0/16.
couchbaseclusters.spec.networking.tls.clientCertificatePaths.path
couchbaseclusters.spec.networking.tls.nodeToNodeEncryption
Description
NodeToNodeEncryption specifies whether to encrypt data between Couchbase nodes within the same cluster. This may come at the expense of performance. When control plane only encryption is used, only cluster management traffic is encrypted between nodes. When all, all traffic is encrypted, including database documents. When strict mode is used, it is the same as all, but also disables all plaintext ports. Strict mode is only available on Couchbase Server versions 7.1 and greater. Node to node encryption can only be used when TLS certificates are managed by the Operator. This field must be either "ControlPlaneOnly", "All", or "Strict".
couchbaseclusters.spec.networking.tls.rootCAs
Description
RootCAs defines a set of secrets that reside in this namespace that contain additional CA certificates that should be installed in Couchbase. The CA certificates that are defined here are in addition to those defined for the cluster, optionally by couchbaseclusters.spec.networking.tls.secretSource, and thus should not be duplicated. Each Secret referred to must be of well-known type "kubernetes.io/tls" and must contain one or more CA certificates under the key "tls.crt". Multiple root CA certificates are only supported on Couchbase Server 7.1 and greater, and not with legacy couchbaseclusters.spec.networking.tls.static configuration.
couchbaseclusters.spec.networking.tls.secretSource
Description
SecretSource enables the user to specify a secret conforming to the Kubernetes TLS secret specification that is used for the Couchbase server certificate, and optionally the Operator’s client certificate, providing cert-manager compatibility without having to specify a separate root CA. A server CA certificate must be supplied by one of the provided methods. Certificates referred to must be of well-known type "kubernetes.io/tls".
couchbaseclusters.spec.networking.tls.secretSource.serverSecretName
Description
ServerSecretName specifies the secret name, in the same namespace as the cluster, that contains server TLS data. The secret is expected to contain "tls.crt" and "tls.key" as per the kubernetes.io/tls secret type. It may also contain "ca.crt". Only a single Root CA can be provided to "ca.crt". Refer to couchbaseclusters.spec.networking.tls.rootcas for multiple Root CA deployments.
couchbaseclusters.spec.networking.tls.static.operatorSecret
Description
OperatorSecret is a secret name containing TLS certs used by operator to talk securely to this cluster. The secret must contain a CA certificate (data key ca.crt). If client authentication is enabled, then the secret must also contain a client certificate chain (data key "couchbase-operator.crt") and private key (data key "couchbase-operator.key").
couchbaseclusters.spec.networking.tls.static.serverSecret
Description
ServerSecret is a secret name containing TLS certs used by each Couchbase member pod for the communication between Couchbase server and its clients. The secret must contain a certificate chain (data key "couchbase-operator.crt") and a private key (data key "couchbase-operator.key"). The private key must be in the PKCS#1 RSA format. The certificate chain must have a required set of X.509v3 subject alternative names for all cluster addressing modes. See the Operator TLS documentation for more information.
couchbaseclusters.spec.networking.waitForAddressReachable
Description
WaitForAddressReachable is used to set the timeout between when polling of external addresses is started, and when it is deemed a failure.
Polling of DNS name availability inherently dangerous due to negative caching, so prefer the use of an initial waitForAddressReachableDelay
to allow propagation.
couchbaseclusters.spec.recoveryPolicy
Description
RecoveryPolicy controls how aggressive the Operator is when recovering cluster topology. When PrioritizeDataIntegrity, the Operator will delegate failover exclusively to Couchbase server, relying on it to only allow recovery when safe to do so. When PrioritizeUptime, the Operator will wait for a period after the expected auto-failover of the cluster, before forcefully failing-over the pods. This may cause data loss, and is only expected to be used on clusters with ephemeral data, where the loss of the pod means that the data is known to be unrecoverable. This field must be either "PrioritizeDataIntegrity" or "PrioritizeUptime", defaulting to "PrioritizeDataIntegrity".
couchbaseclusters.spec.rollingUpgrade.maxUpgradable
Description
MaxUpgradable allows the number of pods affected by an upgrade at any one time to be increased.
By default a rolling upgrade will upgrade one pod at a time.
This field allows that limit to be removed.
This field must be greater than zero.
The smallest of maxUpgradable
and maxUpgradablePercent
takes precedence if both are defined.
couchbaseclusters.spec.rollingUpgrade.maxUpgradablePercent
Description
MaxUpgradablePercent allows the number of pods affected by an upgrade at any one time to be increased.
By default a rolling upgrade will upgrade one pod at a time.
This field allows that limit to be removed.
This field must be an integer percentage, e.g.
"10%", in the range 1% to 100%.
Percentages are relative to the total cluster size, and rounded down to the nearest whole number, with a minimum of 1.
For example, a 10 pod cluster, and 25% allowed to upgrade, would yield 2.5 pods per iteration, rounded down to 2.
The smallest of maxUpgradable
and maxUpgradablePercent
takes precedence if both are defined.
couchbaseclusters.spec.security.ldap.bindDN
Description
DN to use for searching users and groups synchronization. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.security.ldap.cacheValueLifetime
Description
Lifetime of values in cache in milliseconds. Default 300000 ms. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.security.ldap.encryption
Description
Encryption determines how the connection with the LDAP server should be encrypted.
Encryption may set as either StartTLSExtension, TLS, or false.
When set to "false" then no verification of the LDAP hostname is performed.
When Encryption is StartTLSExtension, or TLS is set then the default behavior is to use the certificate already loaded into the Couchbase Cluster for certificate validation, otherwise ldap.tlsSecret
may be set to override The Couchbase certificate.
couchbaseclusters.spec.security.ldap.groupsQuery
Description
LDAP query, to get the users' groups by username in RFC4516 format. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.security.ldap.nestedGroupsEnabled
Description
If enabled Couchbase server will try to recursively search for groups for every discovered ldap group. groups_query will be user for the search. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.security.ldap.nestedGroupsMaxDepth
Description
Maximum number of recursive groups requests the server is allowed to perform. Requires NestedGroupsEnabled. Values between 1 and 100: the default is 10. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.security.ldap.userDNMapping
Description
User to distinguished name (DN) mapping. If none is specified, the username is used as the user’s distinguished name. More info: https://docs.couchbase.com/server/current/manage/manage-security/configure-ldap.html.
couchbaseclusters.spec.securityContext
Description
SecurityContext allows the configuration of the security context for all Couchbase server pods. When using persistent volumes you may need to set the fsGroup field in order to write to the volume. For non-root clusters you must also set runAsUser to 1000, corresponding to the Couchbase user in official container images. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/.
couchbaseclusters.spec.serverGroups
Description
ServerGroups define the set of availability zones you want to distribute pods over, and construct Couchbase server groups for. By default, most cloud providers will label nodes with the key "topology.kubernetes.io/zone", the values associated with that key are used here to provide explicit scheduling by the Operator. You may manually label nodes using the "topology.kubernetes.io/zone" key, to provide failure-domain aware scheduling when none is provided for you. Global server groups are applied to all server classes, and may be overridden on a per-server class basis to give more control over scheduling and server groups.
couchbaseclusters.spec.servers
Description
Servers defines server classes for the Operator to provision and manage. A server class defines what services are running and how many members make up that class. Specifying multiple server classes allows the Operator to provision clusters with Multi-Dimensional Scaling (MDS). At least one server class must be defined, and at least one server class must be running the data service.
couchbaseclusters.spec.servers.autoscaleEnabled
Description
AutoscaledEnabled defines whether the autoscaling feature is enabled for this class. When true, the Operator will create a CouchbaseAutoscaler resource for this server class. The CouchbaseAutoscaler implements the Kubernetes scale API and can be controlled by the Kubernetes horizontal pod autoscaler (HPA).
couchbaseclusters.spec.servers.pod
Description
Pod defines a template used to create pod for each Couchbase server instance. 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. More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#pod-v1-core.
couchbaseclusters.spec.servers.serverGroups
Description
ServerGroups define the set of availability zones you want to distribute pods over, and construct Couchbase server groups for. By default, most cloud providers will label nodes with the key "topology.kubernetes.io/zone", the values associated with that key are used here to provide explicit scheduling by the Operator. You may manually label nodes using the "topology.kubernetes.io/zone" key, to provide failure-domain aware scheduling when none is provided for you. Global server groups are applied to all server classes, and may be overridden on a per-server class basis to give more control over scheduling and server groups.
couchbaseclusters.spec.servers.services
couchbaseclusters.spec.servers.volumeMounts.analytics
Description
AnalyticsClaims are persistent volumes that encompass analytics storage associated with the analytics service. Analytics claims can only be used on server classes running the analytics service, and must be used in conjunction with the default claim. This field allows the analytics service to use different storage media (e.g. SSD), and scale horizontally, to improve performance of this service. This field references a volume claim template name as defined in "spec.volumeClaimTemplates".
couchbaseclusters.spec.servers.volumeMounts.data
Description
DataClaim is a persistent volume that encompasses key/value storage associated with the data service. The data claim can only be used on server classes running the data service, and must be used in conjunction with the default claim. This field allows the data service to use different storage media (e.g. SSD) to improve performance of this service. This field references a volume claim template name as defined in "spec.volumeClaimTemplates".
couchbaseclusters.spec.servers.volumeMounts.default
Description
DefaultClaim is a persistent volume that encompasses all Couchbase persistent data, including document storage, indexes and logs. The default volume can be used with any server class. Use of the default claim allows the Operator to recover failed pods from the persistent volume far quicker than if the pod were using ephemeral storage. The default claim cannot be used at the same time as the logs claim within the same server class. This field references a volume claim template name as defined in "spec.volumeClaimTemplates".
couchbaseclusters.spec.servers.volumeMounts.index
Description
IndexClaim s a persistent volume that encompasses index storage associated with the index and search services. The index claim can only be used on server classes running the index or search services, and must be used in conjunction with the default claim. This field allows the index and/or search service to use different storage media (e.g. SSD) to improve performance of this service. This field references a volume claim template name as defined in "spec.volumeClaimTemplates". Whilst this references index primarily, note that the full text search (FTS) service also uses this same mount.
couchbaseclusters.spec.servers.volumeMounts.logs
Description
LogsClaim is a persistent volume that encompasses only Couchbase server logs to aid with supporting the product. The logs claim can only be used on server classes running the following services: query, search & eventing. The logs claim cannot be used at the same time as the default claim within the same server class. This field references a volume claim template name as defined in "spec.volumeClaimTemplates". Whilst the logs claim can be used with the search service, the recommendation is to use the default claim for these. The reason for this is that a failure of these nodes will require indexes to be rebuilt and subsequent performance impact.
couchbaseclusters.spec.upgradeStrategy
Description
UpgradeStrategy controls how aggressive the Operator is when performing a cluster upgrade. When a rolling upgrade is requested, pods are upgraded one at a time. This strategy is slower, however less disruptive. When an immediate upgrade strategy is requested, all pods are upgraded at the same time. This strategy is faster, but more disruptive. This field must be either "RollingUpgrade" or "ImmediateUpgrade", defaulting to "RollingUpgrade".
couchbaseclusters.spec.xdcr.remoteClusters.hostname
Constraints
Required
Type: string
Pattern (Regular Expression): couchbase|http)(s)?(://?\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|${4}\b)|([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)\*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]|\[(\s\*([0-9A-Fa-f]\{1,4}:){7}([0-9A-Fa-f]\{1,4}|:|[0-9A-Fa-f]\{1,4}:){6}(:[0-9A-Fa-f]\{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3})|:))|[0-9A-Fa-f]\{1,4}:){5}(((:[0-9A-Fa-f]\{1,4})\{1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3})|:))|[0-9A-Fa-f]\{1,4}:){4}(((:[0-9A-Fa-f]\{1,4})\{1,3})|((:[0-9A-Fa-f]\{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3}))|:))|[0-9A-Fa-f]\{1,4}:){3}(((:[0-9A-Fa-f]\{1,4})\{1,4})|((:[0-9A-Fa-f]\{1,4})\{0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3}))|:))|[0-9A-Fa-f]\{1,4}:){2}(((:[0-9A-Fa-f]\{1,4})\{1,5})|((:[0-9A-Fa-f]\{1,4})\{0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3}))|:))|[0-9A-Fa-f]\{1,4}:){1}(((:[0-9A-Fa-f]\{1,4})\{1,6})|((:[0-9A-Fa-f]\{1,4})\{0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3}))|:))|(:(:[0-9A-Fa-f]\{1,4})\{1,7})|((:[0-9A-Fa-f]\{1,4})\{0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d{3}))|:)))(%.+)?\s\*\]))(:[0-9]\{0,5})?(\\\{0,1}\?network=[&]+)?$
couchbaseclusters.status
couchbaseclusters.status.allocations.allocatedMemory
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
AllocatedMemory defines the total memory allocated for constrained Couchbase services. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.analyticsServiceAllocation
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
AnalyticsServiceAllocation is set when the analytics service is enabled for this class and defines how much memory this service consumes per pod. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.dataServiceAllocation
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
DataServiceAllocation is set when the data service is enabled for this class and defines how much memory this service consumes per pod. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.eventingServiceAllocation
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
EventingServiceAllocation is set when the eventing service is enabled for this class and defines how much memory this service consumes per pod. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.indexServiceAllocation
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
IndexServiceAllocation is set when the index service is enabled for this class and defines how much memory this service consumes per pod. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.requestedMemory
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
RequestedMemory, if set, defines the Kubernetes resource request for the server class. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.searchServiceAllocation
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
SearchServiceAllocation is set when the search service is enabled for this class and defines how much memory this service consumes per pod. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.
couchbaseclusters.status.allocations.unusedMemory
Constraints
Type: string
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
UnusedMemory is set when memory resources are requested and is the difference between the requestedMemory and allocatedMemory. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes.