Importante
Atlas Open Service Broker está obsoleto. Utilice el Operador Atlas de MongoDB en su lugar.
Puede crear y borrar usuarios de base de datos de Atlas a través del Atlas Open Service Broker.
Requisitos previos
Antes de administrar los usuarios de la base de datos, debe implementar una conjunto de réplicas.
Agregar un usuario de base de datos
Para crear un usuario de base de datos, primero se define un recurso ServiceBinding en Kubernetes. A continuación, Atlas Open Service Broker crea el usuario de base de datos correspondiente en Atlas.
Cree el enlace de servicio que corresponde al usuario Atlas.
Copie el siguiente ejemplo de definición de recurso.
Este es un YAML file that you can modify to meet your desired configuration.
apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: <USER_NAME> namespace: <NAMESPACE> spec: instanceRef: name: <CLUSTER_NAME> Abra su editor de texto preferido y pegue la definición del recurso en un nuevo archivo de texto.
Configure los ajustes necesarios.
Las configuraciones resaltadas son necesarias para crear un usuario de base de datos:
Clave | Descripción | Ejemplo |
|---|---|---|
| El nombre del recurso de enlace de servicio en Kubernetes. |
|
|
| |
| El nombre del recurso |
|
Al crear un usuario de base de datos, Atlas Open Service Broker genera aleatoriamente un nombre de usuario y una contraseña de Atlas para dicho usuario. El Catálogo de Servicios almacena automáticamente el nombre de usuario, la contraseña y la URI de conexión de Atlas del usuario en un secreto de Kubernetes.
Si no especifica configuraciones adicionales, el usuario de la base de datos se crea con los siguientes atributos predeterminados:
SCRAM-SHAauthentication on theadmindatabasereadWriteAnyDatabasepermissions on theadmindatabase
Agregue cualquier configuración adicional para el usuario.
Puede configurar ajustes adicionales para el usuario con la spec.parameters.user clave. Estos ajustes corresponden a los parámetros del cuerpo de la solicitud del método de la API pública "Crear un usuario de base de datos".
Importante
The following API parameters are overwritten by the required Atlas Open Service Broker settings from the previous step and should not be specified:
databaseNamegroupIdpasswordusername
Ejemplo
Esta definición de recurso de ejemplo crea:
un recurso de Kubernetes llamado
atlas-user-1en el espacio de nombresatlasyUn usuario de base de datos Atlas con la siguiente configuración:
SCRAM-SHAauthentication on theadmindatabase with randomly generated username and passwordreadWritepermisos para la colecciónlistingsAndReviewsen la base de datossample_airbnbdbAdminpermissions to thesample_geospatialdatabase
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
Ver el estado del nuevo usuario.
Para ver el estado del nuevo usuario dentro del clúster de Kubernetes, pase metadata.name de replica-set.yaml al siguiente comando:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
El estado del usuario aparece bajo Bindings.
Ejemplo
Bindings: NAME STATUS +---------------+--------+ atlas-user-1 Ready
Para ver una vista detallada del usuario, pase metadata.name de atlas-user-1.yaml al siguiente comando:
svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>
El comando devuelve los detalles del usuario.
Ejemplo
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
Recupera los detalles de conexión de Atlas del nuevo usuario.
Los detalles de conexión del usuario se almacenan en un secreto que tiene el mismo nombre y namespace que el recurso ServiceBinding. El secreto está codificado en base64 por Kubernetes y contiene el nombre de usuario de Atlas, la contraseña y el URI del usuario.
Pase
metadata.nameymetadata.namespacedeatlas-user-1.yamlal siguiente comando para recuperar el secreto de Kubernetes para el usuario:kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml El comando devuelve la contraseña de Atlas, el URI y el nombre de usuario codificados en base64del usuario:
Ejemplo
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 Pase
data.usernamedel secreto al siguiente comando para decodificar el nombre de usuario Atlas del usuario:echo '<DATA.USERNAME>' | base64 --decode El comando devuelve el nombre de usuario de Atlas decodificado:
Ejemplo
52c35e67-c7a3-11e9-8d20-0374ac110007 Repita el comando con
data.passwordydata.uripara decodificar la contraseña Atlas y el URI del usuario.echo '<DATA.PASSWORD>' | base64 --decode echo '<DATA.URI>' | base64 --decode
Tip
Conexión a su clúster Atlas
Para conectarte a tu implementación, introduce el URI de Atlas decodificado y el nombre de usuario en el siguiente comando:
mongo <DECODED_URI> --username <DECODED_USERNAME>
Cuando se le solicite la contraseña, ingrese la contraseña Atlas decodificada del usuario.
Eliminar un usuario de base de datos
Para eliminar un usuario de la base de datos, pase el metadata.name del recurso ServiceBinding a uno de los siguientes comandos:
kubectl delete servicebindings <METADATA.NAME> \ -n <METADATA.NAMESPACE>
Para confirmar que se ha eliminado el usuario, pase metadata.name del recurso del clúster al siguiente comando:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
El comando devuelve No bindings defined bajo Bindings.