管理Qdrant集群
最基本的 QdrantCluster 配置是:
apiVersion: qdrant.io/v1
kind: QdrantCluster
metadata:
name: qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840
labels:
cluster-id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
customer-id: "acme-industries"
spec:
id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
version: "v1.11.3"
size: 1
resources:
cpu: 100m
memory: "1Gi"
storage: "2Gi"
id 应该在相同命名空间中的所有 Qdrant 集群中是唯一的,name 必须遵循上述模式,并且 cluster-id 和 customer-id 标签是必需的。
还有更多的配置选项可用于配置调度、安全性、网络等。详情请参阅Qdrant 私有云 API 参考。
扩展集群
要扩展集群,请在QdrantCluster规范中更新CPU、内存和存储资源。Qdrant操作员将自动调整集群配置。此操作在具有复制集合的多节点集群上是高度可用的。
升级Qdrant版本
要升级数据库集群的Qdrant版本,请更新QdrantCluster规范中的version字段。Qdrant操作员将自动将集群升级到新版本。升级过程在具有复制集合的多节点集群上是高度可用的。
请注意,升级时不应跳过次要版本。例如,如果您正在运行版本 v1.11.3,您可以升级到 v1.11.4 或 v1.12.2,但不能直接升级到 v1.13.0。
暴露集群
默认情况下,QdrantCluster将通过内部的ClusterIP服务暴露。要将集群暴露给外部世界,您可以创建一个NodePort服务、一个LoadBalancer服务或一个Ingress资源。
这是一个关于如何使用LoadBalancer服务创建QdrantCluster的示例:
apiVersion: qdrant.io/v1
kind: QdrantCluster
metadata:
name: qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840
labels:
cluster-id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
customer-id: "acme-industries"
spec:
id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
version: "v1.11.3"
size: 1
resources:
cpu: 100m
memory: "1Gi"
storage: "2Gi"
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
特别是如果您创建了一个LoadBalancer服务,您可能需要为负载均衡器配置提供注释。请参阅您的云提供商的文档以获取更多详细信息。
示例:
认证与授权
认证信息由Kubernetes secrets提供。
创建密钥的一种方法是使用 kubectl:
kubectl create secret generic qdrant-api-key --from-literal=api-key=your-secret-api-key --from-literal=read-only-api-key=your-secret-read-only-api-key --namespace qdrant-private-cloud
生成的密钥将如下所示:
apiVersion: v1
data:
api-key: ...
read-only-api-key: ...
kind: Secret
metadata:
name: qdrant-api-key
namespace: qdrant-private-cloud
type: kubernetes.io/generic
您可以在QdrantCluster规范中引用密钥:
apiVersion: qdrant.io/v1
kind: QdrantCluster
metadata:
name: qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840
labels:
cluster-id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
customer-id: "acme-industries"
spec:
id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
version: "v1.11.3"
size: 1
resources:
cpu: 100m
memory: "1Gi"
storage: "2Gi"
config:
service:
api_key:
secretKeyRef:
name: qdrant-api-key
key: api-key
read_only_api_key:
secretKeyRef:
name: qdrant-api-key
key: read-only-api-key
jwt_rbac: true
如果您设置了jwt_rbac标志,您还将能够创建细粒度的JWT令牌用于基于角色的访问控制。
配置TLS
如果你想为访问你的Qdrant数据库配置TLS,有两种选择:
- 您可以在入口或负载均衡器级别卸载TLS。
- 您可以直接在Qdrant数据库中配置TLS。
如果你想直接在Qdrant数据库中配置TLS,你可以将其作为一个秘密提供。
要创建这样的秘密,你可以使用 kubectl:
kubectl create secret tls qdrant-tls --cert=mydomain.com.crt --key=mydomain.com.key --namespace the-qdrant-namespace
生成的密钥将如下所示:
apiVersion: v1
data:
tls.crt: ...
tls.key: ...
kind: Secret
metadata:
name: qdrant-tls
namespace: the-qdrant-namespace
type: kubernetes.io/tls
您可以在QdrantCluster规范中引用密钥:
apiVersion: qdrant.io/v1
kind: QdrantCluster
metadata:
name: test-cluster
spec:
id: "a7d8d973-0cc5-42de-8d7b-c29d14d24840"
version: "v1.11.3"
size: 1
resources:
cpu: 100m
memory: "1Gi"
storage: "2Gi"
config:
service:
enable_tls: true
tls:
cert:
secretKeyRef:
name: qdrant-tls
key: tls.crt
key:
secretKeyRef:
name: qdrant-tls
key: tls.key
