Docs 主页 → Atlas Open Service Broker
管理数据库用户
重要
Atlas Open Service Broker 已弃用。 使用 MongoDB Atlas 操作符 相反。
您可以通过 Atlas Open Service Broker 创建和删除 Atlas数据库用户。
先决条件
在管理数据库用户之前,必须先部署副本集。
添加数据库用户
要创建数据库用户,首先需要定义 ServiceBinding 资源 在 Kubernetes 中。然后,Atlas Open Service Broker 在 Atlas 中创建相应的数据库用户。
配置所需的设置。
创建数据库用户需要突出显示的设置:
键 | 说明 | 例子 |
---|---|---|
metadata.name | Kubernetes 中服务绑定资源的名称。 | atlas-user-1 |
metadata.namespace | Kubernetes 命名空间 创建服务绑定资源的位置。 | atlas |
spec.intanceRef.name | Kubernetes 中与 Atlas 集群相对应的 ServiceInstance 资源的名称。 | my-atlas-cluster |
创建数据库用户时,Atlas Open Service Broker 会为该用户随机生成 Atlas 用户名和密码。 服务目录会自动将用户的 Atlas 用户名、密码和连接 URI 存储在 Kubernetes 密钥中。
如果不指定其他设置,则创建的数据库用户具有以下默认属性:
SCRAM-SHA
在admin
数据库上进行身份验证readWriteAnyDatabase
admin
数据库的权限
为用户添加任何其他设置。
您可以在spec.parameters.user
键下为用户配置其他设置。 这些设置对应于“ 创建数据库用户 公共 API”方法的 请求正文参数 。
重要
以下API参数将被上一步中所需的 Atlas Open Service Broker 设置覆盖,因此不应指定这些参数:
databaseName
groupId
password
username
例子
此示例资源定义创建:
atlas
命名空间中名为atlas-user-1
的 Kubernetes 资源,以及具有以下配置的 Atlas 数据库用户:
SCRAM-SHA
使用随机生成的用户名和密码在admin
数据库上进行身份验证readWrite
对sample_airbnb
数据库上的listingsAndReviews
集合的权限dbAdmin
sample_geospatial
数据库的权限
apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: atlas-user-1 namespace: atlas spec: instanceRef: name: my-atlas-cluster parameters: user: roles: - databaseName: sample_airbnb collectionName: listingsAndReviews roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin
查看新用户的状态。
要查看 Kubernetes 集群中新用户的状态,请将metadata.name
从replica-set.yaml
传递到以下命令:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
用户的状态显示在Bindings
下。
例子
Bindings: NAME STATUS +---------------+--------+ atlas-user-1 Ready
要查看用户的详细视图,请将metadata.name
从atlas-user-1.yaml
传递到以下命令中:
svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>
该命令会返回用户的详细信息。
例子
Name: atlas-user-1 Namespace: atlas Status: Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC Secret: atlas-user-1 Instance: my-replica-set Parameters: user: roles: - collectionName: listingsAndReviews databaseName: sample_airbnb roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin Secret Data: password 44 bytes uri 58 bytes username 36 bytes
检索新用户的 Atlas 连接详细信息。
用户的连接详细信息存储在与ServiceBinding
资源具有相同名称和命名空间的密钥中。 该密钥由 Kubernetes 进行 base64 编码,包含用户的 Atlas 用户名、密码和 URI。
将
atlas-user-1.yaml
中的metadata.name
和metadata.namespace
传递到以下命令中,以检索用户的 Kubernetes 密钥:kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml 该命令返回用户的 base64 编码的 Atlas 密码、URI 和用户名:
例子
apiVersion: v1 data: password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0= uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA== username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3 kind: Secret metadata: creationTimestamp: "2019-08-26T01:46:30Z" name: atlas-user-1 namespace: atlas ownerReferences: - apiVersion: servicecatalog.k8s.io/v1beta1 blockOwnerDeletion: true controller: true kind: ServiceBinding name: atlas-user-1 uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457 resourceVersion: "79692" selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1 uid: 14829566-4859-4b47-97f6-d0a2f7425906 type: Opaque 将密钥中的
data.username
传递给以下命令,以解码用户的 Atlas 用户名:echo '<DATA.USERNAME>' | base64 --decode 此命令会返回解码后的 Atlas 用户名:
例子
52c35e67-c7a3-11e9-8d20-0374ac110007 使用
data.password
和data.uri
重复该命令,以解码用户的 Atlas 密码和 URI。echo '<DATA.PASSWORD>' | base64 --decode echo '<DATA.URI>' | base64 --decode
提示
连接到 Atlas 集群
要连接到您的部署,请将解码后的 Atlas URI 和用户名传递到以下命令中:
mongo <DECODED_URI> --username <DECODED_USERNAME>
当系统提示您输入密码时,输入已解码的用户 Atlas 密码。
删除数据库用户
要删除数据库用户,请将metadata.name
从ServiceBinding
资源传递给以下命令之一:
kubectl delete servicebindings <METADATA.NAME> \ -n <METADATA.NAMESPACE>
要确认用户已被删除,请将集群资源中的metadata.name
传递到以下命令中:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
该命令在 下返回No bindings defined
Bindings
。