MarkLogicGroup API
- Last Updated: July 13, 2026
- 7 minute read
- MarkLogic Server
- Documentation
The MarkLogicGroup API defines and configures options at the group level. The configuration table below documents entries in MarklogicCluster.spec.markLogicGroups[]. The status sections document the operator-managed child MarklogicGroup resource.
| Custom Type | Field | Type | Description | Default | Constraint |
|---|---|---|---|---|---|
MarklogicGroups |
replicas |
int32 |
Desired number of MarkLogic nodes for this group. Updating this value scales hosts dynamically for the Operator-managed StatefulSet. | 1 | |
name |
string |
Name for the statefulSet | Required. Must be unique within markLogicGroups |
||
labels |
map[string]string |
Labels for the statefulSet | |||
annotations |
map[string]string |
Annotations for the statefulSet | |||
groupConfig |
GroupConfig |
MarkLogic Group Configuration for Group name and XDQP SSL | {name: "Default", enableXdqpSsl: true} |
||
image |
string |
Container Image for MarkLogic server for specific MarkLogic group | MaxLength: 256. If isDynamic=true and an image override is set, the tag must be latest or MarkLogic major version 12+ |
||
imagePullPolicy |
string |
Image pull policy for specific MarkLogic group | |||
imagePullSecrets |
[]corev1.LocalObjectReference |
Registry secret names as an array for specific MarkLogic group | |||
persistence |
Persistence |
Persistence for MarkLogic group | |||
service |
Service |
Service for MarkLogic Group | |||
resources |
*corev1.ResourceRequirements |
CPU or memory request for specific | |||
affinity |
*corev1.Affinity |
Affinity for MarkLogic pods assignment in this group | |||
topologySpreadConstraints |
[]corev1.TopologySpreadConstraint |
POD Topology Spread Constraints to spread Pods for this group | |||
nodeSelector |
map[string]string |
Node labels for MarkLogic pods assignment in this group | |||
priorityClassName |
string |
Name of a Priority Class defined to set pod priority for this group | |||
hugePages |
HugePages |
Config Huge Pages on MarkLogic for this group | |||
livenessProbe |
ContainerProbe |
Configure liveness probe for MarkLogic containers in this group | {enabled: true, initialDelaySeconds: 30, timeoutSeconds: 5, periodSeconds: 30, successThreshold: 1, failureThreshold: 3} |
||
readinessProbe |
ContainerProbe |
Configure readiness probe for MarkLogic containers in this group | {enabled: true, initialDelaySeconds: 10, timeoutSeconds: 5, periodSeconds: 30, successThreshold: 1, failureThreshold: 3} |
||
logCollection |
LogCollection |
Configure log collection of MarkLogic server logs for this group | |||
haproxy |
HAProxyGroup |
Per-group HAProxy participation and routing overrides | |||
tls |
Tls |
Configure TLS on Default App Servers (8000, 8001, 8002) on this group | |||
additionalVolumes |
[]corev1.Volume |
List of additional volumes to add to the MarkLogic containers for this group | |||
additionalVolumeMounts |
[]corev1.VolumeMount |
List of mount points for the additional volumes to add to the MarkLogic containers for this group | |||
additionalVolumeClaimTemplates |
[]corev1.PersistentVolumeClaim |
List of additional PVC templates to add to MarkLogic Pods for this group | |||
isBootstrap |
bool |
Whether this group is the bootstrap node | false | Exactly one entry in markLogicGroups must set this to true |
|
isDynamic |
bool |
Declares this group as a dynamic (evaluator-only) group. Dynamic groups use token-based host join/remove and do not provision standard MarkLogic datadir persistence by default. Requires MarkLogic Server 12.0 or later and Operator 1.3. | false | Cannot be true when isBootstrap=true |
|
dynamic |
DynamicGroupConfig |
Dynamic-host-specific settings for this group | Defaults applied | Can only be set when isDynamic=true |
|
GroupConfig |
name |
string |
Group name for joining the MarkLogic cluster | Default |
|
enableXdqpSsl |
bool |
Enable SSL encryption for XDQP | true |
||
Persistence |
enabled |
bool |
Enable PVC-backed storage for the primary MarkLogic datadir | ||
size |
string |
Size of persistence request for the MarkLogic data volume. Increasing this value triggers automatic PVC expansion. See Extend the data volumes. | Pattern matching, for example 10Gi |
||
resizeStrategy |
string |
Strategy for submitting PVC resize requests. parallel patches all PVCs simultaneously. sequential patches PVCs one at a time. |
parallel |
Enum: parallel, sequential |
|
storageClassName |
string |
Storage class for the MarkLogic data volume. Leave empty to use the default storage class. | |||
accessModes |
[]corev1.PersistentVolumeAccessMode |
Access modes requested for the data PVC | {ReadWriteOnce} |
||
annotations |
map[string]string |
Annotations applied to the data PVC | |||
Service |
type |
corev1.ServiceType |
Default service type | ClusterIP |
|
additionalPorts |
[]corev1.ServicePort |
List of ports in addition to the defaults exposed at the service level | |||
annotations |
map[string]string |
Annotations for MarkLogic service | |||
HugePages |
enabled |
bool |
Parameter to enable Hugepages on MarkLogic | false |
|
mountPath |
string |
Mountpath for Hugepages | /dev/hugepages |
||
LogCollection |
enabled |
bool |
Parameter to enable cluster wide log collection of MarkLogic server logs | false |
|
image |
string |
Image repository and tag for fluent-bit container | fluent/fluent-bit:4.1.1 |
||
imagePullSecrets |
[]corev1.LocalObjectReference |
Image Pull Secrets for fluent-bit container | |||
securityContext |
*corev1.SecurityContext |
Security context for the fluent-bit container | |||
resources |
*corev1.ResourceRequirements |
The resource requirement for the fluent-bit container | {requests: {cpu: "100m", memory: "200Mi"}, limits: {cpu: "200m", memory: "500Mi"}} |
||
files |
LogFilesConfig |
Parameter to set which MarkLogic log to use when log collection is enabled | {errorLogs: true, accessLogs: true, requestLogs: true, crashLogs: true, auditLogs: true} |
||
outputs |
string |
Configure desired output for fluent-bit | |||
filters |
string |
Configure desired filters for fluent-bit, leave empty to use the defaults | |||
inputs |
string |
Configure desired inputs for fluent-bit, leave empty to use the defaults | |||
parsers |
string |
Configure desired parser for fluent-bit, leave empty to use the defaults | |||
LogFilesConfig |
errorLogs |
bool |
Parameter to enable collection of MarkLogic error logs when log collection is enabled | true |
|
accessLogs |
bool |
Parameter to enable collection of MarkLogic access logs when log collection is enabled | true |
||
requestLogs |
bool |
Parameter to enable collection of MarkLogic request logs when log collection is enabled | true |
||
crashLogs |
bool |
Parameter to enable collection of MarkLogic crash logs when log collection is enabled | true |
||
auditLogs |
bool |
Parameter to enable collection of MarkLogic audit logs when log collection is enabled | true |
||
ContainerProbe |
enabled |
bool |
Enable or disable the probe | ||
initialDelaySeconds |
int32 |
Seconds to wait before the first probe runs | Minimum: 0 |
||
timeoutSeconds |
int32 |
Probe timeout in seconds | Minimum: 0 |
||
periodSeconds |
int32 |
Interval between probe executions | Minimum: 0 |
||
successThreshold |
int32 |
Number of consecutive successes required for the probe to be considered successful | Minimum: 0 |
||
failureThreshold |
int32 |
Number of consecutive failures before the probe is considered failed | Minimum: 0 |
||
HAProxyGroup |
enabled |
bool |
Parameter to enable the HAProxy Load Balancer for MarkLogic Server | false |
|
appServers |
[]AppServers |
App Server Port and Path for HAProxy | |||
pathBasedRouting |
bool |
Parameter to enable path based routing on the HAProxy Load Balancer for MarkLogic | |||
tcpPorts |
Tcpports |
Configure TCP port routing on HAProxy | |||
Tcpports |
enabled |
bool |
Parameter to enable TCP port routing on HAProxy | false |
|
ports |
[]TcpPort |
TCP Ports and load balancing type configuration for HAproxy | |||
TcpPort |
port |
int32 |
Number for TCP Port | ||
targetPort |
int32 |
Target port on the MarkLogic Service | |||
name |
string |
Name for TCP Port | |||
type |
string |
Type for TCP Port | |||
AppServers |
name |
string |
Name for the App Server | ||
type |
string |
Type for the App Server | |||
port |
int32 |
Port Number for App Server | |||
targetPort |
int32 |
Target Port for App Server | |||
path |
string |
Path used for path based routing | |||
| Tls | enableOnDefaultAppServers |
bool |
Parameter to enable TLS on Default App Servers (8000, 8001, 8002) | false |
|
certSecretNames |
[]string |
Names of the secrets that contain the named certificate | |||
caSecretName |
string |
Name of the secret that contains the CA certificate | |||
DynamicGroupConfig |
tokenDuration |
string |
ISO 8601 duration used when requesting dynamic-host tokens | PT15M |
Must be an ISO 8601 duration and cannot be bare P or PT |
License |
key |
string |
Set the MarkLogic license key | ||
licensee |
string |
Set the MarkLogic licensee information |
MarklogicGroup Status
The child MarklogicGroup resource exposes group reconciliation state through its status fields.
| Field | Type | Description |
|---|---|---|
conditions |
[]metav1.Condition |
Standard Kubernetes conditions for group reconciliation |
stage |
string |
Legacy stage string for group progress |
active |
[]corev1.ObjectReference |
References to active MarkLogic Pods for the group |
markLogicGroupStatus |
InternalState |
Internal state of the group: Starting, Configuring, Ready, or Failed |
dynamic |
DynamicGroupStatus |
Dynamic-host lifecycle status for groups with isDynamic=true |
volumeResizeStatus |
VolumeResizeStatus |
Progress and outcome details for PVC resize operations |
MarklogicGroup Status: volumeResizeStatus
The status.volumeResizeStatus field on the MarklogicGroup resource tracks the progress of volume resize operations.
| Field | Type | Description |
|---|---|---|
operationID |
string |
Unique identifier for this resize operation |
observedGeneration |
int64 |
Generation observed when the active resize operation started |
phase |
string |
Current phase: Validating, ResizingPVCs, WaitingForPVCResize, SynchronizingStatefulSet, RestartingPods, WaitingForPodsReady, VerifyingResizeOutcome, Completed, Stalled, or Failed |
reason |
string |
Machine-readable reason code for the current phase |
message |
string |
Human-readable description of the current state |
currentSize |
string |
Size of PVCs before the resize |
targetSize |
string |
Requested new size |
deferredTargetSize |
string |
New requested size detected while the current operation is still active |
deferredObservedGeneration |
int64 |
Generation where the deferred target size was observed |
resizeStrategy |
string |
Strategy being used (parallel or sequential) |
totalPvcs |
int32 |
Total number of PVCs being resized |
pvcsCheckpointed |
int32 |
Number of PVCs that have completed the resize |
activePVC |
string |
Name of the PVC currently being resized in sequential mode |
pvcStatuses |
[]PVCResizeStatus |
Per-PVC progress, checkpoint, and restart requirement details |
failedPVCs |
[]FailedPVCStatus |
Per-PVC failure details when one or more PVCs fail |
markers |
[]string |
Internal crash-recovery workflow markers used by resize reconciliation |
warnings |
[]string |
Non-fatal issues observed during the operation |
retryCount |
int32 |
Number of retry attempts for the current operation |
nextRetryTime |
metav1.Time |
Timestamp for the next scheduled retry when the operation is stalled and retryable |
lastTransitionTime |
metav1.Time |
Timestamp when the phase last changed |
firstStartedTime |
metav1.Time |
Timestamp when the resize operation first started |
completionTime |
metav1.Time |
Timestamp when the resize operation completed |
MarklogicGroup Status: volumeResizeStatus.pvcStatuses
| Field | Type | Description |
|---|---|---|
name |
string |
Name of the PVC |
podName |
string |
Name of the Pod that owns the PVC |
requestedSize |
string |
Requested size for the PVC |
observedCapacity |
string |
Observed capacity reported for the PVC |
state |
string |
Current PVC resize state: Pending, ResizeSubmitted, WaitingForCheckpoint, Checkpointed, RestartPending, Restarted, or Failed |
checkpointType |
string |
Checkpoint reached by the PVC: OnlineComplete, OfflinePending, or OfflineComplete |
restartRequired |
bool |
Whether the owning Pod must be restarted to complete filesystem expansion |
lastReason |
string |
Most recent machine-readable reason for the PVC state |
lastMessage |
string |
Most recent human-readable message for the PVC state |
lastTransitionTime |
metav1.Time |
Timestamp when the PVC state last changed |
MarklogicGroup Status: volumeResizeStatus.failedPVCs
| Field | Type | Description |
|---|---|---|
name |
string |
Name of the PVC that failed |
reason |
string |
Machine-readable failure reason |
message |
string |
Human-readable failure details |
MarklogicGroup Status: dynamic
The status.dynamic field on the MarklogicGroup resource tracks dynamic-host lifecycle state.
| Field | Type | Description |
|---|---|---|
phase |
string |
Current dynamic-host lifecycle phase |
reason |
string |
Machine-readable reason for the current phase |
message |
string |
Human-readable description of the current dynamic-host state |
lastTransitionTime |
metav1.Time |
Timestamp when the dynamic status last changed phase |
bootstrapReady |
bool |
Whether the bootstrap host is ready to issue join or remove operations |
configured |
bool |
Whether the group has completed required dynamic-host configuration |
dynamicHostsEnabled |
bool |
Whether MarkLogic dynamic hosts are enabled for the group |
desiredReplicas |
int32 |
Desired dynamic host count |
localReadyReplicas |
int32 |
Number of locally ready Pods observed for the group |
readyReplicas |
int32 |
Number of dynamic hosts fully ready for service |
hosts |
[]DynamicHostStatus |
Per-host dynamic lifecycle status |
MarklogicGroup Status: dynamic.hosts
| Field | Type | Description |
|---|---|---|
podName |
string |
Name of the Pod backing this dynamic host |
hostname |
string |
Hostname registered for the dynamic host |
hostId |
string |
MarkLogic host ID for the dynamic host |
state |
string |
Current lifecycle state for the dynamic host |
message |
string |
Human-readable status message for the dynamic host |
attempts |
int32 |
Number of attempts made for the current host operation |
lastUpdated |
metav1.Time |
Timestamp when this host status was last updated |