您可以使用Kubernetes Operator 的MongoDB控制器将MongoDB Search 和 Vector Search 与MongoDB v8.0 或更高版本一起部署。
资源规范示例
以下示例显示了MongoDB Search 和 Vector Search部署的 spec对象内的设置。要学习;了解有关这些设置的更多信息,请参阅必需设置和可选设置。
例子
1 spec: 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资源的命名空间。要利用MongoDBSearch和MongoDB或MongoDBCommunity资源的自动配置,应在与MongoDB或MongoDBCommunity资源相同的命名空间中创建MongoDBSearch资源。
metadata.name类型:字符串
MongoDBSearch资源的唯一标识符。资源名称的最大长度可以为 44 个字符。
可选设置
本节介绍MongoDB搜索和向量搜索资源的可选设置。如果您省略可选设置并仅在 CRD 中定义必需的设置,则Kubernetes Operator 的MongoDB控制器将使用所有可选设置的默认值来配置 MongoDBSearch。
用于配置数据源的设置
spec.source类型:对象
描述
mongot的MongoDB源副本集的设置。在以下情况下,这是必需的:MongoDB是外部的MongoDB的名称不同于MongoDBSearch
MongoDBSearch资源必须始终连接到副本集。如果使用Kubernetes Operator 结合MongoDB或MongoDBCommunityCRD 部署副本集,并且spec.source为空,则Kubernetes Operator 使用基于metadata.name的以下内容在Kubernetes中查找数据库:在同一命名空间中查找与
MongoDBSearch中为metadata.name设立的名称相同的MongoDB或MongoDBCommunity资源。从
<MongoDBSearch.metadata.name>-search-sync-source-password密钥中查找mongot用户的密码。
spec.source.mongodbResourceRef.name类型:字符串
与此MongoDB搜索和向量搜索资源关联的
MongoDB或MongoDBCommunity资源的名称。不能有多个MongoDBSearch资源引用同一MongoDB或MongoDBCommunity资源。如果指定不同的名称,则必须明确点要启用MongoDB Search 和 Vector Search 的MongoDB或MongoDBCommunity。仅当您的
MongoDB或MongoDBCommunity资源部署在同一Kubernetes集群中并且与MongoDBSearch资源位于同一命名空间中时,才使用此字段。通过设置此字段, Kubernetes Operator 可以自动执行以下操作:为数据库设置正确的连接字符串。
通过设置必要的参数来重新配置MongoDB 数据库部署,以启用搜索功能并配置搜索Pod 的地址。
如果您的数据库部署在Kubernetes外部或位于不同的命名空间中,请使用
spec.external配置与数据库的连接。该字段与spec.external互斥。如果省略, Kubernetes Operator 将查找与此
MongoDBSearch资源同名的MongoDB或MongoDBCommunity资源。
用于配置mongot 用户的设置
spec.source.username类型:字符串
用于通过 对 进行身份验证的用户名。指定的用户必须具有 角色。如果省略, Kubernetes Operator
mongotmongodsearchCoordinator假定用户名名为search-sync-source。
spec.source.passwordSecretRef.name类型:字符串
包含密码的密钥名称,
mongot必须使用该密码与mongod进行身份验证。如果省略,则默认为<MongoDBSearch.metadata.name>-search-sync-source-password。
spec.source.passwordSecretRef.key类型:字符串
将密码值存储在密钥中所使用的密钥。如果省略,则默认为
password。
用于连接到外部MongoDB 的设置
只有在配置与外部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.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.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字符串
storageClass字符串
持久卷声明中指定的存储类型。您可以先将此存储类型创建为StorageClass对象,然后再用于此对象规范。
确保将StorageClass
reclaimPolicy设立为Retain。这可确保在删除持久卷声明时保留数据。MongoDBSearch仅支持single持久性字段。如果省略, Kubernetes Operator 会将spec.persistence.single.storage设置为10GB。
日志记录设置
spec.logLevel类型:字符串
mongot日志的详细程度。值可以是以下之一:TRACEDEBUGINFOWARNERROR
如果省略,则默认值为
INFO。
其他设置
spec.version类型:字符串
mongodb-searchDocker 映像的版本。如果省略, Kubernetes Operator 会自动选择最新版本的MongoDBSearch。您可以明确设立,以防止在Kubernetes Operator 版本升级时自动升级。
spec.statefulSetStatefulSet 规范,是为部署
mongotPod 而创建的,它会覆盖Kubernetes Operator 应用的设置。覆盖始终是最后应用的。支持spec.statefulSet.spec和spec.statefulSet.metadata字段。注意
请勿使用
spec.statefulSet来设立资源要求或持久性设置。请分别使用spec.resourceRequirements和spec.persistence字段。