管理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-idcustomer-id 标签是必需的。

还有更多的配置选项可用于配置调度、安全性、网络等。详情请参阅Qdrant 私有云 API 参考

扩展集群

要扩展集群,请在QdrantCluster规范中更新CPU、内存和存储资源。Qdrant操作员将自动调整集群配置。此操作在具有复制集合的多节点集群上是高度可用的。

升级Qdrant版本

要升级数据库集群的Qdrant版本,请更新QdrantCluster规范中的version字段。Qdrant操作员将自动将集群升级到新版本。升级过程在具有复制集合的多节点集群上是高度可用的。

请注意,升级时不应跳过次要版本。例如,如果您正在运行版本 v1.11.3,您可以升级到 v1.11.4v1.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
这个页面有用吗?

感谢您的反馈!🙏

我们很抱歉听到这个消息。😔 你可以在GitHub上编辑这个页面,或者创建一个GitHub问题。