Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

AtlasDatabaseUser Recurso personalizado

El AtlasDatabaseUser recurso personalizado configura el usuario de base de datos en un Proyecto de Atlas. Cree usuarios de base de datos por proyecto, no por clúster. Así que, la configuración de recursos personalizada de AtlasDatabaseUser contiene una referencia a la AtlasProject Recurso Personalizado. Crea el AtlasProject Recurso personalizado de antemano.

Importante

Recursos personalizados ya no borran objetos por defecto

  • Atlas Kubernetes Operator uses custom resource archivos de configuración to manage your Atlas configuration, but as of Atlas Kubernetes Operator 2.0, custom resources you borrar in Kubernetes are no longer (por defecto) borrados in Atlas. En su lugar, Atlas Kubernetes Operator simplemente deja de gestionar esos recursos en Atlas. Por ejemplo, si eliminas un AtlasProject Custom recurso en Kubernetes, de forma predeterminada, el Atlas Kubernetes Operator ya no elimina automáticamente el Proyecto correspondiente de Atlas. Este cambio de comportamiento está diseñado para ayudar a prevenir eliminaciones accidentales o inesperadas. Para saber más, incluido cómo revertir este comportamiento al por defecto utilizado antes de Atlas Kubernetes Operator 2.0, consulta Nuevo valor por defecto: Protección de Eliminación en Atlas Kubernetes Operator 2.0.

    De manera similar, Atlas Kubernetes Operator no elimina equipos de Atlas si los elimina de un proyecto Atlas en Kubernetes con Atlas Kubernetes Operator.

  • Define explícitamente los detalles de configuración que deseas para evitar el uso implícito de los valores de configuración por defecto de Atlas. En algunos casos, heredar los valores por defecto de Atlas puede crear un ciclo de conciliación que impida que el recurso personalizado alcance un estado de READY. Por ejemplo, definir explícitamente el comportamiento de escalado automático deseado en el recurso personalizado AtlasDeployment, como se muestra en el ejemplo incluido, garantiza que un tamaño de instancia estático en el recurso personalizado no se aplique repetidamente a una implementación de Atlas que tiene el escalado automático habilitado.

    autoScaling:
    diskGB:
    enabled: true
    compute:
    enabled: true
    scaleDownEnabled: true
    minInstanceSize: M30
    maxInstanceSize: M40

El siguiente ejemplo muestra una referencia al AtlasProject Custom recurso:

spec:
projectRef:
name: my-project

Atlas Kubernetes Operator asegura que la configuración del usuario de base de datos en Atlas coincida con la configuración en Kubernetes.

El operador de Atlas Kubernetes realiza una de las siguientes acciones utilizando Atlas Database Users API:

  • Crea un nuevo usuario de base de datos.

  • Actualiza un usuario existente.

Antes de crear un usuario de base de datos, debes crear una clave secretaoculta con un solo campo password para iniciar sesión en la base de datos del clúster Atlas

Nota

Debe crear el secreto en el mismo namespace donde se encuentra el recurso personalizado AtlasDatabaseUser.

El siguiente ejemplo crea un secreto:

kubectl create secret generic the-user-password --from-literal="password=P@@sword%"

El Atlas Kubernetes Operator supervisa los secretos solo con la etiqueta atlas.mongodb.com/type=credentials para evitar la supervisión de secretos innecesarios.

El siguiente ejemplo etiqueta un secreto:

kubectl label secret the-user-password atlas.mongodb.com/type=credentials

Después de que Atlas Kubernetes Operator cree o actualice correctamente el usuario de base de datos en Atlas, Atlas Kubernetes Operator crea o actualiza los secretos de conexión en el mismo namespace donde se encuentra el recurso personalizado AtlasDatabaseUser.

Los secretos de conexión contienen toda la información necesaria para conectar con los clústeres de Atlas, incluidos los siguientes parámetros:

Parameter
Descripción

connectionStringStandard

Conexión pública mongodb:// URI.

connectionstringStandardSrv

Conexión pública mongodb+srv:// URI.

username

Nombre que identifica al usuario de base de datos.

password

Contraseña del usuario de base de datos.

Las aplicaciones que se ejecutan en Kubernetes pueden utilizar esta información para conectarse a los clústeres de Atlas. Puedes montar los secretos en los pods de la aplicación como archivos, y el proceso de la aplicación puede leer estos archivos para obtener datos.

El siguiente ejemplo muestra cómo montar el secreto como una variable de entorno:

spec:
containers:
- name: test-app
env:
- name: "CONNECTIONSTRING"
valueFrom:
secretKeyRef:
name: project-cluster-basic-theuser
key: connectionStringStandardSrv

El siguiente ejemplo muestra cómo montar el secreto como archivos:

spec:
containers:
- name: test-app
volumeMounts:
- mountPath: /var/secrets/
name: theuser-connection
volumes:
- name: theuser-connection
secret:
secretName: project-cluster-basic-theuser

Por defecto, Atlas Kubernetes Operator crea el secreto de conexión a la base de datos del usuario para cada clúster en el mismo Proyecto al que hace referencia el AtlasDatabaseUser. Puedes cambiar este comportamiento con el parámetro spec.scopes. Este parámetro restringe los clústeres en los que se crea el usuario de base de datos. El nombre del secreto de conexión utiliza el siguiente formato: <project_name>-<cluster_name>-<db_user_name>.

El siguiente ejemplo muestra un proyecto Atlas y los clústeres que lo referencian:

apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
spec:
name: p1
projectIpAccessList:
- ipAddress: "192.0.2.15"
comment: "IP address for Application Server A"
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: my-aws-cluster
spec:
name: aws-cluster
projectRef:
name: my-project
providerSettings:
instanceSizeName: M10
providerName: AWS
regionName: US_EAST_1
apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: my-gcp-cluster
spec:
name: gcp-cluster
projectRef:
name: my-project
providerSettings:
instanceSizeName: M10
providerName: GCP
regionName: EASTERN_US

El siguiente ejemplo muestra una especificación de recurso personalizado AtlasDatabaseUser con spec.scopes omitido:

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
description: "User for the reporting application."
roles:
- roleName: readWriteAnyDatabase
databaseName: admin
projectRef:
name: my-project
username: theuser
passwordSecretRef:
name: the-user-password

Después de que crees este recurso personalizado, Atlas Kubernetes Operator crea los siguientes secretos:

  • p1-aws-cluster-theuser

  • p1-gcp-cluster-theuser

El siguiente ejemplo muestra una AtlasDatabaseUser especificación de recurso personalizada con spec.scopes configurados solo para el clúster de Google Cloud:

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project
username: theuser
passwordSecretRef:
name: the-user-password
scopes:
- type: CLUSTER
name: gcp-cluster

Después de que actualices este recurso personalizado, Atlas Kubernetes Operator remueve theuser de aws-cluster. También elimina el secreto p1-aws-cluster-theuser del clúster de Kubernetes.

El siguiente ejemplo muestra una especificación de recurso personalizado AtlasDatabaseUser con autenticación X.509.

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
username: CN=my-x509-authenticated-user,OU=organizationalunit,O=organization
databaseName: "\$external"
x509Type: "CUSTOMER"
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project

En el siguiente ejemplo se muestra una especificación de un recurso personalizado AtlasDatabaseUser con OIDC.

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project
username: my-oidc-group-id/my-idp-group-name
oidcAuthType: IDP_GROUP

El siguiente ejemplo muestra una especificación de recurso personalizado AtlasDatabaseUser con AWS IAM.

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
username: arn:aws:iam::123456789012:user/johndoe
databaseName: "$external"
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project
awsIamType: USER

AtlasDatabaseUser es el esquema para la API de usuario de base de datos Atlas

Name
Tipo
Descripción
Requerido

apiVersion

string

atlas.mongodb.com/v1

true

kind

string

AtlasDatabaseUser

true

metadata

Objeto

Consulte la documentación de Kubernetes API para conocer los campos del campo metadata.

true

spec

Objeto

AtlasDatabaseUserSpec define el estado objetivo del usuario de base de datos en Atlas Validaciones:

  • (has(self.``externalProjectRef``) && !has(self.``projectRef``)) || (!has(self.``externalProjectRef``) && has(self.``projectRef``)): debe definir solo una referencia de proyecto a través de externalProjectRef o projectRef

  • (tiene(self.``externalProjectRef``) && tiene(self.``connectionSecret``)) || !tiene(self.``externalProjectRef``): debe definir un secreto de conexión local cuando se referencia un proyecto externo

false

status

Objeto

AtlasDatabaseUserStatus define el estado observado de AtlasProject

false

AtlasDatabaseUserSpec define el estado de destino del usuario de la base de datos en Atlas

Name
Tipo
Descripción
Requerido

roles

[]objeto

Los roles son un arreglo de las roles de este usuario y de las bases de datos/colecciones en las que se aplican los roles. Un rol permite al usuario realizar acciones particulares en la base de datos especificada.

true

username

string

El nombre de usuario es un username para autenticarse en MongoDB. Etiqueta legible por humanos que representa al usuario que se autentica en MongoDB. El formato de esta etiqueta depende del método de autenticación: En caso AWS IAM de: el valor debe ser AWS ARN para el IAM Usuario/Rol; En caso de OIDC Carga de trabajo o Fuerza laboral: el valor debe ser el OIDC IdP ID Atlas, seguido de una '/', seguido del IdP grupo; En caso de autenticación en texto plano: el valor puede ser cualquier cosa.

true

awsIamType

enum

Etiqueta legible por humanos que indica si el nuevo usuario de la base de datos se autentica con Amazon Web Services (AWS). Credenciales de Gestión de identidades y acceso (IAM) asociadas con el usuario o el rol del usuario Enum: NONE, USER, ROLE por defecto: NONE

false

connectionSecret

Objeto

Nombre del secreto que contiene las claves privadas y las llaves públicas de Atlas API.

false

databaseName

string

DatabaseName es una base de datos contra la cual Atlas autentica al usuario. Si el usuario se autentica con AWS IAM, x.509, LDAP o OIDC Carga de trabajo este valor deberá ser '$external'. Si el usuario se autentica con SCRAM-SHA o OIDC Workforce, este valor debe ser 'admin'. El valor por defecto es 'admin'. Por defecto: admin

false

deleteAfterDate

string

DeleteAfterDate Es una marca de tiempo en formato de fecha y hora ISO 8601 en UTC, tras la cual Atlas elimina al usuario. La fecha especificada debe ser posterior a una semana.

false

description

string

Descripción de este usuario de base de datos. Máximo 100 caracteres.

false

externalProjectRef

Objeto

externalProjectRef mantiene el proyecto principal de Atlas ID. Mutuamente excluyentes con el campo "projectRef".

false

labels

[]objeto

Etiquetas es una matriz que contiene pares clave-valor que etiquetan y categorizan al usuario de la base de datos. Cada clave y valor tiene una longitud máxima de 255 caracteres.

false

oidcAuthType

enum

Etiqueta legible que indica si el nuevo nombre de usuario de la base de datos tiene OIDC autenticación federada. Para crear un grupo de autenticación federada (Workforce), especifique el valor IDP_GROUP en este campo. Para crear un usuario de autenticación federada (Workload), especifique el valor USER en este campo. Enumeración:,,. NONE IDP_GROUPPredeterminado:. USER NONE

false

passwordSecretRef

Objeto

PasswordSecret es una referencia al secreto que guarda la contraseña del usuario.

false

projectRef

Objeto

projectRef es una referencia al recurso principal AtlasProject. Mutuamente excluyentes con el campo "externalProjectRef".

false

scopes

[]objeto

Los ámbitos son un arreglo de clústeres y Atlas Data Lakes a los que este usuario tiene acceso.

false

x509Type

enum

X509El tipo es X.509 el método que utiliza la base de datos para autenticar el nombre de usuario proporcionado. Enumerado: NONE, MANAGED, CUSTOMER por defecto: NONE

false

RoleSpec permite al usuario realizar acciones particulares en la base de datos especificada. Un rol en la base de datos admin puede incluir privilegios que también se aplican a las otras bases de datos.

Name
Tipo
Descripción
Requerido

databaseName

string

DatabaseName Es una base de datos en la que el usuario tiene el rol especificado. Un rol en la base de datos de administrador puede incluir privilegios que se aplican a las demás bases de datos.

true

roleName

string

RoleName es un nombre del rol. Este valor puede ser un rol integrado o un rol personalizado.

true

collectionName

string

CollectionName es una colección a la que se aplica el rol.

false

Nombre del secreto que contiene las claves privadas y públicas de la API de Atlas.

Name
Tipo
Descripción
Requerido

name

string

Nombre del recurso al que se hace referencia Más información: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

true

externalProjectRef contiene el ID del proyecto principal de Atlas. Mutuamente exclusivo con el campo 'projectRef'.

Name
Tipo
Descripción
Requerido

id

string

ID es el proyecto Atlas ID.

true

LabelSpec contiene pares clave-valor que etiquetan y categorizan el clúster/DBUser

Name
Tipo
Descripción
Requerido

key

string

Clave aplicada para etiquetar y categorizar este componente.

true

value

string

Valor establecido a la Llave aplicada para etiquetar y categorizar este componente.

true

PasswordSecret es una referencia a Secret que guarda la contraseña del usuario.

Name
Tipo
Descripción
Requerido

name

string

El nombre es el name del recurso de Kubernetes

true

projectRef es una referencia al recurso padre AtlasProject. Mutuamente excluyente con el campo "externalProjectRef".

Name
Tipo
Descripción
Requerido

name

string

Nombre del recurso de Kubernetes

true

namespace

string

namespace del recurso de Kubernetes

false

ScopeSpec, si está presente, un usuario de base de datos solo tiene acceso al recurso indicado (clúster o Atlas Data Lake); si no se proporciona, tiene acceso a todos. Se recomienda altamente restringir el acceso de los usuarios de base de datos solo a un conjunto limitado de recursos.

Name
Tipo
Descripción
Requerido

name

string

El nombre es un name del clúster o Atlas Data Lake al que el usuario tiene acceso.

true

type

enum

Tipo es un type de recurso al que el usuario tiene acceso. Enumeración: CLUSTER, DATA_LAKE

true

AtlasDatabaseUserStatus define el estado observado de AtlasProject

Name
Tipo
Descripción
Requerido

conditions

[]objeto

Condiciones es la lista de estados que muestra el estado actual del recurso personalizado de Atlas

true

name

string

UserName es el name actual del usuario de base de datos.

false

observedGeneration

entero

ObservedGeneration indica la generación de la especificación del recurso de la que el operador Atlas tiene conocimiento. El operador de Atlas actualiza este campo al valor de 'metadatos.generation' tan pronto como comience la conciliación del recurso. Formato: int64

false

passwordVersion

string

PasswordVersion es el 'ResourceVersion' de la contraseña Secreto de la que el Operador de Atlas está al tanto

false

La condición describe el estado de un recurso personalizado de Atlas en un momento determinado.

Name
Tipo
Descripción
Requerido

status

string

Estado de la condición; uno de Verdadero, Falso, Desconocido.

true

type

string

Tipo de condición de recursos personalizados de Atlas.

true

lastTransitionTime

string

Última vez que la condición cambió de un estado a otro. Representado en ISO 8601 formato. Formato: fecha y hora.

false

message

string

Un message que proporciona detalles sobre la transición.

false

reason

string

El reason para la última transición de la condición.

false

Volver

AtlasDeployment

En esta página