对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

MongoDB搜索和向量搜索设置

您可以使用Kubernetes Operator 的MongoDB控制器将MongoDB Search 和 Vector Search 与MongoDB v8.0 或更高版本一起部署。

以下示例显示了MongoDB Search 和 Vector Search部署的 spec对象内的设置。要学习;了解有关这些设置的更多信息,请参阅必需设置可选设置。

例子

1spec:
2 source:
3 mongodbResourceRef:
4 name: mdb
5 external:
6 hostAndPorts:
7 - mdb-rs-external-0.example.com:27017
8 - mdb-rs-external-1.example.com:27017
9 - mdb-rs-external-2.example.com:27017
10 keyfileSecretRef:
11 name: mdbc-rs-keyfile
12 key: keyfile
13 tls:
14 ca:
15 name: mdbc-rs-ca
16 username: search-sync-source
17 passwordSecretRef:
18 name: mdbc-rs-search-sync-source-password
19 key: password
20 security:
21 tls:
22 certificateKeySecretRef:
23 name: mdbs-tls-secret
24 resourceRequirements:
25 limits:
26 cpu: "3"
27 memory: 5Gi
28 requests:
29 cpu: "2"
30 memory: 3Gi
31 logLevel: INFO

本部分介绍部署MongoDB搜索和向量搜索资源所需的设置。如果您在自定义资源定义 (CRD) 中仅定义必需设置,则Kubernetes Operator 的MongoDB控制器将使用所有可选设置的默认值来配置 MongoDBSearch

apiVersion

类型:字符串

MongoDB Kubernetes资源模式的版本。将值设置为 mongodb.com/v1

kind

类型:字符串

要创建的 MongoDB Kubernetes 资源类型。 将其设置为MongoDBSearch

metadata.namespace

类型:字符串

应在其中创建 MongoDBSearch资源的命名空间。要利用 MongoDBSearchMongoDBMongoDBCommunity 资源的自动配置,应在与 MongoDBMongoDBCommunity资源相同的命名空间中创建 MongoDBSearch资源。

metadata.name

类型:字符串

MongoDBSearch资源的唯一标识符。资源名称的最大长度可以为 44 个字符。

本节介绍MongoDB搜索和向量搜索资源的可选设置。如果省略可选设置并在 CRD 中仅定义必需设置,则Kubernetes Operator 的MongoDB控制器将使用所有可选设置的默认值来配置 MongoDBSearch

spec.source

类型:对象

描述 mongot 的MongoDB源副本集的设置。在以下情况下,这是必需的:

  • MongoDB 是外部的

  • MongoDB 的名称不同于 MongoDBSearch

MongoDBSearch资源必须始终连接到副本集。如果使用带有 MongoDBMongoDBCommunity CRD 的Kubernetes Operator 部署副本集,并且 spec.source 为空,则Kubernetes Operator 使用基于 metadata.name 的以下内容在Kubernetes中查找数据库:

  • 在同一命名空间中查找与 MongoDBSearch 中为 metadata.name设立的名称相同的 MongoDBMongoDBCommunity 资源。

  • MongoDBSearch.metadata.name>-search-sync-source-password 密钥中查找 mongot 用户的密码。

spec.source.mongodbResourceRef.name

类型:字符串

与此MongoDB搜索和向量搜索资源关联的 MongoDBMongoDBCommunity资源的名称。不能有多个 MongoDBSearch资源引用同一 MongoDBMongoDBCommunity资源。如果指定不同的名称,则必须明确点要启用MongoDB Search 和 Vector Search 的 MongoDBMongoDBCommunity

仅当您的 MongoDBMongoDBCommunity资源部署在同一Kubernetes集群中并且与 MongoDBSearch资源位于同一命名空间中时,才使用此字段。通过设置此字段, Kubernetes Operator 可以自动执行以下操作:

  • 为数据库设置正确的连接字符串。

  • 通过设置必要的参数来重新配置MongoDB 数据库部署,以启用搜索功能并配置搜索Pod 的地址。

如果您的数据库部署在Kubernetes外部或位于不同的命名空间中,请使用 spec.external 配置与数据库的连接。该字段与 spec.external 互斥。

如果省略, Kubernetes Operator 将查找与此 MongoDBSearch资源同名的 MongoDBMongoDBCommunity资源。

spec.source.external

类型:对象

描述外部数据源的设置。此对象描述用于连接到外部MongoDB 的MongoDB Search 和 Vector Search资源的设置。仅当您要连接到未使用Kubernetes Operator 部署的外部MongoDB时,才应指定这些设置。如果指定,这些设置将覆盖 spec.source.mongodbResourceRef.name 的设置。如果您使用Kubernetes Operator 在同一集群中安装MongoDB ,则这些设置是可选的。

spec.source.external.hostAndPorts

类型:字符串数组

外部副本集的主机名和端口列表。这是MongoDB副本集的托管种子列表。mongot 以副本集模式连接数据库,并使用 db.hello() 获取所有其他节点的列表。

例子

hostAndPorts:
- mdbc-rs-0.my-external-domain.example.com:27017
- mdbc-rs-1.my-external-domain.example.com:27017
- mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.keyfileSecretRef

类型:对象

参考Kubernetes密钥,其中包含用于内部集群身份验证的密钥文件。

spec.source.external.keyfileSecretRef.name

类型:字符串

用于向 mongot 验证 mongod 身份的密钥文件名称。指定的密钥名称必须包含MongoDB副本集成员用于内部通信的相同密钥文件。

spec.source.external.keyfileSecretRef.key

类型:字符串

字符串形式的密钥文件内容。

提示

您可以在Cloud Manager或MongoDB Ops Manager实例的自动化配置的 auth.key字段中找到密钥文件。

spec.source.external.tls

类型:对象

mongot 连接到外部MongoDB 数据库时必须使用的 TLS 设置。

spec.source.external.tls.ca.name

类型:字符串

包含颁发 mongod 节点使用的 TLS 证书的证书颁发机构的可信链的密钥名称。

例子

spec:
source:
external:
tls:
ca:
name: trusted-ca

必须在此密钥的 ca.crt 密钥下指定证书(如果这是受信任的 CA 证书链,则为多个证书)。

例子

name: Secret
apiVersion: v1
metadata:
name: trusted-ca
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
[...]
U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi
qaV3JrVFHTgN
-----END CERTIFICATE-----
spec.source.username

类型:字符串

用于通过 mongodmongot 进行身份验证的用户名。指定的用户必须具有 searchCoordinator角色。如果省略, Kubernetes Operator 假定用户名名为 search-sync-source

spec.source.passwordSecretRef.name

类型:字符串

包含密码的密钥名称,mongot 必须使用该密码与 mongod 进行身份验证。如果省略,则默认为 <MongoDBSearch.metadata.name>-search-sync-source-password

spec.source.passwordSecretRef.key

类型:字符串

将密码值存储在密钥中所使用的密钥。如果省略,则默认为 password

spec.security

类型:对象

mongot 侦听服务器的安全设置。

spec.security.tls

类型:对象

TLS settings for mongot. If omitted, mongot won't use TLS for incoming connections.

spec.security.tls.certificateKeySecretRef.name

类型:字符串

同一命名空间中包含私钥 (tls.key) 和证书 (tls.crt) 的 TLS 密钥的名称。密钥的类型可以是 kubernetes.io/tls(由 cert-manager 颁发),也可以手动创建。这是在 mongot 中启用 TLS 的必要条件。

spec.resourceRequirements

类型:core/v1 /ResourceRequirements

mongodb-search容器可以请求和限制使用的 CPU 和内存。我们建议使用此字段自定义资源分配,而不是使用 spec.statefulSet 覆盖。

如果省略, Kubernetes Operator 将使用以下默认值:

requests:
cpu: 2
memory: 2G
spec.resourceRequirements.limits

类型:对象

mongodb-search容器可以消耗的资源、CPU 和内存的上限。默认下,没有设立限制。如果省略,则 Pod 不受限制,因此可能会使用节点上的所有资源。我们建议根据您的工作负载设置限制。

spec.resourceRequirements.requests

类型:对象

mongodb-search容器请求的 CPU 和内存量。如果省略, Kubernetes Operator 将使用以下默认值:

requests:
cpu: 2
memory: 2G
spec.logLevel

类型:字符串

mongot 日志的详细程度。值可以是以下之一:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

如果省略,则默认值为 INFO

spec.persistence.single

类型:对象

MongoDB Search 和 Vector Search 持久卷的存储配置,其中存储MongoDB Search 和 Vector Search 索引。每个搜索实例(pod) 都有自己独立的存储来维护索引,该存储不与MongoDB 数据库共享。只有索引元数据(定义)存储在数据库中。

标量
数据类型
说明

labelSelector

字符串

用于将已安装卷绑定到目录的标签

storage

字符串

应安装的持久卷的最小大小。此值以整数表示,后跟采用 JEDEC 表示法的存储单位。

默认值为 16Gi。

示例,如果副本集需要 60GB 的存储空间,请将此值设立为60Gi

storageClass

字符串

持久卷声明中指定的存储类型。您可以将此存储类型创建为 StorageClass 对象,然后再在此对象规范中使用。

Make sure to set the StorageClass reclaimPolicy to Retain. This ensures that data is retained when a Persistent Volume Claim is removed.

MongoDBSearch 仅支持 single 持久性字段。如果省略, Kubernetes Operator 会将 spec.persistence.single.storage 设置为 10GB

spec.version

类型:字符串

mongodb-search Docker 映像的版本。如果省略, Kubernetes Operator 会自动选择最新版本的 MongoDBSearch。您可以明确设立,以防止在Kubernetes Operator 版本升级时自动升级。

spec.statefulSet

类型:apps/v1 /StatefulSet

StatefulSet 规范,是为部署mongot Pod 而创建的,它会覆盖Kubernetes Operator 应用的设置。覆盖始终是最后应用的。支持spec.statefulSet.spec spec.statefulSet.metadata和 字段。

注意

请勿使用 spec.statefulSet 来设立资源要求或持久性设置。请分别使用 spec.resourceRequirementsspec.persistence 字段。