MarkLogicCluster API
- Last Updated: July 13, 2026
- 4 minute read
- MarkLogic Server
- Documentation
The MarkLogicCluster API defines and configures options at the cluster level.
| Field | Type | Description | Default | Constraint | |
|---|---|---|---|---|---|
clusterDomain |
string |
Domain for the Kubernetes cluster | cluster.local |
||
image |
string |
Container Image for all MarkLogic Clusters | progressofficial/marklogic-db:12.0.3-ubi9-rootless-2.2.6 |
MaxLength: 256. If a dynamic group does not specify its own image, this tag must be latest or MarkLogic major version 12+ |
|
imagePullPolicy |
string |
Image pull policy for all MarkLogic Clusters | IfNotPresent |
||
imagePullSecrets |
[]corev1.LocalObjectReference |
Registry secret names as an array for all MarkLogic Clusters | [] | ||
auth |
AdminAuth |
Admin Auth for MarkLogic Cluster | |||
serviceAccountName |
string |
Name of the service account assigned to MarkLogic Pods | marklogic-workload |
Immutable after creation | |
automountServiceAccountToken |
bool |
Controls whether the service account token is mounted into MarkLogic Pods | false |
||
persistence |
Persistence |
Primary datadir persistence configuration for all MarkLogic Clusters | {enabled: true, size: "10Gi"} |
||
persistence.enabled |
bool |
Enables PVC-backed storage for the primary MarkLogic datadir | true |
||
persistence.size |
string |
Requested storage size for the primary data PVC. Increasing this value triggers resize reconciliation. | Pattern matching, for example 10Gi. Shrinking is not supported. |
||
persistence.resizeStrategy |
string |
Strategy for submitting PVC resize requests: parallel or sequential. Group-level values override cluster-level values. |
parallel |
Enum: parallel, sequential |
|
persistence.storageClassName |
string |
Storage class for the primary data PVC. Leave empty to use the default storage class. | |||
persistence.accessModes |
[]corev1.PersistentVolumeAccessMode |
Access modes requested for the primary data PVC | {ReadWriteOnce} |
||
persistence.annotations |
map[string]string |
Annotations applied to the primary data PVC | |||
resources |
corev1.ResourceRequirements |
CPU or memory request for all MarkLogic Clusters | |||
terminationGracePeriodSeconds |
int64 |
Seconds the MarkLogic Pod terminate gracefully | |||
updateStrategy |
appsv1.StatefulSetUpdateStrategyType |
Update strategy for MarkLogic pods | OnDelete |
Enum: OnDelete, RollingUpdate |
|
networkPolicy |
NetworkPolicy |
Network policy for all MarkLogic Clusters | |||
podSecurityContext |
corev1.PodSecurityContext |
Security context for pod running MarkLogic containers | |||
securityContext |
corev1.SecurityContext |
Security context for MarkLogic containers | |||
affinity |
corev1.Affinity |
Affinity for MarkLogic pods assignment across cluster | |||
nodeSelector |
map[string]string |
Node labels for MarkLogic pods assignment across cluster | |||
topologySpreadConstraints |
[]corev1.TopologySpreadConstraint |
POD Topology Spread Constraints to spread Pods across cluster | |||
priorityClassName |
string |
Name of a PriortyClass defined to set pod priority across cluster | |||
license |
License |
Set MarkLogic license Key and Licensee information | |||
enableConverters |
bool |
Parameter to Install converters for the client if they are not already installed | |||
hugePages |
HugePages |
Config Huge Pages across MarkLogic Cluster | {enabled: false, mountPath: /dev/hugepages} | ||
logCollection |
LogCollection |
Configure cluster wide log collection of MarkLogic server logs | |||
haproxy |
HAProxy |
Configure HAProxy Load Balancer for MarkLogic Server across cluster | |||
HAProxy |
enabled |
bool |
Enable the HAProxy load balancer for the cluster | false |
|
image |
string |
Container image for the HAProxy Pod | haproxytech/haproxy-alpine:3.4.0 |
||
imagePullSecrets |
[]corev1.LocalObjectReference |
Registry secret names for the HAProxy Pod image | |||
podSecurityContext |
*corev1.PodSecurityContext |
Pod security context for the HAProxy Pod | |||
securityContext |
*corev1.SecurityContext |
Container security context for the HAProxy container | |||
replicas |
int32 |
Number of HAProxy replicas to run | 1 |
||
frontendPort |
int32 |
Port exposed by HAProxy for the primary frontend listener | 80 |
||
appServers |
[]AppServers |
App server routing definitions exposed through HAProxy | |||
pathBasedRouting |
bool |
Enable path-based routing for app servers | false |
When enabled=true, path-based routing requires MarkLogic 11.1 or later |
|
service |
*corev1.ServiceType |
Kubernetes Service type used for HAProxy | |||
tcpPorts |
*Tcpports |
TCP port routing configuration for HAProxy | |||
timeout |
Timeout |
Client, connect, and server timeout settings for HAProxy | {client: 600, connect: 600, server: 600} |
||
tls |
TlsForHAProxy |
TLS configuration for HAProxy listeners | {enabled: false, secretName: "", certFileName: ""} |
||
stats |
Stats |
Expose the HAProxy stats page and configure its authentication | {enabled: false, port: 1024, auth: {enabled: false, username: "", password: ""}} |
||
resources |
corev1.ResourceRequirements |
Resource requests and limits for the HAProxy container | |||
affinity |
*corev1.Affinity |
Affinity rules for HAProxy Pods | |||
nodeSelector |
map[string]string |
Node selector for HAProxy Pods | |||
ingress |
Ingress |
Ingress resource configuration for exposing HAProxy | |||
AppServers |
name |
string |
Name of the app server route | ||
type |
string |
Routing type for the app server | |||
port |
int32 |
Frontend port exposed by HAProxy for this app server | |||
targetPort |
int32 |
Target port on the MarkLogic backend Service | |||
path |
string |
Path used for path-based routing | |||
Tcpports |
enabled |
bool |
Enable TCP port routing on HAProxy | false |
|
ports |
[]TcpPort |
TCP ports exposed through HAProxy | |||
TcpPort |
port |
int32 |
Frontend port exposed by HAProxy | ||
targetPort |
int32 |
Target port on the MarkLogic backend Service | |||
name |
string |
Name of the TCP route | |||
type |
string |
Routing type for the TCP route | |||
Timeout |
client |
int32 |
Timeout for client inactivity when the client is expected to send data | 600 |
|
connect |
int32 |
Timeout for establishing a TCP connection to a backend server | 600 |
||
server |
int32 |
Timeout for backend server inactivity when the server is expected to send data | 600 |
||
TlsForHAProxy |
enabled |
bool |
Enable TLS for HAProxy | false |
|
secretName |
string |
Name of the Secret that stores the HAProxy certificate | |||
certFileName |
string |
Name of the certificate file in the Secret | |||
Stats |
enabled |
bool |
Enable the HAProxy stats page | false |
|
port |
int32 |
Port exposed for the HAProxy stats page | 1024 |
||
auth |
StatsAuth |
Basic authentication configuration for the HAProxy stats page | |||
StatsAuth |
enabled |
bool |
Enable basic authentication for the HAProxy stats page | false |
|
username |
string |
Username for the HAProxy stats page | |||
password |
string |
Password for the HAProxy stats page | |||
Ingress |
enabled |
bool |
Enable an Ingress resource for HAProxy | false |
|
ingressClassName |
string |
Ingress class that implements the HAProxy Ingress resource | |||
labels |
map[string]string |
Additional labels for the HAProxy Ingress resource | |||
annotations |
map[string]string |
Additional annotations for the HAProxy Ingress resource | |||
host |
string |
Primary host name exposed by the HAProxy Ingress resource | |||
tls |
[]networkingv1.IngressTLS |
TLS configuration for the HAProxy Ingress resource | |||
additionalHosts |
[]networkingv1.IngressRule |
Additional host rules for the HAProxy Ingress resource | |||
tls |
Tls |
Configure TLS on the default app servers (8000, 8001, 8002) across the cluster | |||
additionalVolumes |
[]corev1.Volume |
List of additional volumes to add to the MarkLogic containers across cluster | Nil | ||
additionalVolumeMounts |
[]corev1.VolumeMount |
List of mount points for the additional volumes to add to the MarkLogic containers across cluster | Nil | ||
additionalVolumeClaimTemplates |
[]corev1.PersistentVolumeClaim |
List of additional PVC templates to add to MarkLogic Pods across the cluster | Nil | ||
markLogicGroups |
[]MarklogicGroups |
Configuration for specific MarkLogic Groups, each group is a statefulset | 1-100 items. Group name values and groupConfig.name values must be unique. Exactly one group must set isBootstrap=true |
MarkLogicCluster Status
The status field on the MarklogicCluster resource reports cluster-level reconciliation conditions.
| Field | Type | Description |
|---|---|---|
conditions |
[]metav1.Condition |
Standard Kubernetes conditions that report cluster reconciliation state |