Kubernetes Operator 支持管理在运行TLS 和 X.509 内部集群身份验证的情况下运行的部署的数据库用户。
支持的身份验证机制
Kubernetes Operator 在其创建的部署中支持SCRAM、 LDAP、 OpenID Connect 和 X.509身份验证机制。在Kubernetes Operator 创建的部署中,您不能使用MongoDB Ops Manager执行以下操作:
为部署配置其他身份验证机制。
托管不使用 SCRAM、LDAP 或 X.509 身份验证的用户。
启用 X.509身份验证后,您可以使用MongoDB Ops Manager界面或CustomResourceDefinition添加 X.509 用户。
先决条件
在管理数据库用户之前,必须部署启用了 TLS 和 X.509 的副本集或分片集群。
如果您需要为 MongoDB 用户生成 X.509 证书,请参阅生成 X.509 客户端证书。
添加数据库用户
将kubectl 配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。
注意
MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:
将
context设置为操作符集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"。将
--namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如:kubectl config --namespace "mongodb"。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Copy the following example CustomResourceDefinition.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <resource-name> spec: username: <rfc2253-subject> db: "$external" mongodbResourceRef: name: '<MongoDB-Resource-name>' roles: - db: <database-name> name: <role-name> ...
打开您首选的文本编辑器,并将示例CustomResourceDefinition粘贴到新的文本文件中。
根据需要更改以下参数的行。
使用下表指导您更改MongoDB 用户资源规范中的相关行:
键 | 类型 | 说明 | 例子 | |||
|---|---|---|---|---|---|---|
| 字符串 | 数据库用户资源的名称。 资源名称必须少于或等于 44 个字符。 |
| |||
| 字符串 | 由Kubernetes CA (Kube CA) 签名的 x509客户端证书的主题行。 重要提示:用户名必须符合 RFC2253 LDAPv3 标识名标准。 要获取 X.509 证书的主题行,请运行以下命令: |
| |||
| 字符串 | 包含将添加用户的 MongoDB database 的项目的名称。 |
| |||
| 字符串 | 角色可以操作的数据库。 |
| |||
| 字符串 | 与此用户关联的MongoDB 资源的名称。 |
| |||
| 字符串 |
|
将用户的任何其他角色添加到 CustomResourceDefinition 。
您可以使用以下示例中定义的格式向此用户授予其他角色:
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: mms-user-1 spec: username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US project: my-project db: "$external" roles: - db: admin name: backup - db: admin name: restore ...
创建用户。
调用以下 Kubernetes 命令来创建数据库用户:
kubectl apply -f <database-user-conf>.yaml
当您创建新的MongoDB 数据库用户时, Kubernetes Operator 会自动创建新的Kubernetes 密钥。Kubernetes密钥包含有关新数据库用户的以下信息:
username:数据库用户的用户名password:数据库用户的密码connectionString.standard:标准连接string ,可以让您以此数据库用户的身份连接到数据库。connectionString.standardSrv: DNS 种子列表连接string ,可以让您以此数据库用户的身份连接到数据库。
注意
或者,您可以在MongoDB 用户资源规范中指定可选的spec.connectionStringSecretName字段,以指定 Kubernetes Operator 创建的连接字符串密钥的名称。
By default, both connection strings omit the database from the URI path, so the database that clients use depends on the client. To set the database in the URI path, specify the optional spec.connectionStringDatabase field.
You can use these credentials to Connect to a MongoDB Resource from Inside Kubernetes.
删除数据库用户
要删除数据库用户,请将metadata.name 从用户 ConfigMap 传递给 到以下命令:
kubectl delete mdbu <metadata.name>