Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

QdrantCluster

qdrantclusters.qdrant.io, short name qc, namespaced. One Helm release of the qdrant chart, named qdrant-<name>.

Spec

FieldDefaultDescription
versionrequiredQdrant version and chart version, v1.16.3 or 1.16.3
replicas1StatefulSet replicas. More than one requires cluster.enabled
image.repositorydocker.io/qdrant/qdrantThe tag always follows version
image.pullPolicyIfNotPresentAlways, IfNotPresent or Never
resources.requests, resources.limits{}cpu and memory
persistence.size10GiImmutable
persistence.storageClassNamecluster defaultImmutable
persistence.accessModes[ReadWriteOnce]
snapshotPersistence.enabledfalseSeparate volume for snapshots. Fixed at creation; a change fails the Helm upgrade
snapshotPersistence.size10Gi
snapshotPersistence.storageClassNamecluster default
cluster.enabledtrueDistributed mode
cluster.p2p.port6335
cluster.p2p.enableTlsfalseTLS on the inter-node port, reusing tls.secretRef
service.typeClusterIPClusterIP, NodePort or LoadBalancer
service.annotations{}
apiKey.secretRef.name, apiKey.secretRef.keyBring-your-own full-access key. Exclusive with autoGenerate
apiKey.autoGeneratefalseChart generates qdrant-<name>-apikey with key api-key
apiKey.jwtRbacfalseQdrant's service.jwt_rbac; needed by QdrantAccessKey. Requires secretRef or autoGenerate
readOnlyApiKeySame fields as apiKey; never used by the operator
tls.enabledfalseRequires tls.secretRef.name
tls.secretRef.namekubernetes.io/tls Secret; ca.crt in it verifies the operator's own calls
metrics.enabledfalseTogether with serviceMonitor.enabled renders a ServiceMonitor
metrics.serviceMonitor.enabledfalse
metrics.serviceMonitor.interval30sScrape interval
metrics.serviceMonitor.labels{}Added to the ServiceMonitor
nodeSelector, tolerations, affinityPod passthroughs
config{}Merged over the operator's entries into the chart's config, Qdrant's production.yaml

Admission rules: replicas > 1 needs cluster.enabled; persistence.size and persistence.storageClassName cannot change; apiKey and readOnlyApiKey take secretRef or autoGenerate, not both; apiKey.jwtRbac needs one of them; tls.enabled needs tls.secretRef.name.

Status

FieldMeaning
phasePending, Upgrading or Running
replicas, readyReplicasDesired count and the StatefulSet's ready count
versionspec.version as last applied
helmReleaseqdrant-<name>
endpointhttp(s)://qdrant-<name>.<namespace>.svc.cluster.local:6333
conditions[Progressing]HelmReleaseApplied after each apply, RolloutComplete once ready
conditions[Ready]AllReplicasReady or ReplicasNotReady, message n/m replicas ready
observedGenerationSpec generation the last apply reflects

Behavior

On create, spec update and operator start: helm upgrade --install qdrant-<name> qdrant --repo https://qdrant.github.io/qdrant-helm --version <version> --namespace <namespace> --create-namespace --values - with the values from Helm values the operator renders on stdin. The phase is Pending on a first install and Upgrading when the release existed. Every thirty seconds the StatefulSet qdrant-<name> is read and Running set once readyReplicas reaches replicas. On delete: helm uninstall --wait; PVCs are left behind.

Print columns: PHASE, REPLICAS, READY, VERSION, AGE.