CouchbaseCluster Resource

    +

    The CouchbaseCluster resource represents a Couchbase cluster. It allows configuration of cluster topology, networking, storage and security options.

    couchbaseclusters.apiVersion

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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

    Constraints

    Required

    Type: object

    Description

    Standard object metadata as defined for all Kubernetes types.

    For additional details see the Kubernetes reference documentation.

    couchbaseclusters.metadata.name

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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

    Constraints

    Type: map[string]string

    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

    Constraints

    Type: map[string]string

    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

    Constraints

    Required

    Type: object

    Description

    ClusterSpec is the specification for a CouchbaseCluster resources, and allows the cluster to be customized.

    couchbaseclusters.spec.antiAffinity

    Constraints

    Type: boolean

    Description

    AntiAffinity forces the Operator to schedule different Couchbase server pods on different Kubernetes nodes. Anti-affinity reduces the likelihood of unrecoverable failure in the event of a node issue. Use of anti-affinity is highly recommended for production clusters.

    couchbaseclusters.spec.autoResourceAllocation

    Constraints

    Type: object

    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.autoResourceAllocation.enabled

    Constraints

    Type: boolean

    Description

    Enabled defines whether auto-resource allocation is enabled.

    couchbaseclusters.spec.autoResourceAllocation.overheadPercent

    Constraints

    Type: integer

    Default: 25

    Minimum: 0

    Description

    OverheadPercent defines the amount of memory above that required for individual services on a pod. For Couchbase Server this should be approximately 25%.

    couchbaseclusters.spec.autoscaleStabilizationPeriod

    Constraints

    Type: string

    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

    Constraints

    Type: object

    Description

    Backup defines whether the Operator should manage automated backups, and how to lookup backup resources.

    couchbaseclusters.spec.backup.image

    Constraints

    Type: string

    Description

    The Backup Image to run on backup pods.

    couchbaseclusters.spec.backup.imagePullSecrets

    Constraints

    Type: []object

    Description

    ImagePullSecrets allow you to use an image from private repositories and non-dockerhub ones.

    couchbaseclusters.spec.backup.imagePullSecrets.name

    Constraints

    Type: string

    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.managed

    Constraints

    Type: boolean

    Description

    Managed defines whether backups are managed by us or the clients.

    couchbaseclusters.spec.backup.nodeSelector

    Constraints

    Type: map[string]string

    Description

    NodeSelector defines which nodes to constrain the pods that run any backup operations to.

    couchbaseclusters.spec.backup.resources

    Constraints

    Type: object

    Description

    Resources is the resource requirements for the backup container. Will be populated by defaults if not specified.

    couchbaseclusters.spec.backup.s3Secret

    Constraints

    Type: string

    Description

    S3Secret contains the region and credentials for operating backups in S3.

    couchbaseclusters.spec.backup.selector

    Constraints

    Type: object

    Description

    Selector allows CouchbaseBackup and CouchbaseBackupRestore resources to be filtered based on labels.

    couchbaseclusters.spec.backup.serviceAccountName

    Constraints

    Type: string

    Description

    The Service Account to run backup (and restore) pods under. Without this backup pods will not be able to update status.

    couchbaseclusters.spec.backup.tolerations

    Constraints

    Type: []object

    Description

    Tolerations specifies all backup pod tolerations.

    couchbaseclusters.spec.backup.tolerations.effect

    Constraints

    Type: string

    Description

    Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

    couchbaseclusters.spec.backup.tolerations.key

    Constraints

    Type: string

    Description

    Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

    couchbaseclusters.spec.backup.tolerations.operator

    Constraints

    Type: string

    Description

    Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

    couchbaseclusters.spec.backup.tolerations.tolerationSeconds

    Constraints

    Type: integer

    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.backup.tolerations.value

    Constraints

    Type: string

    Description

    Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

    couchbaseclusters.spec.buckets

    Constraints

    Type: object

    Description

    Buckets defines whether the Operator should manage buckets, and how to lookup bucket resources.

    couchbaseclusters.spec.buckets.managed

    Constraints

    Type: boolean

    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.selector

    Constraints

    Type: object

    Description

    Selector is a label selector used to list buckets in the namespace that are managed by the Operator.

    couchbaseclusters.spec.buckets.selector.matchExpressions

    Constraints

    Type: []object

    Description

    matchExpressions is a list of label selector requirements. The requirements are ANDed.

    couchbaseclusters.spec.buckets.selector.matchExpressions.key

    Constraints

    Required

    Type: string

    Description

    key is the label key that the selector applies to.

    couchbaseclusters.spec.buckets.selector.matchExpressions.operator

    Constraints

    Required

    Type: string

    Description

    operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

    couchbaseclusters.spec.buckets.selector.matchExpressions.values

    Constraints

    Type: []string

    Description

    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.

    couchbaseclusters.spec.buckets.selector.matchLabels

    Constraints

    Type: map[string]string

    Description

    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

    couchbaseclusters.spec.cluster

    Constraints

    Type: object

    Default: {}

    Description

    ClusterSettings define Couchbase cluster-wide settings such as memory allocation, failover characteristics and index settings.

    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

    Constraints

    Type: object

    Default: {}

    Description

    AutoCompaction allows the configuration of auto-compaction, including on what conditions disk space is reclaimed and when it is allowed to run.

    couchbaseclusters.spec.cluster.autoCompaction.databaseFragmentationThreshold

    Constraints

    Type: object

    Default: {}

    Description

    DatabaseFragmentationThreshold defines triggers for when database compaction should start.

    couchbaseclusters.spec.cluster.autoCompaction.databaseFragmentationThreshold.percent

    Constraints

    Type: integer

    Default: 30

    Minimum: 2

    Maximum: 100

    Description

    Percent is the percentage of disk fragmentation after which to decompaction will be triggered. This field must be in the range 2-100, defaulting to 30.

    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.parallelCompaction

    Constraints

    Type: boolean

    Description

    ParallelCompaction controls whether database and view compactions can happen in parallel.

    couchbaseclusters.spec.cluster.autoCompaction.timeWindow

    Constraints

    Type: object

    Description

    TimeWindow allows restriction of when compaction can occur.

    couchbaseclusters.spec.cluster.autoCompaction.timeWindow.abortCompactionOutsideWindow

    Constraints

    Type: boolean

    Description

    AbortCompactionOutsideWindow stops compaction processes when the process moves outside the window.

    couchbaseclusters.spec.cluster.autoCompaction.timeWindow.end

    Constraints

    Type: string

    Pattern (Regular Expression): ^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$

    Description

    End is a wallclock time, in the form HH:MM, when a compaction should stop.

    couchbaseclusters.spec.cluster.autoCompaction.timeWindow.start

    Constraints

    Type: string

    Pattern (Regular Expression): ^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$

    Description

    Start is a wallclock time, in the form HH:MM, when a compaction is permitted to start.

    couchbaseclusters.spec.cluster.autoCompaction.tombstonePurgeInterval

    Constraints

    Type: string

    Default: 72h

    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

    Constraints

    Type: object

    Default: {}

    Description

    ViewFragmentationThreshold defines triggers for when view compaction should start.

    couchbaseclusters.spec.cluster.autoCompaction.viewFragmentationThreshold.percent

    Constraints

    Type: integer

    Default: 30

    Minimum: 2

    Maximum: 100

    Description

    Percent is the percentage of disk fragmentation after which to decompaction will be triggered. This field must be in the range 2-100, defaulting to 30.

    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.autoFailoverMaxCount

    Constraints

    Type: integer

    Default: 3

    Minimum: 1

    Maximum: 3

    Description

    AutoFailoverMaxCount is the maximum number of automatic failovers Couchbase server will allow before not allowing any more. This field must be between 1-3, default 3.

    couchbaseclusters.spec.cluster.autoFailoverOnDataDiskIssues

    Constraints

    Type: boolean

    Description

    AutoFailoverOnDataDiskIssues defines whether Couchbase server should failover a pod if a disk issue was detected.

    couchbaseclusters.spec.cluster.autoFailoverOnDataDiskIssuesTimePeriod

    Constraints

    Type: string

    Default: 120s

    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.autoFailoverServerGroup

    Constraints

    Type: boolean

    Description

    AutoFailoverServerGroup whether to enable failing over a server group.

    couchbaseclusters.spec.cluster.autoFailoverTimeout

    Constraints

    Type: string

    Default: 120s

    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.clusterName

    Constraints

    Type: string

    Description

    ClusterName defines the name of the cluster, as displayed in the Couchbase UI. By default, the cluster name is that specified in the CouchbaseCluster resource’s metadata.

    couchbaseclusters.spec.cluster.data

    Constraints

    Type: object

    Description

    Data allows the data service to be configured.

    couchbaseclusters.spec.cluster.data.readerThreads

    Constraints

    Type: integer

    Minimum: 4

    Maximum: 64

    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

    Constraints

    Type: integer

    Minimum: 4

    Maximum: 64

    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

    Constraints

    Type: string

    Default: memory\_optimized

    Enumerations: memory\_optimized, plasma

    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

    Constraints

    Type: object

    Description

    Indexer allows the indexer to be configured.

    couchbaseclusters.spec.cluster.indexer.logLevel

    Constraints

    Type: string

    Default: info

    Enumerations: silent, fatal, error, warn, info, verbose, timing, debug, trace

    Description

    LogLevel controls the verbosity of indexer logs. This field must be one of "silent", "fatal", "error", "warn", "info", "verbose", "timing", "debug" or "trace", defaulting to "info".

    couchbaseclusters.spec.cluster.indexer.maxRollbackPoints

    Constraints

    Type: integer

    Default: 2

    Minimum: 1

    Description

    MaxRollbackPoints controls the number of checkpoints that can be rolled back to. The default is 2, with a minimum of 1.

    couchbaseclusters.spec.cluster.indexer.memorySnapshotInterval

    Constraints

    Type: string

    Default: 200ms

    Description

    MemorySnapshotInterval controls when memory indexes should be snapshotted. This defaults to 200ms, and must be greater than or equal to 1ms.

    couchbaseclusters.spec.cluster.indexer.stableSnapshotInterval

    Constraints

    Type: string

    Default: 5s

    Description

    StableSnapshotInterval controls when disk indexes should be snapshotted. This defaults to 5s, and must be greater than or equal to 1ms.

    couchbaseclusters.spec.cluster.indexer.storageMode

    Constraints

    Type: string

    Default: memory\_optimized

    Enumerations: memory\_optimized, plasma

    Description

    StorageMode controls the underlying storage engine for indexes. Once set it can only be modified if there are no nodes in the cluster running the index service. The field must be one of "memory_optimized" or "plasma", defaulting to "memory_optimized".

    couchbaseclusters.spec.cluster.indexer.threads

    Constraints

    Type: integer

    Minimum: 0

    Description

    Threads controls the number of processor threads to use for indexing. A value of 0 means 1 per CPU. This attribute must be greater than or equal to 0, defaulting to 0.

    couchbaseclusters.spec.cluster.query

    Constraints

    Type: object

    Description

    Query allows the query service to be configured.

    couchbaseclusters.spec.cluster.query.backfillEnabled

    Constraints

    Type: boolean

    Default: True

    Description

    BackfillEnabled allows the query service to backfill.

    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.temporarySpaceUnlimited

    Constraints

    Type: boolean

    Description

    TemporarySpaceUnlimited allows the temporary storage used by the query service backfill, per-pod, to be unconstrained. This field requires backfillEnabled to be set to true in order to have any effect. This field overrides temporarySpace.

    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

    Constraints

    Type: boolean

    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.enablePreviewScaling

    Constraints

    Type: boolean

    Description

    DEPRECATED - This option only exists for backwards compatibility and no longer restricts autoscaling to ephemeral services.

    EnablePreviewScaling enables autoscaling for stateful services and buckets.

    couchbaseclusters.spec.hibernate

    Constraints

    Type: boolean

    Description

    Hibernate is whether to hibernate the cluster.

    couchbaseclusters.spec.hibernationStrategy

    Constraints

    Type: string

    Enumerations: Immediate

    Description

    HibernationStrategy defines how to hibernate the cluster. When Immediate the Operator will immediately delete all pods and take no further action until the hibernate field is set to false.

    couchbaseclusters.spec.image

    Constraints

    Required

    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. Updating this field will cause an automatic upgrade of the cluster.

    couchbaseclusters.spec.logging

    Constraints

    Type: object

    Description

    Logging defines Operator logging options.

    couchbaseclusters.spec.logging.audit

    Constraints

    Type: object

    Description

    Used to manage the audit configuration directly.

    couchbaseclusters.spec.logging.audit.disabledEvents

    Constraints

    Type: []integer

    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

    Constraints

    Type: []string

    Pattern (Regular Expression): ^.+/(local|external)$

    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.enabled

    Constraints

    Type: boolean

    Description

    Enabled is a boolean that enables the audit capabilities.

    couchbaseclusters.spec.logging.audit.garbageCollection

    Constraints

    Type: object

    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.garbageCollection.sidecar

    Constraints

    Type: object

    Description

    Provide the sidecar configuration required (if so desired) to automatically clean up audit logs.

    couchbaseclusters.spec.logging.audit.garbageCollection.sidecar.age

    Constraints

    Type: string

    Default: 1h

    Description

    The minimum age of rotated log files to remove, defaults to one hour.

    couchbaseclusters.spec.logging.audit.garbageCollection.sidecar.enabled

    Constraints

    Type: boolean

    Description

    Enable this sidecar by setting to true, defaults to being disabled.

    couchbaseclusters.spec.logging.audit.garbageCollection.sidecar.image

    Constraints

    Type: string

    Default: busybox:1.33.1

    Description

    Image is the image to be used to run the audit sidecar helper. No validation is carried out as this can be any arbitrary repo and tag.

    couchbaseclusters.spec.logging.audit.garbageCollection.sidecar.interval

    Constraints

    Type: string

    Default: 20m

    Description

    The interval at which to check for rotated log files to remove, defaults to 20 minutes.

    couchbaseclusters.spec.logging.audit.garbageCollection.sidecar.resources

    Constraints

    Type: object

    Description

    Resources is the resource requirements for the cleanup container. Will be populated by Kubernetes defaults if not specified.

    couchbaseclusters.spec.logging.audit.rotation

    Constraints

    Type: object

    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.interval

    Constraints

    Type: string

    Default: 15m

    Description

    The interval at which to rotate log files, defaults to 15 minutes.

    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.logRetentionCount

    Constraints

    Type: integer

    Minimum: 0

    Description

    LogRetentionCount gives the number of persistent log PVCs to keep.

    couchbaseclusters.spec.logging.logRetentionTime

    Constraints

    Type: string

    Pattern (Regular Expression): ^\d+(ns|us|ms|s|m|h)$

    Description

    LogRetentionTime gives the time to keep persistent log PVCs alive for.

    couchbaseclusters.spec.logging.server

    Constraints

    Type: object

    Description

    Specification of all logging configuration required to manage the sidecar containers in each pod.

    couchbaseclusters.spec.logging.server.configurationName

    Constraints

    Type: string

    Default: fluent-bit-config

    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.enabled

    Constraints

    Type: boolean

    Description

    Enabled is a boolean that enables the logging sidecar container.

    couchbaseclusters.spec.logging.server.manageConfiguration

    Constraints

    Type: boolean

    Default: True

    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

    Constraints

    Type: object

    Default: {}

    Description

    Any specific logging sidecar container configuration.

    couchbaseclusters.spec.logging.server.sidecar.configurationMountPath

    Constraints

    Type: string

    Default: /fluent-bit/config/

    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.

    couchbaseclusters.spec.logging.server.sidecar.image

    Constraints

    Type: string

    Default: couchbase/fluent-bit:1.0.4

    Description

    Image is the image to be used to deal with logging as a sidecar. No validation is carried out as this can be any arbitrary repo and tag. It will default to the latest supported version of Fluent Bit.

    couchbaseclusters.spec.logging.server.sidecar.resources

    Constraints

    Type: object

    Description

    Resources is the resource requirements for the sidecar container. Will be populated by Kubernetes defaults if not specified.

    couchbaseclusters.spec.monitoring

    Constraints

    Type: object

    Description

    Monitoring defines any Operator managed integration into 3rd party monitoring infrastructure.

    couchbaseclusters.spec.monitoring.prometheus

    Constraints

    Type: object

    Description

    Prometheus provides integration with Prometheus monitoring.

    couchbaseclusters.spec.monitoring.prometheus.authorizationSecret

    Constraints

    Type: string

    Description

    AuthorizationSecret is the name of a Kubernetes secret that contains a bearer token to authorize GET requests to the metrics endpoint.

    couchbaseclusters.spec.monitoring.prometheus.enabled

    Constraints

    Type: boolean

    Description

    Enabled is a boolean that enables/disables the metrics sidecar container.

    couchbaseclusters.spec.monitoring.prometheus.image

    Constraints

    Type: string

    Description

    Image is the metrics image to be used to collect metrics. No validation is carried out as this can be any arbitrary repo and tag.

    couchbaseclusters.spec.monitoring.prometheus.resources

    Constraints

    Type: object

    Description

    Resources is the resource requirements for the metrics container. Will be populated by Kubernetes defaults if not specified.

    couchbaseclusters.spec.networking

    Constraints

    Type: object

    Description

    Networking defines Couchbase cluster networking options such as network topology, TLS and DDNS settings.

    couchbaseclusters.spec.networking.addressFamily

    Constraints

    Type: string

    Enumerations: IPv4, IPv6

    Description

    DEVELOPER PREVIEW - this feature is not for production use.

    AddressFamily allows the manual selection of the address family to use. Couchbase server will default to "IPv4" regardless of underlying network configuration, so this must be manually set to enable use on an "IPv6" only network. This field is immutable and cannot be changed once set.

    couchbaseclusters.spec.networking.adminConsoleServiceTemplate

    Constraints

    Type: object

    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.19/#service-v1-core.

    couchbaseclusters.spec.networking.adminConsoleServiceType

    Constraints

    Type: string

    Default: NodePort

    Enumerations: NodePort, LoadBalancer

    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.adminConsoleServices

    Constraints

    Type: []string

    Enumerations: admin, data, index, query, search, eventing, analytics

    Description

    DEPRECATED - not required by Couchbase Server 6.5.0 onward.

    AdminConsoleServices is a selector to choose specific services to expose via the admin console. This field may contain any of "data", "index", "query", "search", "eventing" and "analytics". Each service may only be included once.

    couchbaseclusters.spec.networking.disableUIOverHTTP

    Constraints

    Type: boolean

    Description

    DisableUIOverHTTP is used to explicitly enable and disable UI access over the HTTP protocol. If not specified, this field defaults to false.

    couchbaseclusters.spec.networking.disableUIOverHTTPS

    Constraints

    Type: boolean

    Description

    DisableUIOverHTTPS is used to explicitly enable and disable UI access over the HTTPS protocol. If not specified, this field defaults to false.

    couchbaseclusters.spec.networking.dns

    Constraints

    Type: object

    Description

    DNS defines information required for Dynamic DNS support.

    couchbaseclusters.spec.networking.dns.domain

    Constraints

    Type: string

    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.exposeAdminConsole

    Constraints

    Type: boolean

    Description

    ExposeAdminConsole creates a service referencing the admin console. The service is configured by the adminConsoleServiceTemplate field.

    couchbaseclusters.spec.networking.exposedFeatureServiceTemplate

    Constraints

    Type: object

    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.19/#service-v1-core.

    couchbaseclusters.spec.networking.exposedFeatureServiceType

    Constraints

    Type: string

    Default: NodePort

    Enumerations: NodePort, LoadBalancer

    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

    Constraints

    Type: string

    Enumerations: Cluster, Local

    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

    Constraints

    Type: []string

    Enumerations: admin, xdcr, client

    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.networkPlatform

    Constraints

    Type: string

    Enumerations: Istio

    Description

    NetworkPlatform is used to enable support for various networking technologies. This field must be one of "Istio".

    couchbaseclusters.spec.networking.serviceAnnotations

    Constraints

    Type: map[string]string

    Description

    DEPRECATED - by adminConsoleServiceTemplate and exposedFeatureServiceTemplate.

    ServiceAnnotations allows services to be annotated with custom labels. Operator annotations are merged on top of these so have precedence as they are required for correct operation.

    couchbaseclusters.spec.networking.tls

    Constraints

    Type: object

    Description

    TLS defines the TLS configuration for the cluster including server and client certificate configuration, and TLS security policies.

    couchbaseclusters.spec.networking.tls.cipherSuites

    Constraints

    Type: []string

    Description

    CipherSuites specifies a list of cipher suites for Couchbase server to select from when negotiating TLS handshakes with a client. Suites are not validated by the Operator. Run "openssl ciphers -v" in a Couchbase server pod to interrogate supported values.

    couchbaseclusters.spec.networking.tls.clientCertificatePaths

    Constraints

    Type: []object

    Description

    ClientCertificatePaths defines where to look in client certificates in order to extract the user name.

    couchbaseclusters.spec.networking.tls.clientCertificatePaths.delimiter

    Constraints

    Type: string

    Description

    Delimiter if specified allows a suffix to be stripped from the username, once extracted from the certificate path.

    couchbaseclusters.spec.networking.tls.clientCertificatePaths.path

    Constraints

    Required

    Type: string

    Pattern (Regular Expression): ^subject\.cn|san\.uri|san\.dnsname|san\.email$

    Description

    Path defines where in the X.509 specification to extract the username from. This field must be either "subject.cn", "san.uri", "san.dnsname" or "san.email".

    couchbaseclusters.spec.networking.tls.clientCertificatePaths.prefix

    Constraints

    Type: string

    Description

    Prefix allows a prefix to be stripped from the username, once extracted from the certificate path.

    couchbaseclusters.spec.networking.tls.clientCertificatePolicy

    Constraints

    Type: string

    Enumerations: enable, mandatory

    Description

    ClientCertificatePolicy defines the client authentication policy to use. If set, the Operator expects TLS configuration to contain a valid certificate/key pair for the Administrator account.

    couchbaseclusters.spec.networking.tls.nodeToNodeEncryption

    Constraints

    Type: string

    Enumerations: ControlPlaneOnly, All

    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. This field must be either "ControlPlaneOnly" or "All".

    couchbaseclusters.spec.networking.tls.secretSource

    Constraints

    Type: object

    Description

    SecretSource enables the user to specify a secret conforming to the Kubernetes TLS secret specification.

    couchbaseclusters.spec.networking.tls.secretSource.clientSecretName

    Constraints

    Type: string

    Description

    ClientSecretName specifies the secret name, in the same namespace as the cluster, the contains client TLS data. The secret is expected to contain "tls.crt" and "tls.key" as per the Kubernetes.io/tls secret type.

    couchbaseclusters.spec.networking.tls.secretSource.serverSecretName

    Constraints

    Required

    Type: string

    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 also additionally must contain "ca.crt".

    couchbaseclusters.spec.networking.tls.static

    Constraints

    Type: object

    Description

    Static enables user to generate static x509 certificates and keys, put them into Kubernetes secrets, and specify them here. Static secrets are very Couchbase specific.

    couchbaseclusters.spec.networking.tls.static.operatorSecret

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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.tls.tlsMinimumVersion

    Constraints

    Type: string

    Default: TLS1.2

    Enumerations: TLS1.0, TLS1.1, TLS1.2

    Description

    TLSMinimumVersion specifies the minimum TLS version the Couchbase server can negotiate with a client. Must be one of TLS1.0, TLS1.1 or TLS1.2, defaulting to TLS1.2.

    couchbaseclusters.spec.paused

    Constraints

    Type: boolean

    Description

    Paused is to pause the control of the operator for the Couchbase cluster. This does not pause the cluster itself, instead stopping the operator from taking any action.

    couchbaseclusters.spec.platform

    Constraints

    Type: string

    Enumerations: aws, gce, azure

    Description

    Platform gives a hint as to what platform we are running on and how to configure services. This field must be one of "aws", "gke" or "azure".

    couchbaseclusters.spec.recoveryPolicy

    Constraints

    Type: string

    Enumerations: PrioritizeDataIntegrity, PrioritizeUptime

    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

    Constraints

    Type: object

    Description

    When spec.upgradeStrategy is set to RollingUpgrade it will, by default, upgrade one pod at a time. If this field is specified then that number can be increased.

    couchbaseclusters.spec.rollingUpgrade.maxUpgradable

    Constraints

    Type: integer

    Minimum: 1

    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

    Constraints

    Type: string

    Pattern (Regular Expression): ^(100|[1-9][0-9]|[1-9])%$

    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

    Constraints

    Required

    Type: object

    Description

    Security defines Couchbase cluster security options such as the administrator account username and password, and user RBAC settings.

    couchbaseclusters.spec.security.adminSecret

    Constraints

    Required

    Type: string

    Description

    AdminSecret is the name of a Kubernetes secret to use for administrator authentication. The admin secret must contain the keys "username" and "password". The password data must be at least 6 characters in length, and not contain the any of the characters ()<>,;:\"/[]?={}.

    couchbaseclusters.spec.security.ldap

    Constraints

    Type: object

    Description

    LDAP Settings.

    couchbaseclusters.spec.security.ldap.authenticationEnabled

    Constraints

    Type: boolean

    Default: True

    Description

    Enables using LDAP to authenticate users.

    couchbaseclusters.spec.security.ldap.authorizationEnabled

    Constraints

    Type: boolean

    Description

    Enables use of LDAP groups for authorization.

    couchbaseclusters.spec.security.ldap.bindDN

    Constraints

    Type: string

    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.bindSecret

    Constraints

    Required

    Type: string

    Description

    BindSecret is the name of a Kubernetes secret to use containing password for LDAP user binding.

    couchbaseclusters.spec.security.ldap.cacert

    Constraints

    Type: string

    Description

    CA Certificate in PEM format to be used in LDAP server certificate validation.

    couchbaseclusters.spec.security.ldap.cacheValueLifetime

    Constraints

    Type: integer

    Default: 30000

    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

    Constraints

    Type: string

    Enumerations: None, StartTLSExtension, TLS

    Description

    Encryption method to communicate with LDAP servers. Can be StartTLSExtension, TLS, or false.

    couchbaseclusters.spec.security.ldap.groupsQuery

    Constraints

    Type: string

    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.hosts

    Constraints

    Required

    Type: []string

    Description

    List of LDAP hosts.

    couchbaseclusters.spec.security.ldap.nestedGroupsEnabled

    Constraints

    Type: boolean

    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

    Constraints

    Type: integer

    Default: 10

    Minimum: 1

    Maximum: 100

    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.port

    Constraints

    Required

    Type: integer

    Default: 389

    Description

    LDAP port. This is typically 389 for LDAP, and 636 for LDAPS.

    couchbaseclusters.spec.security.ldap.serverCertValidation

    Constraints

    Type: boolean

    Description

    Whether server certificate validation be enabled.

    couchbaseclusters.spec.security.ldap.tlsSecret

    Constraints

    Type: string

    Description

    TLSSecret is the name of a Kubernetes secret to use for LDAP ca cert.

    couchbaseclusters.spec.security.ldap.userDNMapping

    Constraints

    Type: object

    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.ldap.userDNMapping.query

    Constraints

    Type: string

    Description

    Query is the LDAP query to run to map from Couchbase user to LDAP distinguished name.

    couchbaseclusters.spec.security.ldap.userDNMapping.template

    Constraints

    Type: string

    Description

    This field specifies list of templates to use for providing username to DN mapping. The template may contain a placeholder specified as %u to represent the Couchbase user who is attempting to gain access.

    couchbaseclusters.spec.security.rbac

    Constraints

    Type: object

    Description

    Couchbase RBAC Users.

    couchbaseclusters.spec.security.rbac.managed

    Constraints

    Type: boolean

    Description

    Managed defines whether RBAC is managed by us or the clients.

    couchbaseclusters.spec.security.rbac.selector

    Constraints

    Type: object

    Description

    Selector is a label selector used to list RBAC resources in the namespace that are managed by the Operator.

    couchbaseclusters.spec.securityContext

    Constraints

    Type: object

    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

    Constraints

    Type: []string

    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 "failure-domain.beta.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 "failure-domain.beta.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

    Constraints

    Required

    Type: []object

    Minimum Items: 1

    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

    Constraints

    Type: boolean

    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.env

    Constraints

    Type: []object

    Description

    Env allows the setting of environment variables in the Couchbase server container.

    couchbaseclusters.spec.servers.name

    Constraints

    Required

    Type: string

    Description

    Name is a textual name for the server configuration and must be unique. The name is used by the operator to uniquely identify a server class, and map pods back to an intended configuration.

    couchbaseclusters.spec.servers.pod

    Constraints

    Type: object

    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.19/#pod-v1-core.

    couchbaseclusters.spec.servers.resources

    Constraints

    Type: object

    Description

    Resources are the resource requirements for the Couchbase server container. This field overrides any automatic allocation as defined by spec.autoResourceAllocation.

    couchbaseclusters.spec.servers.serverGroups

    Constraints

    Type: []string

    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 "failure-domain.beta.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 "failure-domain.beta.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

    Constraints

    Required

    Type: []string

    Enumerations: admin, data, index, query, search, eventing, analytics

    Description

    Services is the set of Couchbase services to run on this server class. At least one class must contain the data service. The field may contain any of "data", "index", "query", "search", "eventing" or "analytics". Each service may only be specified once.

    couchbaseclusters.spec.servers.size

    Constraints

    Required

    Type: integer

    Minimum: 1

    Description

    Size is the expected requested of the server class. This field must be greater than or equal to 1.

    couchbaseclusters.spec.servers.volumeMounts

    Constraints

    Type: object

    Description

    VolumeMounts define persistent volume claims to attach to pod.

    couchbaseclusters.spec.servers.volumeMounts.analytics

    Constraints

    Type: []string

    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

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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

    Constraints

    Type: string

    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.softwareUpdateNotifications

    Constraints

    Type: boolean

    Description

    SoftwareUpdateNotifications enables software update notifications in the UI. When enabled, the UI will alert when a Couchbase server upgrade is available.

    couchbaseclusters.spec.upgradeStrategy

    Constraints

    Type: string

    Enumerations: RollingUpgrade, ImmediateUpgrade

    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.volumeClaimTemplates

    Constraints

    Type: []object

    Description

    VolumeClaimTemplates define the desired characteristics of a volume that can be requested/claimed by a pod, for example the storage class to use and the volume size. Volume claim templates are referred to by name by server class volume mount configuration.

    couchbaseclusters.spec.xdcr

    Constraints

    Type: object

    Description

    XDCR defines whether the Operator should manage XDCR, remote clusters and how to lookup replication resources.

    couchbaseclusters.spec.xdcr.managed

    Constraints

    Type: boolean

    Description

    Managed defines whether XDCR is managed by the operator or not.

    couchbaseclusters.spec.xdcr.remoteClusters

    Constraints

    Type: []object

    Description

    RemoteClusters is a set of named remote clusters to establish replications to.

    couchbaseclusters.spec.xdcr.remoteClusters.authenticationSecret

    Constraints

    Type: string

    Description

    AuthenticationSecret is a secret used to authenticate when establishing a remote connection. It is only required when not using mTLS. The secret must contain a username (secret key "username") and password (secret key "password").

    couchbaseclusters.spec.xdcr.remoteClusters.hostname

    Constraints

    Required

    Type: string

    Pattern (Regular Expression): ((couchbase|couchbases|http|https)://)?[0-9a-zA-Z\-\.]+(:\d+)?(\?network=[&]+)?$

    Description

    Hostname is the connection string to use to connect the remote cluster.

    couchbaseclusters.spec.xdcr.remoteClusters.name

    Constraints

    Required

    Type: string

    Description

    Name of the remote cluster.

    couchbaseclusters.spec.xdcr.remoteClusters.replications

    Constraints

    Type: object

    Description

    Replications are replication streams from this cluster to the remote one. This field defines how to look up CouchbaseReplication resources. By default any CouchbaseReplication resources in the namespace will be considered.

    couchbaseclusters.spec.xdcr.remoteClusters.replications.selector

    Constraints

    Type: object

    Description

    Selector allows CouchbaseReplication resources to be filtered based on labels.

    couchbaseclusters.spec.xdcr.remoteClusters.tls

    Constraints

    Type: object

    Description

    TLS if specified references a resource containing the necessary certificate data for an encrypted connection.

    couchbaseclusters.spec.xdcr.remoteClusters.tls.secret

    Constraints

    Required

    Type: string

    Description

    Secret references a secret containing the CA certificate (data key "ca"), and optionally a client certificate (data key "certificate") and key (data key "key").

    couchbaseclusters.spec.xdcr.remoteClusters.uuid

    Constraints

    Required

    Type: string

    Pattern (Regular Expression): ^[0-9a-f]{32}$

    Description

    UUID of the remote cluster. The UUID of a CouchbaseCluster resource is advertised in the status.clusterId field of the resource.

    couchbaseclusters.status

    Constraints

    Type: object

    Description

    ClusterStatus defines any read-only status fields for the Couchbase server cluster.

    couchbaseclusters.status.allocations

    Constraints

    Type: []object

    Description

    Allocations shows memory allocations within server classes.

    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.allocatedMemoryPercent

    Constraints

    Type: integer

    Description

    AllocatedMemoryPercent is set when memory resources are requested and define how much of the requested memory is allocated to constrained Couchbase services.

    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.name

    Constraints

    Required

    Type: string

    Description

    Name is the name of the server class defined in spec.servers.

    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.

    couchbaseclusters.status.allocations.unusedMemoryPercent

    Constraints

    Type: integer

    Description

    UnusedMemoryPercent is set when memory resources are requested and defines how much requested memory is not allocated. Couchbase server expects at least a 20% overhead.

    couchbaseclusters.status.autoscalers

    Constraints

    Type: []string

    Description

    Autscalers describes all the autoscalers managed by the cluster.

    couchbaseclusters.status.buckets

    Constraints

    Type: []object

    Description

    Buckets describes all the buckets managed by the cluster.

    couchbaseclusters.status.buckets.compressionMode

    Constraints

    Required

    Type: string

    Description

    CompressionMode defines how documents are compressed.

    couchbaseclusters.status.buckets.conflictResolution

    Constraints

    Required

    Type: string

    Description

    ConflictResolution is relevant for couchbase and ephemeral bucket types and indicates how to resolve conflicts when using multi-master XDCR.

    couchbaseclusters.status.buckets.enableFlush

    Constraints

    Required

    Type: boolean

    Description

    EnableFlush is whether a client can delete all documents in a bucket.

    couchbaseclusters.status.buckets.enableIndexReplica

    Constraints

    Required

    Type: boolean

    Description

    EnableIndexReplica is whether indexes against bucket documents are replicated.

    couchbaseclusters.status.buckets.evictionPolicy

    Constraints

    Required

    Type: string

    Description

    EvictionPolicy is relevant for couchbase and ephemeral bucket types and indicates how documents are evicted from memory when it is exhausted.

    couchbaseclusters.status.buckets.ioPriority

    Constraints

    Required

    Type: string

    Description

    IoPriority is low or high depending on the number of threads spawned for data processing.

    couchbaseclusters.status.buckets.memoryQuota

    Constraints

    Required

    Type: integer

    Description

    BucketMemoryQuota is the bucket memory quota in megabytes.

    couchbaseclusters.status.buckets.name

    Constraints

    Required

    Type: string

    Description

    BucketName is the full name of the bucket.

    couchbaseclusters.status.buckets.password

    Constraints

    Required

    Type: string

    Description

    BucketPassword will never be populated.

    couchbaseclusters.status.buckets.replicas

    Constraints

    Required

    Type: integer

    Description

    BucketReplicas is the number of data replicas.

    couchbaseclusters.status.buckets.type

    Constraints

    Required

    Type: string

    Description

    BucketType is the type of the bucket.

    couchbaseclusters.status.clusterId

    Constraints

    Type: string

    Description

    ClusterID is the unique cluster UUID. This is generated every time a new cluster is created, so may vary over the lifetime of a cluster if it is recreated by disaster recovery mechanisms.

    couchbaseclusters.status.conditions

    Constraints

    Type: []object

    Description

    Current service state of the Couchbase cluster.

    couchbaseclusters.status.conditions.lastTransitionTime

    Constraints

    Type: string

    Description

    Last time the condition transitioned from one status to another.

    couchbaseclusters.status.conditions.lastUpdateTime

    Constraints

    Type: string

    Description

    Last time the condition status message updated.

    couchbaseclusters.status.conditions.message

    Constraints

    Type: string

    Description

    A human readable message indicating details about the transition.

    couchbaseclusters.status.conditions.reason

    Constraints

    Type: string

    Description

    Unique, one-word, CamelCase reason for the condition’s last transition.

    couchbaseclusters.status.conditions.status

    Constraints

    Required

    Type: string

    Description

    Status is the status of the condition. Can be one of True, False, Unknown.

    couchbaseclusters.status.conditions.type

    Constraints

    Required

    Type: string

    Enumerations: Available, Balanced, ManageConfig, Scaling, Upgrading, Hibernating, Error, AutoscaleReady

    Description

    Type is the type of condition.

    couchbaseclusters.status.controlPaused

    Constraints

    Type: boolean

    Description

    ControlPaused indicates if the Operator has acknowledged and paused the control of the cluster.

    couchbaseclusters.status.currentVersion

    Constraints

    Type: string

    Description

    CurrentVersion is the current Couchbase version. This reflects the version of the whole cluster, therefore during upgrade, it is only updated when the upgrade has completed.

    couchbaseclusters.status.groups

    Constraints

    Type: []string

    Description

    Groups describes all the groups managed by the cluster.

    couchbaseclusters.status.members

    Constraints

    Type: object

    Description

    Members are the Couchbase members in the cluster.

    couchbaseclusters.status.members.ready

    Constraints

    Type: []string

    Description

    Ready are the Couchbase members that are clustered and ready to serve client requests. The member names are the same as the Couchbase pod names.

    couchbaseclusters.status.members.unready

    Constraints

    Type: []string

    Description

    Unready are the Couchbase members not clustered or unready to serve client requests. The member names are the same as the Couchbase pod names.

    couchbaseclusters.status.size

    Constraints

    Required

    Type: integer

    Description

    Size is the current size of the cluster in terms of pods. Individual pod status conditions are listed in the members status.

    couchbaseclusters.status.users

    Constraints

    Type: []string

    Description

    Users describes all the users managed by the cluster.