MongoDBCommunity 自定义资源允许您在 Kubernetes 中部署和管理 MongoDB Community Edition 副本集。Kubernetes 操作符使用此资源创建状态集、服务和运行 MongoDB Community 部署所需的其他 Kubernetes 资源。
要了解更多信息,请参阅MongoDB Community 操作符 文档。
例子
以下示例显示了MongoDBCommunity自定义资源的资源规范:
1 apiVersion: mongodbcommunity.mongodb.com/v1 2 kind: MongoDBCommunity 3 metadata: 4 name: my-mongodb-community 5 spec: 6 version: "8.0.0" 7 type: ReplicaSet 8 members: 3 9 security: 10 tls: 11 enabled: true 12 certificateKeySecretRef: 13 name: mongodb-tls-cert 14 caConfigMapRef: 15 name: mongodb-ca 16 authentication: 17 ignoreUnknownUsers: true 18 modes: 19 - SCRAM 20 agent: 21 logLevel: DEBUG 22 statefulSet: 23 spec: 24 template: 25 spec: 26 containers: 27 - name: mongod 28 resources: 29 limits: 30 cpu: "2" 31 memory: 2Gi 32 requests: 33 cpu: "1" 34 memory: 1Gi 35 - name: mongodb-agent 36 resources: 37 limits: 38 cpu: "1" 39 memory: 2Gi 40 requests: 41 cpu: "0.5" 42 memory: 1Gi 43 users: 44 - name: mdb-admin 45 db: admin 46 passwordSecretRef: 47 name: mdb-admin-user-password 48 scramCredentialsSecretName: mdb-admin-user 49 roles: 50 - name: root 51 db: admin
所需的 MongoDBCommunity 资源设置
本部分介绍必须用于所有MongoDBCommunity资源的设置。
apiVersion类型:字符串
MongoDB Kubernetes资源模式的版本。将值设置为
mongodbcommunity.mongodb.com/v1。
kind类型:字符串
要创建的 MongoDB Kubernetes 资源类型。 将其设置为
MongoDBCommunity。
metadata.name类型:字符串
人类可读的名称,以便您识别此特定的
MongoDBCommunity资源。资源名称必须少于或等于 44 个字符。
spec.version类型:字符串
要部署的 MongoDB Community 版本。示例,
"8.0.0"。
spec.type类型:字符串
要创建的 MongoDB 部署类型。接受的值为
ReplicaSet。
spec.members类型:整型
副本集节点的数量。这将决定 Kubernetes 操作符在StatefulSet中创建多少个
mongod节点。
可选的 MongoDBCommunity 资源设置
MongoDBCommunity自定义资源可以使用以下设置:
安全设置
spec.security类型:对象
MongoDBCommunity资源的安全配置。包含 TLS 和身份验证设置。
spec.security.tls类型:对象
MongoDB 部署的 TLS 设置。
spec.security.tls.enabled类型:布尔值
用于启用或禁用 MongoDB 部署的 TLS 的标志。设置为
true以启用 TLS 加密连接。
spec.security.tls.certificateKeySecretRef.name类型:字符串
Kubernetes secret 的名称,其中包含 MongoDB 部署的 TLS 服务器证书和私钥。
spec.security.tls.caConfigMapRef.name类型:字符串
包含用于验证 TLS 连接的证书授权机构 (CA) 证书的 Kubernetes ConfigMap 名称。
spec.security.authentication类型:对象
MongoDB 部署的身份验证配置。
spec.security.authentication.modes类型:字符串数组
要在 MongoDB 部署中启用的身份验证机制列表。接受的值包括:
SCRAM
spec.security.authentication.ignoreUnknownUsers类型:布尔值
如果
true,Kubernetes 操作符不会对存在于 MongoDB 部署但未在MongoDBCommunity资源规格中定义的用户报告错误。默认值:
false
代理设置
spec.agent类型:对象
MongoDB Agent 的配置设置。
spec.agent.logLevel类型:字符串
MongoDB Agent 日志的详细程度。可接受的值包括:
DEBUGINFOWARNERROR
StatefulSet 设置
spec.statefulSet类型:对象
Kubernetes 操作符 为
MongoDBCommunity资源创建的StatefulSet 规范。使用此重写默认容器资源请求和限制。
spec.statefulSet.spec类型:对象
StatefulSet规格,Kubernetes 操作符将其与生成的默认值合并。遵循标准 Kubernetes StatefulSet 规格。
spec.statefulSet.spec.template.spec.containers类型:对象数组
容器覆盖列表。您可以覆盖以下容器的资源请求和限制:
mongod— MongoDB 数据库容器。mongodb-agent— MongoDB Agent 侧车容器。
containers: - name: mongod resources: limits: cpu: "2" memory: 2Gi requests: cpu: "1" memory: 1Gi - name: mongodb-agent resources: limits: cpu: "1" memory: 2Gi requests: cpu: "0.5" memory: 1Gi
用户设置
spec.users类型:对象数组
要为此部署创建的 MongoDB 数据库用户列表。每个用户对象都定义数据库用户的凭证和角色。
spec.users[*].name类型:字符串
MongoDB 数据库用户的用户名。
spec.users[*].db类型:字符串
用户的身份验证数据库。默认
admin。
spec.users[*].passwordSecretRef.name类型:字符串
Kubernetes secret的名称,其中包含此数据库用户的密码。
spec.users[*].scramCredentialsSecretName类型:字符串
秘密的名称,Kubernetes 操作符在其中存储此用户的生成 SCRAM 凭证。
spec.users[*].roles类型:对象数组
要分配给此数据库用户的角色列表。
spec.users[*].roles[*].name类型:字符串
要分配的角色名称。例如,
root、readWrite、readAnyDatabase或searchCoordinator。
spec.users[*].roles[*].db类型:字符串
应用角色的数据库。示例,
admin。
与 MongoDBSearch 集成
您可以使用 MongoDBSearch CRD 将 MongoDB Search 和向量搜索与 MongoDBCommunity 资源一起部署。要启用搜索功能,请创建具有 searchCoordinator 角色的 search-sync-source 用户:
users: - name: search-sync-source db: admin passwordSecretRef: name: my-resource-search-sync-source-password scramCredentialsSecretName: my-resource-search-sync-source roles: - name: searchCoordinator db: admin
注意
对于 MongoDB 8.2 及更新版本,searchCoordinator 是一个内置角色。对于更早版本,Kubernetes 操作符 会自动创建 searchCoordinator 自定义角色。
要了解更多信息,请参阅部署 MongoDB Search 和向量搜索。