MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs 菜单
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 tls:
11 ca:
12 name: mdbc-rs-ca
13 username: search-sync-source
14 passwordSecretRef:
15 name: mdbc-rs-search-sync-source-password
16 key: password
17 security:
18 tls:
19 certificateKeySecretRef:
20 name: mdbs-tls-secret
21 resourceRequirements:
22 limits:
23 cpu: "3"
24 memory: 5Gi
25 requests:
26 cpu: "2"
27 memory: 3Gi
28 logLevel: INFO
29 prometheus: {}

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

apiVersion

类型:字符串

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

kind

类型:字符串

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

metadata.namespace

类型:字符串

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

metadata.name

类型:字符串

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

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

spec.source

类型:对象

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

  • MongoDB 是外部的

  • MongoDB 与 MongoDBSearch 具有不同的名称

MongoDBSearch资源必须始终连接到副本集。如果使用Kubernetes Operator 结合MongoDBMongoDBCommunity CRD 部署副本集,并且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.username

类型:字符串

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

spec.source.passwordSecretRef.name

类型:字符串

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

spec.source.passwordSecretRef.key

类型:字符串

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

只有在配置与外部MongoDB副本集的连接时才需要以下设置。

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.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.security

类型:对象

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

spec.security.tls

类型:对象

TLS 设置。mongot如果省略,mongot 将不会对传入连接使用 TLS。

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.persistence.single

类型:对象

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

标量
数据类型
说明

labelSelector

字符串

storage

字符串

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

默认值为 16Gi。

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

storageClass

字符串

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

确保将StorageClass reclaimPolicy设立为Retain。这可确保在删除持久卷声明时保留数据。

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

spec.logLevel

类型:字符串

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

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

如果省略,则默认值为 INFO

spec.prometheus

类型:对象

这仅在 v1.6 及更高版本中可用。

启用Prometheus指标端点的配置。如果省略,则禁用 mongot 中的指标端点。要在默认端口 (9946) 上启用Prometheus指标端点,请在 spec.prometheus字段中指定一个空 {}对象。要更改端口,请在 spec.prometheus.port字段中设立。

spec.prometheus.port

类型:字符串

启用Prometheus指标端点的端口。默认下,在端口 9946 上启用 Prometheus指标端点。

spec.version

类型:字符串

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

spec.statefulSet

类型apps/v1/StatefulSet

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

注意

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

后退

CRD 日志轮换设置

在此页面上