You are looking at the documentation of a prior release. To read the documentation of the latest release, please visit here.

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 kubectl command-line tool must be configured to communicate with your cluster.

  • Install KubeDB Community and Enterprise operator in your cluster following the steps here.

  • You should be familiar with the following KubeDB concepts:

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.name specifies that we are reconfiguring qdrant-sample database.
  • spec.type specifies that we are performing Reconfigure on our database.
  • spec.configuration.configSecret.name specifies the name of the new configuration secret.
  • spec.timeout specifies the timeout for the operation (learn more here).
  • spec.apply specifies 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, applyConfig will create a new secret for you. If a config secret already exists, applyConfig will merge the new configuration with the existing one.

Here,

  • spec.databaseRef.name specifies that we are reconfiguring qdrant-sample database.
  • spec.type specifies that we are performing Reconfigure on our database.
  • spec.configuration.applyConfig contains 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

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