Summary
The qdrant datafile backup actionset (qdrant-snapshot-br) hardcodes endpoint=http://... when connecting to the qdrant API to take collection snapshots. When TLS is enabled on the cluster (tls: true), qdrant only accepts HTTPS connections, causing the backup to fail with curl: (1) Received HTTP/0.9 when not allowed.
Trigger Path
- Create a qdrant cluster with
tls: true and issuer.name: KubeBlocks
- Trigger a
datafile backup via Backup resource
- Backup job fails immediately
Root Cause
addons/qdrant/actionset (deployed as ActionSet qdrant-snapshot-br) contains:
endpoint=http://${DP_DB_HOST}:6333
This is hardcoded HTTP. When TLS is enabled, qdrant rejects plain HTTP connections — curl receives an unexpected response (HTTP/0.9) from the TLS handshake.
Fix
The backup script needs to detect TLS and switch to HTTPS:
# Detect TLS: check if the TLS cert mount path has files
if [ -f "${TLS_MOUNT_PATH:-/qdrant/tls}/tls.crt" ]; then
endpoint=https://${DP_DB_HOST}:6333
CURL_TLS="-k" # or --cacert ${TLS_MOUNT_PATH}/ca.crt
else
endpoint=http://${DP_DB_HOST}:6333
CURL_TLS=""
fi
Or alternatively, inject TLS_ENABLED / TLS_MOUNT_PATH env vars into the backup action via the backup policy env section.
Workaround
Disable TLS on the cluster before taking backups, or use the qdrant cluster without TLS enabled.
Impact
All datafile backups (including scheduled backups via BackupSchedule) fail when TLS is enabled on the qdrant cluster.
Test Environment
- KubeBlocks v1.0 API
- qdrant 1.17.1, cluster topology, 3 replicas, TLS enabled (
issuer: KubeBlocks)
Summary
The qdrant
datafilebackup actionset (qdrant-snapshot-br) hardcodesendpoint=http://...when connecting to the qdrant API to take collection snapshots. When TLS is enabled on the cluster (tls: true), qdrant only accepts HTTPS connections, causing the backup to fail withcurl: (1) Received HTTP/0.9 when not allowed.Trigger Path
tls: trueandissuer.name: KubeBlocksdatafilebackup viaBackupresourceRoot Cause
addons/qdrant/actionset(deployed as ActionSetqdrant-snapshot-br) contains:endpoint=http://${DP_DB_HOST}:6333This is hardcoded HTTP. When TLS is enabled, qdrant rejects plain HTTP connections — curl receives an unexpected response (
HTTP/0.9) from the TLS handshake.Fix
The backup script needs to detect TLS and switch to HTTPS:
Or alternatively, inject
TLS_ENABLED/TLS_MOUNT_PATHenv vars into the backup action via the backup policy env section.Workaround
Disable TLS on the cluster before taking backups, or use the qdrant cluster without TLS enabled.
Impact
All
datafilebackups (including scheduled backups viaBackupSchedule) fail when TLS is enabled on the qdrant cluster.Test Environment
issuer: KubeBlocks)