MongoDBCommunity自定义资源允许您在Kubernetes中部署和管理MongoDB Community Edition副本集。 Kubernetes Operator 使用此资源创建运行MongoDB Community部署所需的 StatefulSet、服务和其他Kubernetes资源。
要学习;了解更多信息,请参阅MongoDB Community Operator 文档。
例子
以下示例显示了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类型:整型
mongod副本集成员的数量。这决定了Kubernetes Operator 在 StatefulSet 中创建的 Pod 数量。
可选的 MongoDBCommunity 资源设置
MongoDBCommunity自定义资源可以使用以下设置:
安全设置
spec.security类型:对象
MongoDBCommunity资源的安全配置。包含 TLS 和身份验证设置。
spec.security.tls类型:对象
MongoDB 部署的 TLS 设置。
spec.security.tls.enabled类型:布尔值
标记为MongoDB 部署启用或禁用 TLS。设置为
true可启用TLS 加密连接。
spec.security.tls.caConfigMapRef.name类型:字符串
Kubernetes ConfigMap 的名称,其中包含用于验证 TLS 连接的证书颁发机构 (CA) 证书。
spec.security.authentication类型:对象
MongoDB 部署的身份验证配置。
spec.security.authentication.modes类型:字符串数组
要在MongoDB 部署上启用的身份验证机制列表。接受的值包括:
SCRAM
spec.security.authentication.ignoreUnknownUsers类型:布尔值
如果为
true,则Kubernetes Operator 不会为MongoDB 部署中存在但未在MongoDBCommunity资源规范中定义的用户报告错误。默认值:
false
代理设置
spec.agent类型:对象
MongoDB 助手的配置设置。
spec.agent.logLevel类型:字符串
MongoDB 助手日志的详细程度。接受的值包括:
DEBUGINFOWARNERROR
StatefulSet 设置
spec.statefulSet.spec类型:对象
Kubernetes Operator 与生成的默认值合并的 StatefulSet 规范。遵循标准Kubernetes StatefulSet 规范。
spec.statefulSet.spec.template.spec.containers类型:对象数组
容器覆盖列表。您可以覆盖以下容器的资源请求和限制:
mongod— MongoDB 数据库容器。mongodb-agent— MongoDB 助手sidecar容器。
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[*].roles[*].name类型:字符串
要分配的角色名称。示例,
root、readWrite、readAnyDatabase或searchCoordinator。
spec.users[*].roles[*].db类型:字符串
应用角色的数据库。示例,
admin。
与 MongoDBSearch 集成
您可以使用MongoDBCommunity MongoDBSearchCRD 将MongoDB Search 和 Vector Search 与 资源一起部署。要启用搜索功能,请创建具有search-sync-source 角色的searchCoordinator 用户:
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 Operator 会自动创建 searchCoordinator自定义角色。