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:
annotations:
image: couchbase/operator-backup:1.3.1
imagePullSecrets:
- name: ""
labels:
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: 1
autoFailoverOnDataDiskIssues: false
autoFailoverOnDataDiskIssuesTimePeriod: 120s
autoFailoverServerGroup: false
autoFailoverTimeout: 120s
clusterName: ""
data:
auxIOThreads: 0
minReplicasCount: 0
nonIOThreads: 0
readerThreads: 0
writerThreads: 0
dataServiceMemoryQuota: 256Mi
eventingServiceMemoryQuota: 256Mi
indexServiceMemoryQuota: 256Mi
indexStorageSetting: memory_optimized
indexer:
enableShardAffinity: false
logLevel: info
maxRollbackPoints: 2
memorySnapshotInterval: 200ms
numReplica: 0
redistributeIndexes: false
stableSnapshotInterval: 5s
storageMode: memory_optimized
threads: 0
query:
backfillEnabled: True
cboEnabled: True
cleanupClientAttemptsEnabled: True
cleanupLostAttemptsEnabled: True
cleanupWindow: 60s
completedLimit: 4000
completedMaxPlanSize: 262144
completedTrackingAllRequests: false
completedTrackingEnabled: True
completedTrackingThreshold: 7s
logLevel: info
maxParallelism: 1
memoryQuota: 0
nodeQuotaValPercent: 67
numActiveTransactionRecords: 1024
numCpus: 0
pipelineBatch: 16
pipelineCap: 512
preparedLimit: 16384
scanCap: 512
temporarySpace: 5Gi
temporarySpaceUnlimited: false
timeout: ""
txTimeout: 0ms
useReplica: false
queryServiceMemoryQuota: ""
searchServiceMemoryQuota: 256Mi
enableOnlineVolumeExpansion: false
enablePreviewScaling: false
envImagePrecedence: 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
pruneAge: 0
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: ""
refreshRate: 60
resources: {}
networking:
addressFamily: ""
adminConsoleServiceTemplate: {}
adminConsoleServiceType: NodePort
adminConsoleServices:
- ""
cloudNativeGateway:
image: ""
logLevel: info
terminationGracePeriodSeconds: 75
tls:
serverSecretName: ""
disableUIOverHTTP: false
disableUIOverHTTPS: false
dns:
domain: ""
exposeAdminConsole: false
exposedFeatureServiceTemplate: {}
exposedFeatureServiceType: NodePort
exposedFeatureTrafficPolicy: ""
exposedFeatures:
- ""
loadBalancerSourceRanges:
- ""
networkPlatform: ""
serviceAnnotations:
tls:
allowPlainTextCertReload: false
cipherSuites:
- ""
clientCertificatePaths:
- delimiter: ""
path: ""
prefix: ""
clientCertificatePolicy: ""
nodeToNodeEncryption: ""
passphrase:
rest:
addressFamily: inet
headers:
timeout: 5000
url: ""
verifyPeer: True
script:
secret: ""
rootCAs:
- ""
secretSource:
clientSecretName: ""
serverSecretName: ""
static:
operatorSecret: ""
serverSecret: ""
tlsMinimumVersion: TLS1.2
waitForAddressReachable: 10m
waitForAddressReachableDelay: 2m
onlineVolumeExpansionTimeoutInMins: 0
paused: false
platform: ""
recoveryPolicy: ""
rollingUpgrade:
maxUpgradable: 0
maxUpgradablePercent: ""
security:
adminSecret: ""
ldap:
authenticationEnabled: True
authorizationEnabled: false
bindDN: ""
bindSecret: ""
cacert: ""
cacheValueLifetime: 30000
encryption: ""
groupsQuery: ""
hosts:
- ""
middleboxCompMode: True
nestedGroupsEnabled: false
nestedGroupsMaxDepth: 10
port: 389
serverCertValidation: false
tlsSecret: ""
userDNMapping:
query: ""
template: ""
podSecurityContext:
fsGroup: 0
fsGroupChangePolicy: ""
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions:
level: ""
role: ""
type: ""
user: ""
seccompProfile:
localhostProfile: ""
type: ""
supplementalGroups:
- 0
sysctls:
- name: ""
value: ""
windowsOptions:
gmsaCredentialSpec: ""
gmsaCredentialSpecName: ""
hostProcess: false
runAsUserName: ""
rbac:
managed: false
selector: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- ""
drop:
- ""
privileged: false
procMount: ""
readOnlyRootFilesystem: false
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions:
level: ""
role: ""
type: ""
user: ""
seccompProfile:
localhostProfile: ""
type: ""
windowsOptions:
gmsaCredentialSpec: ""
gmsaCredentialSpecName: ""
hostProcess: false
runAsUserName: ""
uiSessionTimeout: 0
securityContext: {}
serverGroups:
- ""
servers:
- autoscaleEnabled: false
env: []
envFrom: []
image: ""
name: ""
pod: {}
resources: {}
serverGroups:
- ""
services:
- ""
size: 0
volumeMounts:
analytics:
- ""
data: ""
default: ""
index: ""
logs: ""
softwareUpdateNotifications: false
upgradeProcess: ""
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
storageBackend: ""
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.
Synchronizing will not create a Kubernetes resource for the Couchbase
Server maintained _system scope.
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.auxIOThreads
Description
AuxIOThreads allows the number of threads used by the data service, per pod, to be altered. This indicates the number of threads that are to be used in the AuxIO thread pool to run auxiliary I/O tasks. This value must be between 1 and 64 threads and is only supported on CB versions 7.1.0+. 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.nonIOThreads
Description
NonIOThreads allows the number of threads used by the data service, per pod, to be altered. This indicates the number of threads that are to be used in the NonIO thread pool to run in memory tasks. This value must be between 1 and 64 threads and is only supported on CB versions 7.1.0+. 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.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 for CB versions below 7.1.0 and, or 1 and 64 for CB versions 7.1.0+. 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
WriterThreads 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 for CB versions below 7.1.0 and, // or 1 and 64 for CB versions 7.1.0+. 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.indexer.numReplica
Description
NumberOfReplica specifies number of secondary index replicas to be created by the Index Service whenever CREATE INDEX is invoked, which ensures high availability and high performance. Note, if nodes and num_replica are both specified in the WITH clause, the specified number of nodes must be one greater than num_replica This defaults to 0, which means no index replicas to be created by default. Minimum must be 0.
couchbaseclusters.spec.cluster.query.completedMaxPlanSize
Constraints
Required
Type: string
Default: 262144
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
CompletedMaxPlanSize limits the size of query execution plans that can be logged in the completed requests catalog. Queries with plans larger than this are not logged. This field is only supported on CB versions 7.6.0+. Defaults to 262144, maximum value is 20840448, and minimum value is 0.
couchbaseclusters.spec.cluster.query.completedTrackingThreshold
Description
CompletedThreshold is a trigger for queries to be logged in the completed
requests catalog.
All completed queries lasting longer than this threshold
are logged in the completed requests catalog.
This field requires completedTrackingEnabled
to be set to true and completedTrackingAllRequests
to be false to have any effect.
couchbaseclusters.spec.cluster.query.memoryQuota
Constraints
Type: string
Default: 0
Pattern (Regular Expression): ^(\+|-)?[0-9]+(\.[0-9]*)?)|(\.[0-9]+[KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]\*)?)|(\.[0-9]+))?$
Description
MemoryQuota specifies the maximum amount of memory a request may use on any Query node in the cluster. This parameter enforces a ceiling on the memory used for the tracked documents required for processing a request. It does not take into account any other memory that might be used to process a request, such as the stack, the operators, or some intermediate values. Defaults to 0.
couchbaseclusters.spec.cluster.query.numCpus
Description
NumCpus is the number of CPUs the Query service can use on any Query node in the cluster. When set to 0 (the default), the Query service can use all available CPUs, up to the limits described below. The number of CPUs can never be greater than the number of logical CPUs. In Community Edition, the number of allowed CPUs cannot be greater than 4. In Enterprise Edition, there is no limit to the number of allowed CPUs. This field is only supported on CB versions 7.6.0+. NOTE: This change requires a restart of the Query service to take effect which can be done by rescheduling nodes that are running the query service. Defaults to 0.
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.query.useReplica
Description
UseReplica specifies whether a query can fetch data from a replica vBucket if active vBuckets are inaccessible. If set to true then read from replica is enabled for all queries, but can be disabled at request level. If set to false read from replica is disabled for all queries and cannot be overridden at request level. If this field is unset then it is enabled/disabled at the request level. This field is only supported on CB versions 7.6.0+.
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 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 In CB Server 7.6.0+ QueryServiceMemQuota also sets a soft memory limit for every Query node in the cluster. The garbage collector tries to keep below this target. It is not a hard, absolute limit, and memory usage may exceed this value.
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.envImagePrecedence
Description
EnvImagePrecedence gives precedence over the default container image name in
spec.Image
to an image name provided through Operator environment variables.
For more info on using Operator environment variables:
https://docs.couchbase.com/operator/current/reference-operator-configuration.html.
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.28/#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.cloudNativeGateway.logLevel
couchbaseclusters.spec.networking.cloudNativeGateway.tls
Description
TLS defines the TLS configuration for the Cloud Native Gateway server including
server and client certificate configuration, and TLS security policies.
If no TLS config are explicitly provided, the operator generates/manages self-signed certs/keys
and creates a k8s secret named couchbase-cloud-native-gateway-self-signed-secret-<cluster-name>
unique to a Couchbase cluster, which is volume mounted to the cb k8s pod.
This action could be overidden at the outset or later, by using the below
TLS config or generating the secret of same name as
couchbase-cloud-native-gateway-self-signed-secret-<cluster-name>
with certificates
conforming to the keys of well-known type "kubernetes.io/tls" with "tls.crt" and "tls.key".
N.B.
The secret is on per cluster basis so it’s advised to use the unique cluster name else
would be ignored.
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.28/#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.allowPlainTextCertReload
Description
AllowPlainTextCertReload allows the reload of TLS certificates in plain text. This option should only be enabled as a means to recover connectivity with server in the event that any of the server certificates expire. When enabled the Operator only attempts plain text cert reloading when expired certificates are detected.
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.passphrase.rest
Description
PassphraseRestConfig is the configuration to register a private key passphrase with a rest endpoint. When the private key is accessed, Couchbase Server attempts to extract the password by means of the specified endpoint. The response status must be 200 and the response text must be the exact passphrase excluding newlines and extraneous spaces.
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 conform to the keys of well-known type "kubernetes.io/tls" with "tls.crt" and "tls.key". If the "tls.key" is an encrypted private key then the secret type can be the generic Opaque type since "kubernetes.io/tls" type secrets cannot verify encrypted keys.
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 PEM formated x509 certificate can be provided to "ca.crt". The single certificate may also bundle together multiple root CA certificates. Multiple root CA certificates are only supported on Couchbase Server 7.1 and greater.
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 "chain.pem") and a private key (data key "pkey.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.tls.tlsMinimumVersion
Description
TLSMinimumVersion specifies the minimum TLS version the Couchbase server can negotiate with a client. Must be one of TLS1.0, TLS1.1 TLS1.2 or TLS1.3, defaulting to TLS1.2. TLS1.3 is only valid for Couchbase Server 7.1.0 onward. TLS1.0 and TLS1.1 are not valid for Couchbase Server 7.6.0 onward.
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.security.podSecurityContext
Description
PodSecurityContext 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.security.podSecurityContext.fsGroup
Description
A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:
1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR’d with rw-rw----
If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.fsGroupChangePolicy
Description
fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.runAsGroup
Description
The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.runAsNonRoot
Description
Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
couchbaseclusters.spec.security.podSecurityContext.runAsUser
Description
The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.seLinuxOptions
Description
The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.seccompProfile.localhostProfile
Description
localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet’s configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type.
couchbaseclusters.spec.security.podSecurityContext.supplementalGroups
Description
A list of groups applied to the first process run in each container, in addition to the container’s primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.podSecurityContext.windowsOptions
Description
The Windows specific settings applied to all containers. If unspecified, the options within a container’s SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
couchbaseclusters.spec.security.podSecurityContext.windowsOptions.gmsaCredentialSpec
Description
GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
couchbaseclusters.spec.security.podSecurityContext.windowsOptions.hostProcess
Description
HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod’s containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.
couchbaseclusters.spec.security.securityContext
Description
SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. Use securityContext.allowPrivilegeEscalation field to grant more privileges than its parent process. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/.
couchbaseclusters.spec.security.securityContext.allowPrivilegeEscalation
Description
AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.securityContext.procMount
Description
procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.securityContext.runAsGroup
Description
The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.securityContext.runAsNonRoot
Description
Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
couchbaseclusters.spec.security.securityContext.runAsUser
Description
The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.securityContext.seLinuxOptions
Description
The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
couchbaseclusters.spec.security.securityContext.seccompProfile.localhostProfile
Description
localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet’s configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type.
couchbaseclusters.spec.security.securityContext.windowsOptions
Description
The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
couchbaseclusters.spec.security.securityContext.windowsOptions.gmsaCredentialSpec
Description
GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
couchbaseclusters.spec.security.securityContext.windowsOptions.hostProcess
Description
HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod’s containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.
couchbaseclusters.spec.securityContext
Description
DEPRECATED - by spec.security.securityContext 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.image
Constraints
Type: string
Pattern (Regular Expression): ^(.*?(:\d+)?/)?.\*?/.*?(:.\*?\d+\.\d+\.\d+.\*|@sha256:[0-9a-f]{64})$
Description
Image is the container image name that will be used to launch Couchbase server instances in this server class. You cannot downgrade the Couchbase version. Across spec.image and all server classes there can only be two different Couchbase images. Updating this field to a value different than spec.image will cause an automatic upgrade of the server class. If it isn’t specified then the cluster image will be used.
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.28/#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.upgradeProcess
Description
UpgradeProcess defines the process that will be used when performing a couchbase cluster upgrade. When SwapRebalance is requested (default), pods will be upgraded using either a RollingUpgrade or ImmediateUpgrade (determined by UpgradeStrategy). When InPlaceUpgrade is requested, the operator will perform an in-place upgrade on a best effort basis. InPlaceUpgrade cannot be used if the UpgradeStrategy is set to ImmediateUpgrade.
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.