在混合云中创建 Qdrant 集群

创建混合云环境后,您可以按照正常流程在该环境中创建 Qdrant 集群。此页面还包含有关如何创建生产就绪集群的更多信息。

请务必选择您的混合云环境作为目标。

Create Hybrid Cloud Cluster

请注意,在“Kubernetes 配置”部分,您可以额外配置

  • Qdrant 数据库 Pod 的节点选择器
  • Qdrant 数据库 Pod 的容忍度
  • Qdrant 数据库 Pod 的额外标签
  • Qdrant 数据库服务的服务类型和注解

这些设置在集群创建后也可以在集群详情页面进行更改。

Create Hybrid Cloud Cluster - Kubernetes Configuration

调度配置

创建或编辑集群时,您可以配置数据库 Pod 在您的 Kubernetes 集群中的调度方式。这对于确保 Qdrant 数据库在专用节点上运行可能很有用。您可以在集群创建期间的“Kubernetes 配置”部分或集群详情页面配置必要的节点选择器和容忍度。

认证您的 Qdrant 集群

在混合云中,认证信息由 Kubernetes secrets 提供。

您可以在 Qdrant 集群详情页面的“配置”部分配置您的 Qdrant 集群的认证。在那里您可以配置要用作 API 密钥和/或只读 API 密钥的 Kubernetes secret 名称和密钥。

Hybrid Cloud API Key configuration

创建 secret 的一种方法是使用 kubectl

kubectl create secret generic qdrant-api-key --from-literal=api-key=your-secret-api-key --namespace the-qdrant-namespace

生成的 secret 将如下所示

apiVersion: v1
data:
  api-key: ...
kind: Secret
metadata:
  name: qdrant-api-key
  namespace: the-qdrant-namespace
type: kubernetes.io/generic

使用此命令,secret 名称将是 qdrant-api-key,密钥将是 api-key

如果您想再次检索 secret,也可以使用 kubectl

kubectl get secret qdrant-api-key -o jsonpath="{.data.api-key}" --namespace the-qdrant-namespace | base64 --decode

配置 API 密钥 secret 后,您可以在 Qdrant 集群 UI 中创建具有精细访问控制的 JWT。有关更多详细信息,请参阅使用 JWT 进行精细访问控制文档。

观看视频

在本教程中,我们将引导您完成将运行在 Qdrant 混合云上的 Qdrant 数据库集群公开给您的 Kubernetes 集群外部的外部应用程序或用户的步骤。了解如何配置 TLS 证书以实现安全通信,设置认证,并探索不同的方法,如负载均衡器、ingress 和端口配置。

将 Qdrant 集群公开给您的客户端应用程序

您可以使用 Kubernetes 服务和 ingress 将您的 Qdrant 集群公开给您的客户端应用程序。默认情况下,为每个 Qdrant 集群创建一个 ClusterIP 服务。

在您的 Kubernetes 集群中,您可以使用服务名称和端口访问 Qdrant 集群

http://qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24.qdrant-namespace.svc:6333

此端点在集群详情页面上也可见。

如果您想从本地开发机器访问数据库,您可以使用 kubectl port-forward 将服务端口转发到您的本地机器

kubectl --namespace your-qdrant-namespace port-forward service/qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24 6333:6333

您还可以使用 LoadBalancer(如果您的 Kubernetes 环境支持)或 NodePort 服务或 ingress 将数据库公开到 Kubernetes 集群之外。

服务类型和必要的注解可以在集群创建期间的“Kubernetes 配置”部分或集群详情页面进行配置。

Hybrid Cloud API Key configuration

特别是如果您创建 LoadBalancer 服务,您可能需要为负载均衡器配置提供注解。请参阅您的云提供商的文档了解更多详细信息。

示例

您也可以像这样手动创建一个 Loadbalancer 服务

apiVersion: v1
kind: Service
metadata:
  name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24-lb
  namespace: qdrant-namespace
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 6333
  - name: grpc
    port: 6334
  selector:
    app: qdrant
    cluster-id: 9a9f48c7-bb90-4fb2-816f-418a46a74b24

一个 ingress 可以像这样

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24
  namespace: qdrant-namespace
spec:
    rules:
    - host: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24.your-domain.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24
              port:
                number: 6333

请参阅 Kubernetes、ingress 控制器和云提供商文档以获取更多详细信息。

如果您像这样公开数据库,您将能够看到它也作为端点反映在集群详情页面上。并且将看到 Qdrant 数据库仪表板链接指向它。

配置 TLS

如果您想为在混合云中访问您的 Qdrant 数据库配置 TLS,有两种选择

  • 您可以在 ingress 或负载均衡器级别卸载 TLS。
  • 您可以直接在 Qdrant 数据库中配置 TLS。

如果您想在 ingress 或负载均衡器级别卸载 TLS,请参阅其各自的文档。

如果您想直接在 Qdrant 数据库中配置 TLS,您可以在 Qdrant 集群详情页面的“配置”部分引用包含 TLS 证书和密钥的 secret。

Hybrid Cloud API Key configuration

要创建此类 secret,您可以使用 kubectl

 kubectl create secret tls qdrant-tls --cert=mydomain.com.crt --key=mydomain.com.key --namespace the-qdrant-namespace

生成的 secret 将如下所示

apiVersion: v1
data:
  tls.crt: ...
  tls.key: ...
kind: Secret
metadata:
  name: qdrant-tls
  namespace: the-qdrant-namespace
type: kubernetes.io/tls

使用此命令,要输入到 UI 中的 secret 名称将是 qdrant-tls,密钥将是 tls.crttls.key

配置 CPU 和内存资源预留

创建 Qdrant 数据库集群时,Qdrant Cloud 会调度具有特定 CPU 和内存请求和限制的 Pod,以确保最佳性能。它将使用相等的请求和限制以确保稳定性。理想情况下,Kubernetes 节点应与 Pod 大小匹配,每个 VM 一个数据库 Pod。

默认情况下,Qdrant Cloud 将为每个 Pod 预留 20% 的可用 CPU 和内存。这是为了给操作系统、Kubernetes 和系统组件留出空间。这种保守的默认值可能需要根据节点大小进行调整,其中较小的节点可能需要更多,较大的节点需要更少的预留资源。

您可以在 Qdrant 集群详情页面的“配置”部分修改此预留。

如果您想检查空 Kubernetes 节点上有多少可用资源,可以使用以下命令

kubectl describe node <node-name>

这将为您提供 Kubernetes 可用资源的详细分解,以及已为系统 Pod 预留和使用了多少资源。

此页面有用吗?

感谢您的反馈!🙏

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