Docs Menu
Docs Home
/
Atlas Open Service Broker

Gestionar usuarios de base de datos

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.

Antes de administrar los usuarios de la base de datos, debe implementar una conjunto de réplicas.

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.

1
  1. 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>
  2. Abra su editor de texto preferido y pegue la definición del recurso en un nuevo archivo de texto.

2

Las configuraciones resaltadas son necesarias para crear un usuario de base de datos:

Clave
Descripción
Ejemplo

metadata.name

El nombre del recurso de enlace de servicio en Kubernetes.

atlas-user-1

metadata.namespace

El espacio de nombres de Kubernetes donde se crea el recurso de enlace de servicio.

atlas

spec.intanceRef.name

El nombre del recurso ServiceInstance en Kubernetes que corresponde a su clúster Atlas.

my-atlas-cluster

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-SHA authentication on the admin database

  • readWriteAnyDatabase permissions on the admin database

3

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:

  • databaseName

  • groupId

  • password

  • username

Ejemplo

Esta definición de recurso de ejemplo crea:

  1. un recurso de Kubernetes llamado atlas-user-1 en el espacio de nombres atlas y

  2. Un usuario de base de datos Atlas con la siguiente configuración:

    • SCRAM-SHA authentication on the admin database with randomly generated username and password

    • readWrite permisos para la colección listingsAndReviews en la base de datos sample_airbnb

    • dbAdmin permissions to the sample_geospatial database

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
4
5

Invoque el siguiente comando de Kubernetes para crear su usuario de base de datos:

kubectl apply -f atlas-user-1.yaml
6

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
7

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.

  1. Pase metadata.name y metadata.namespace de atlas-user-1.yaml al 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
  2. Pase data.username del 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.password y data.uri para 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.

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.

En esta página