New to KubeDB? Please start here.
Reconfigure Qdrant
This guide will show you how to use KubeDB Enterprise operator to reconfigure a Qdrant cluster.
Before You Begin
At first, you need to have a Kubernetes cluster, and the
kubectlcommand-line tool must be configured to communicate with your cluster.Install
KubeDBCommunity and Enterprise operator in your cluster following the steps here.You should be familiar with the following
KubeDBconcepts:
To keep everything isolated, we are going to use a separate namespace called demo throughout this tutorial.
$ kubectl create ns demo
namespace/demo created
Note: YAML files used in this tutorial are stored in docs/examples/qdrant/reconfigure directory of kubedb/docs repository.
Prepare Qdrant
Now, we are going to deploy a Qdrant cluster with an initial configuration.
Deploy Qdrant with custom config
Below is the YAML of the configuration Secret that we are going to create:
apiVersion: v1
stringData:
config.yaml: |
log_level: DEBUG
performance:
max_search_threads: 4
update_rate_limit: 100
kind: Secret
metadata:
name: qdrant-configuration
namespace: demo
type: Opaque
Let’s create the Secret we have shown above:
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/configuration-secret.yaml
secret/qdrant-configuration created
Below is the YAML of the Qdrant CR that we are going to create:
apiVersion: kubedb.com/v1alpha2
kind: Qdrant
metadata:
name: qdrant-sample
namespace: demo
spec:
version: "1.17.0"
replicas: 3
configuration:
secretName: qdrant-configuration
storage:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
deletionPolicy: WipeOut
Let’s create the Qdrant CR we have shown above:
$ kubectl create -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/qdrant.yaml
qdrant.kubedb.com/qdrant-sample created
Now, wait until qdrant-sample has status Ready:
$ kubectl get qdrant -n demo
NAME VERSION STATUS AGE
qdrant-sample 1.17.0 Ready 3m42s
Reconfigure using new config secret
Now we will reconfigure this database to change max_search_threads to 8.
Below is the YAML of the new configuration Secret that we are going to create:
apiVersion: v1
stringData:
config.yaml: |
log_level: DEBUG
performance:
max_search_threads: 8
update_rate_limit: 100
kind: Secret
metadata:
name: new-qdrant-configuration
namespace: demo
type: Opaque
Let’s create the Secret we have shown above:
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/new-configuration-secret.yaml
secret/new-qdrant-configuration created
Create QdrantOpsRequest
Now, we will use this secret to replace the previous secret using a QdrantOpsRequest CR. Below is the YAML of the QdrantOpsRequest that we are going to create:
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-reconfigure-config
namespace: demo
spec:
type: Reconfigure
databaseRef:
name: qdrant-sample
configuration:
configSecret:
name: new-qdrant-configuration
timeout: 5m
apply: IfReady
Here,
spec.databaseRef.namespecifies that we are reconfiguringqdrant-sampledatabase.spec.typespecifies that we are performingReconfigureon our database.spec.configuration.configSecret.namespecifies the name of the new configuration secret.spec.timeoutspecifies the timeout for the operation (learn more here).spec.applyspecifies when to apply the operation (learn more here).
Let’s create the QdrantOpsRequest CR we have shown above:
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/reconfigure-using-secret.yaml
qdrantopsrequest.ops.kubedb.com/qdops-reconfigure-config created
Verify the new configuration is working
If everything goes well, KubeDB Enterprise operator will update the configuration.secretName of the Qdrant object.
Let’s wait for QdrantOpsRequest to be Successful:
$ kubectl get qdops -n demo
NAME TYPE STATUS AGE
qdops-reconfigure-config Reconfigure Successful 3m
Reconfigure using applyConfig
We can also reconfigure our existing secret by modifying configuration inline using applyConfig. Below is the YAML of the QdrantOpsRequest:
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-reconfigure-apply-config
namespace: demo
spec:
type: Reconfigure
databaseRef:
name: qdrant-sample
configuration:
applyConfig:
config.yaml: |
log_level: DEBUG
performance:
max_search_threads: 6
update_rate_limit: 100
Note: You can modify multiple fields of your current configuration using
applyConfig. If you don’t have any existing config secret,applyConfigwill create a new secret for you. If a config secret already exists,applyConfigwill merge the new configuration with the existing one.
Here,
spec.databaseRef.namespecifies that we are reconfiguringqdrant-sampledatabase.spec.typespecifies that we are performingReconfigureon our database.spec.configuration.applyConfigcontains the inline configuration to apply.
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/apply-config.yaml
qdrantopsrequest.ops.kubedb.com/qdops-reconfigure-apply-config created
Verify the new configuration is working
Let’s wait for QdrantOpsRequest to be Successful:
$ kubectl get qdops qdops-reconfigure-apply-config -n demo
NAME TYPE STATUS AGE
qdops-reconfigure-apply-config Reconfigure Successful 5m30s
Remove Custom Configuration
We can also remove existing custom config using QdrantOpsRequest. Set spec.configuration.removeCustomConfig: true to remove the existing custom configuration.
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-reconfigure-remove
namespace: demo
spec:
type: Reconfigure
databaseRef:
name: qdrant-sample
configuration:
removeCustomConfig: true
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.6.19/docs/examples/qdrant/reconfigure/remove-config.yaml
qdrantopsrequest.ops.kubedb.com/qdops-reconfigure-remove created
Let’s wait for QdrantOpsRequest to be Successful:
$ kubectl get qdops qdops-reconfigure-remove -n demo
NAME TYPE STATUS AGE
qdops-reconfigure-remove Reconfigure Successful 97s
After this, the Qdrant CR will no longer reference a configuration secret and the database will use its default configuration.
Next Steps
- Learn about backup and restore Qdrant using KubeStash.
- Detail concepts of Qdrant object.
- Want to hack on KubeDB? Check our contribution guidelines.
Cleaning up
To clean up the Kubernetes resources created by this tutorial, run:
$ kubectl delete qdrantopsrequest -n demo qdops-reconfigure-config qdops-reconfigure-apply-config qdops-reconfigure-remove
qdrantopsrequest.ops.kubedb.com "qdops-reconfigure-config" deleted
qdrantopsrequest.ops.kubedb.com "qdops-reconfigure-apply-config" deleted
qdrantopsrequest.ops.kubedb.com "qdops-reconfigure-remove" deleted
$ kubectl delete qdrant -n demo qdrant-sample
qdrant.kubedb.com "qdrant-sample" deleted
$ kubectl delete ns demo
namespace "demo" deleted































