Docs 菜单
Docs 主页
/ /
/ / /

MongoDB搜索和向量搜索设置

您可以使用Kubernetes Operator 的MongoDB控制器将MongoDB Search 和 向量搜索 与MongoDB 8.2 或更高版本一起部署。

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

注意

此示例不是有效配置。它包含所有可用字段,这些字段填充了示例值以供参考。某些字段是互斥的(示例source.mongodbResourceRefsource.external)。有关有效组合,请参阅下面的字段说明。

例子

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 shardedCluster:
11 router:
12 hosts:
13 - mongos1.example.com:27017
14 - mongos2.example.com:27017
15 shards:
16 - shardName: shard-0
17 hosts:
18 - shard0-node1.example.com:27018
19 - shard0-node2.example.com:27018
20 - shardName: shard-1
21 hosts:
22 - shard1-node1.example.com:27018
23 - shard1-node2.example.com:27018
24 tls:
25 ca:
26 name: mdbc-rs-ca
27 username: search-sync-source
28 passwordSecretRef:
29 name: mdbc-rs-search-sync-source-password
30 key: password
31 # x509 authentication (mutually exclusive with
32 # username/passwordSecretRef)
33 x509:
34 clientCertificateSecretRef:
35 name: mongot-x509-client-cert
36 replicas: 2
37 loadBalancer:
38 # Option 1: Operator-managed Envoy load balancer
39 managed:
40 externalHostname: "search.apps.example.com"
41 resourceRequirements:
42 requests:
43 cpu: "100m"
44 memory: 128Mi
45 limits:
46 cpu: "500m"
47 memory: 512Mi
48 deployment:
49 spec:
50 template:
51 spec:
52 nodeSelector:
53 kubernetes.io/os: linux
54 # Option 2: User-provided (BYO) load balancer
55 # (mutually exclusive with managed)
56 unmanaged:
57 endpoint: "search-lb.corp.example.com:443"
58 security:
59 tls:
60 certificateKeySecretRef:
61 name: mdbs-tls-secret
62 certsSecretPrefix: my-prefix
63 resourceRequirements:
64 limits:
65 cpu: "3"
66 memory: 5Gi
67 requests:
68 cpu: "2"
69 memory: 3Gi
70 persistence:
71 single:
72 storage: 16Gi
73 storageClass: standard
74 version: "0.64.0"
75 statefulSet:
76 spec:
77 template:
78 spec:
79 nodeSelector:
80 kubernetes.io/os: linux
81 jvmFlags:
82 - -Xms2g
83 - -Xmx2g
84 autoEmbedding:
85 embeddingModelAPIKeySecret:
86 name: embedding-model-api-query-key
87 providerEndpoint: https://ai.mongodb.com/v1/embeddings
88 logLevel: INFO
89 prometheus: {}

本部分介绍部署MongoDB Search 和 Vector Search资源所需的设置。如果您在自定义资源定义 (CRD) 中仅定义必需设置,则 Kubernetes 操作符的 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 操作符的 MongoDB 控制器将使用所有可选设置的默认值来配置 MongoDBSearch。

spec.source

类型:对象

描述 mongot 的MongoDB源的设置。源可以是副本集或分片集群。在以下情况下需要此设置:

  • MongoDB 是外部的

  • MongoDB 与 MongoDBSearch 具有不同的名称

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

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

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

spec.source.mongodbResourceRef.name

类型:字符串

与此MongoDB搜索和向量搜索资源关联的 MongoDBMongoDBCommunity资源的名称。Kubernetes 操作符 同时支持副本集和分片的集群。不能有多个 MongoDBSearch资源引用同一 MongoDBMongoDBCommunity资源。如果指定其他名称,则必须明确点要启用MongoDB Search 和 向量搜索 的 MongoDBMongoDBCommunity

如果您引用分片集群MongoDB资源, Kubernetes Operator 会自动发现分片拓扑结构(分片名称、副本集成员、mongos 路由器)并自动创建每个分片的 mongot StatefulSet。您无需执行任何其他外部配置。

仅当您的 MongoDBMongoDBCommunity资源部署在同一Kubernetes集群中并且与 MongoDBSearch资源位于同一命名空间中时,才使用此字段。如果设立此字段, Kubernetes 操作符 会自动:

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

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

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

如果省略, Kubernetes 操作符 会查找与此 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

spec.source.x509

类型:对象

mongot同步源连接配置 x509客户端证书身份验证。如果设立此字段,则 mongot 使用 x509 而不是用户名和密码对MongoDB进行身份验证。

该字段与 spec.source.passwordSecretRefspec.source.username 互斥。如果您同时指定 x509 和 密码身份验证, Kubernetes 操作符 会拒绝配置。

spec.source.x509.clientCertificateSecretRef

类型:对象

包含 x509客户端证书和密钥的密钥,用于对MongoDB同步源进行身份验证。密钥必须包含以下键:

  • tls.crt — 客户端证书(必需)

  • tls.key — 私钥(必需)

  • tls.keyFilePassword — 私钥的密码(可选)

如果设立spec.source.x509,则必须指定此字段。

例子

spec:
source:
x509:
clientCertificateSecretRef:
name: mongot-x509-client-cert

只有在配置与外部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() 获取所有其他节点的列表。

此字段与 spec.source.external.shardedCluster 互斥。使用 hostAndPorts 作为副本集源,使用 shardedCluster 作为分片集群源。

例子

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 密钥下指定证书(或证书链)。

例子

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

只有在配置与外部MongoDB分片集群的连接时才需要以下设置。它们扩展了现有的 spec.source.external 设置。

注意

spec.source.external.hostAndPorts (对于副本集)和 spec.source.external.shardedCluster 是互斥的。仅指定其中之一。

spec.source.external.shardedCluster

类型:对象

声明外分片的MongoDB 集群作为 mongot 的数据源。包含 mongos 路由器和每分片副本集节点的配置。

仅当MongoDB分片集群部署在Kubernetes外部且不受Kubernetes Operator托管,才使用此选项。对于使用 MongoDB CRD 部署的操作符托管的集群,请改用 spec.source.mongodbResourceRef。Kubernetes Operator 自动发现分片拓扑结构。

例子

spec:
source:
external:
shardedCluster:
router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- shardName: "shard-1"
hosts:
- "shard1-node1.external:27018"
- "shard1-node2.external:27018"
spec.source.external.shardedCluster.router

类型:对象

外分片集群的 mongos(路由器)实例的配置。

spec.source.external.shardedCluster.router.hosts

类型:字符串数组

host:port 格式的 mongos 路由器实例的终结点列表。所有 mongot 实例都连接到这些路由器。至少指定一个条目。

例子

router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
spec.source.external.shardedCluster.shards

类型:对象数组

外部MongoDB 集群中所有分片的列表。每个条目描述一个分片的副本集。Kubernetes 操作符 为每个分片创建一个 mongot StatefulSet,其中每个 StatefulSet 包含 spec.replicas 中指定数量的 Pod。指定至少一个分片条目。

spec.source.external.shardedCluster.shards[*].shardName

类型:字符串

分片的逻辑名称。Kubernetes 操作符 使用此名称来命名Kubernetes资源(StatefulSet、Services、Secret)。该值可以与MongoDB分片名称不同。

命名约束:

  • 在所有分片中必须是唯一的。

  • 必须符合Kubernetes DNS 子域名规则 (RFC 1123),该规则允许使用小写字母数字字符、连字符 (-) 和句点 (.),并要求名称以字母字符开头并以字母数字字符。不允许使用下划线 (_)。

  • metadata.nameshardName 的总长度必须小于 50 个字符。

例子

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hosts

类型:字符串数组

此分片的 mongod副本集的终结点列表,采用 host:port 格式。mongot 实例从这些托管复制数据。至少指定一个条目。

每个副本集(分片)都有自己的 mongot 实例群组,这些实例仅从该副本集获取数据。不同的分片从不股票相同的 mongot 实例。

例子

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- "shard0-node3.external:27018"
spec.security

类型:对象

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

spec.security.tls

类型:对象

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

spec.security.tls.certificateKeySecretRef.name

类型:字符串

自版本 1.8.0 起已弃用:请改用 spec.security.tls.certsSecretPrefix

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

Kubernetes Operator 仍支持将此字段用于副本集部署,以实现向后兼容。但是:

  • 对于分片集群部署, Kubernetes 操作符 在验证期间拒绝此字段。请改用 spec.security.tls.certsSecretPrefix,因为单个密钥引用无法涵盖每个分片的证书。

  • 如果同时指定 certificateKeySecretRefcertsSecretPrefix,则 certificateKeySecretRef 优先进行副本集部署。

对于新部署,甚至对副本集使用 spec.security.tls.certsSecretPrefix

spec.security.tls.certsSecretPrefix

类型:字符串

Kubernetes Operator 用于按命名约定派生 TLS 密钥名称的前缀。如果设立此字段, Kubernetes 操作符 会遵循以下模式查找密钥,而不是要求为每个组件提供显式密钥引用:

组件
密钥名称模式

副本集的 mongot服务器证书

{certsSecretPrefix}-{name}-search-cert

分片 mongot 证书(每个分片)

{certsSecretPrefix}-{name}-search-0-{shardName}-cert

托管负载负载均衡器服务器证书

{certsSecretPrefix}-{name}-search-lb-0-cert

托管负载负载均衡器客户端证书

{certsSecretPrefix}-{name}-search-lb-0-client-cert

其中:

  • {name} 是 MongoDBSearch资源的 metadata.name

  • {shardName} 的值是 spec.source.external.shardedCluster.shards[*].shardName

如果省略,该字段默认为空字符串, Kubernetes 操作符 使用 spec.security.tls.certificateKeySecretRef 代替。

注意

对于分片集群部署,必须使用 certsSecretPrefix 而不是 certificateKeySecretRef。Kubernetes 操作符拒绝分片的拓扑结构 的 certificateKeySecretRef,因为单个密钥引用无法涵盖每个分片的证书。

例子

spec:
security:
tls:
certsSecretPrefix: my-prefix
spec.replicas

类型:整型

要部署的mongot Pod 数量。对于副本集源,这是 mongot Pod 的总数。对于分片集群源,这是每个分片的 mongot Pod 数量。

如果 spec.replicas 大于 1,则还必须配置 spec.loadBalancer,在 mongod 和多个 mongot 实例之间路由流量。

如果省略,则默认值为 1

例子

spec:
replicas: 2
spec.loadBalancer

类型:对象

mongod(或 mongos)和 mongot 之间实现 L7 负载平衡的配置。如果 spec.replicas 大于 1,则此字段为必填项。如果 spec.replicas1,则此字段为可选字段。您甚至可以为单个 mongot实例配置负载负载均衡器,为以后扩展做好准备。

必须设立managedunmanaged 之一。

负载负载均衡器会影响 mongod 客户端看到哪些 TLS 证书以及这些证书必须包含哪些主机名:

  • 如果没有负载负载均衡器mongod 会直接连接到 mongot。向 mongod 提供的 TLS 证书是 mongot 自己的证书。如果MongoDB 集群位于Kubernetes外部,则 mongot 服务将在外部域上公开。您必须在 mongot TLS 证书的 SAN(主题备用名称)字段中包含该外部域。

  • 对于托管负载负载均衡器(spec.loadBalancer.managed),Envoy 代理是唯一直接连接到 mongot 的组件。Envoy 使用内部无头服务 FQDN 访问 mongot 个 Pod:

    • 副本集: <pod>.<name>-search-svc.<ns>.svc.cluster.local

    • 分片集群: <pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local

    使用 SAN字段中的这些集群本地域颁发 mongot TLS 证书。您可以使用通配符证书来避免在 mongot Pod 数量发生变化时重新颁发证书。外部 mongod 进程可以看到 Envoy 代理的 TLS 证书,因此将外部域包含在 Envoy 证书的 SAN 中,而不是包含在 mongot 证书中。

提示

即使您最初部署单个 mongot Pod,也要启用托管负载负载均衡器。负载负载均衡器就位后,如果您稍后扩展spec.replicas,TLS 证书中的域将保持稳定,因为负载负载均衡器已经存在于 mongodmongot 之间。

spec.loadBalancer.managed

类型:对象

配置 Operator 托管的Envoy负载负载均衡器。Kubernetes 操作符 通过正确的路由、mTLS 和HTTP/2+gRPC流固定来部署和托管 Envoy 代理。将此字段设置为空对象({}) 以使用默认值。

此字段与 spec.loadBalancer.unmanaged 互斥。

例子

spec:
loadBalancer:
managed: {}
spec.loadBalancer.managed.externalHostname

类型:字符串

Envoy 代理期望用于传入请求的 SNI 匹配的主机名。Kubernetes Operator 使用此值来配置路由规则,以匹配传入 mongod 连接中的 TLS SNI字段。Envoy TLS服务器证书必须在其 SAN(主题备用名称)字段中包含此主机名。

对于分片的集群,该值必须包含Kubernetes 操作符 为每个分片扩展的 {shardName} 占位符。每个分片都有一个唯一的主机名,Envoy TLS服务器证书必须包含其 SAN 中的所有扩展分片主机名。您可以使用通配符证书,用单个证书涵盖所有分片,避免在添加分片时重新颁发证书。

如果MongoDB由外部托管(不是由Kubernetes 操作符 部署),则此字段为必填项。如果MongoDB在同一集群中由 Operator 托管,则省略此字段,因为Kubernetes Operator 会自动配置路由。

例子

# Replica set with external MongoDB
spec:
loadBalancer:
managed:
externalHostname: "search.apps.example.com"
# Sharded cluster with external MongoDB
spec:
loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
spec.loadBalancer.managed.resourceRequirements

类型core/v1/ResourceRequirements

Envoy容器可以请求和限制的 CPU 和内存。如果指定此设置, Kubernetes 操作符 会完全替换默认值。

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

requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi

例子

spec:
loadBalancer:
managed:
resourceRequirements:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1"
memory: "1Gi"
spec.loadBalancer.managed.deployment

类型:对象

覆盖 Kubernetes Operator 合并到 Operator 创建的 Envoy 部署中的操作符。遵循与MongoDB资源上的 spec.statefulSet 相同的约定。如果省略, Kubernetes 操作符 将使用 Envoy 部署的默认值。

该对象包含两个字段:

  • metadata — 包含 Kubernetes 操作符合并到 Envoy 部署元数据中的 labelsannotations 字段。

  • specapps/v1/DeploymentSpec对象。Kubernetes 操作符 将这些覆盖合并到 Envoy 部署规范中。

例子

spec:
loadBalancer:
managed:
deployment:
spec:
template:
spec:
nodeSelector:
kubernetes.io/os: linux
spec.loadBalancer.unmanaged

类型:对象

配置用户提供的(自带)L7 负载负载均衡器。您负责在外部部署和配置负载负载均衡器。

此字段与 spec.loadBalancer.managed 互斥。

spec.loadBalancer.unmanaged.endpoint

类型:字符串

BYO 负载负载均衡器的终结点,采用 host:port 格式。Kubernetes 操作符 会将该值作为 mongotHostsearchIndexManagementHostAndPort 写入 mongod 配置。

仅当Kubernetes 操作符 托管 MongoDB 部署(使用 spec.source.mongodbResourceRef)时,才需要此字段,因为Kubernetes 操作符 需要终结点来配置 mongod 参数。如果负载负载均衡器和MongoDB都是外部的(不是由Kubernetes Operator托管),则不需要此字段,因为您自己配置了 mongod 参数。

对于分片的集群,该值必须包含Kubernetes 操作符 为每个分片扩展的 {shardName} 占位符。

例子

# Replica set example
spec:
loadBalancer:
unmanaged:
endpoint: "search-lb.corp.example.com:443"
# Sharded cluster example
spec:
loadBalancer:
unmanaged:
endpoint: "{shardName}-lb.corp.example.com:443"
spec.resourceRequirements

类型core/v1/ResourceRequirements

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

如果您没有覆盖 spec.jvmFlags 中的Java虚拟机(JVM)堆大小, Kubernetes 操作符 会将默认堆大小 (-Xmx) 设置为 mongot Pod 可用内存的 50%。相应地调整 spec.resourceRequirements 以控制 Pod 资源和Java虚拟机(JVM)堆大小。

如果省略, 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 操作符 会将 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 指标终结点。

重要

自动嵌入仅作为MongoDB Community Edition部署的预览功能提供。在预览期间,功能和相应的文档可能随时更改。要学习;了解更多信息,请参阅预览功能。

spec.autoEmbedding

类型:对象

集合中文本数据自动嵌入的配置。

spec.autoEmbedding.embeddingModelAPIKeySecret

类型:对象

嵌入模型提供商API密钥的配置。要启用自动嵌入,您必须创建两个键,一个用于在索引时为集合中的数据生成嵌入,另一个用于在查询时为查询文本生成嵌入。如果您还没有密钥,我们建议您从两个Atlas项目创建密钥。要学习;了解有关从Atlas用户界面为Atlas项目创建密钥的更多信息,请参阅管理API密钥。

spec.autoEmbedding.embeddingModelAPIKeySecret.name

类型:字符串

包含嵌入模型API密钥的密钥名称,mongot 必须使用该密钥在索引时和查询时生成嵌入。

spec.autoEmbedding.providerEndpoint

类型:字符串

用于生成嵌入的嵌入模型终结点URL。值会有所不同,具体取决于您是从Atlas用户界面创建密钥(推荐)还是直接从嵌入服务创建密钥 (Voyage AI)。对于通过以下方式创建的密钥:

  • Atlas用户界面,值为 https://ai.mongodb.com/v1/embeddings(默认)

  • Voyage AI,值为 https://api.voyageai.com/v1/embeddings

spec.jvmFlags

类型:字符串数组

传递给 mongot进程的Java虚拟机(JVM)标志。Kubernetes Operator 使用 --jvm-flags "<all flags space-separated>"mongot初创企业命令中包含未经修改的标志。

如果您未在此字段中指定 -Xms-Xmx, Kubernetes 操作符 会自动计算堆大小,将两者设置为 spec.resourceRequirements.requests.memory 的一半。如果您不指定资源要求, Kubernetes Operator 会使用默认4Gi 内存请求,产生大约 -Xmx2048m -Xms2048m

如果您提供自己的 -Xms-Xmx 值, Kubernetes 操作符 将使用它们并且不会覆盖这些值。Kubernetes Operator 始终将您提供的标志附加在 Operator 计算的标志之后。

要学习;了解更多信息,请参阅mongot的硬件大小调整

例子

spec:
jvmFlags:
- -Xms2g
- -Xmx2g
spec.version

类型:字符串

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

spec.statefulSet

类型apps/v1/StatefulSet

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

注意

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

Kubernetes 操作符 在 MongoDBSearch资源的 status字段下报告状态信息。

status.loadBalancer

类型:对象

操作符托管的负载均衡器(Envoy) 的状态。此字段仅在设立spec.loadBalancer.managed 时出现。

status.loadBalancer.phase

类型:字符串

托管负载负载均衡器的当前阶段。可能的值包括 PendingRunningFailed。Kubernetes 操作符 独立于主 status.phase 报告此阶段,因此您可以单独监控Envoy部署。

此字段也显示在 LOADBALANCER 列下的 kubectl get 输出中。

例子

$ kubectl get mdbs
NAME PHASE VERSION LOADBALANCER AGE
mdb-rs-ext-lb-search Running 0.64.0 Running 14m

后退

CRD 日志轮换设置