Docs Menu
Docs Home
/ /
/ / /

AtlasDatabaseUser Recurso personalizado

El recurso personalizado AtlasDatabaseUser configura el usuario de la base de datos en un proyecto Atlas. Los usuarios de la base de datos se crean por proyecto, no por clúster. Por lo tanto, la configuración del recurso personalizado AtlasDatabaseUser contiene una referencia a AtlasProject Recurso personalizado. Cree el AtlasProject recurso personalizado con antelación.

Importante

Los recursos personalizados ya no eliminan objetos de forma predeterminada

  • El Operador de Kubernetes de Atlas utiliza archivos de configuración de recursos personalizados para administrar la configuración de Atlas. Sin embargo, a partir del Operador de Kubernetes 2.0 de Atlas, los recursos personalizados que elimine en Kubernetes ya no se eliminan (de forma predeterminada) en Atlas. En su lugar, el Operador de Kubernetes de Atlas simplemente deja de administrar esos recursos en Atlas. Por ejemplo, si elimina un AtlasProject Recurso Personalizado en Kubernetes, el Operador de Kubernetes de Atlas ya no elimina automáticamente el proyecto correspondiente de Atlas. Este cambio de comportamiento tiene como objetivo evitar eliminaciones accidentales o inesperadas. Para obtener más información, incluido cómo revertir este comportamiento al valor predeterminado utilizado antes del Operador de Kubernetes 2 0de Atlas., consulte Nuevo valor predeterminado: Protección contra eliminaciones en el Operador de Kubernetes 2 de0 Atlas..

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

  • Defina explícitamente los detalles de configuración deseados para evitar el uso implícito de los valores predeterminados de Atlas. En algunos casos, heredar los valores predeterminados de Atlas puede generar un bucle de conciliación que impide que su recurso personalizado alcance el estado READY. Por ejemplo, definir explícitamente el comportamiento de escalado automático deseado en su recurso personalizado AtlasDeployment, como se muestra en el ejemplo incluido, garantiza que un tamaño de instancia estático en su recurso personalizado no se aplique repetidamente a una implementación de Atlas con 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

El operador de Atlas Kubernetes garantiza que la configuración del usuario de la 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 API de usuarios de la base de datos:

  • Crea un nuevo usuario de base de datos.

  • Actualiza un usuario existente.

Antes de crear un usuario de base de datos, debe crear un secreto opacocon un solo password campo para iniciar sesión en la base de datos del clúster Atlas.

Nota

Debe crear el secreto en el mismo espacio de nombres donde AtlasDatabaseUser se encuentra el recurso personalizado.

El siguiente ejemplo crea un secreto:

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

El operador Atlas Kubernetes solo observa secretos con la etiqueta atlas.mongodb.com/type=credentials para evitar observar 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 crea o actualiza con éxito el usuario de la base de datos en Atlas, Atlas Kubernetes Operator crea o actualiza los secretos de conexión en el mismo espacio de nombres 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:// Dirección URL.

connectionstringStandardSrv

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

username

Nombre que identifica al usuario de la base de datos.

password

Contraseña del usuario de la base de datos.

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

El siguiente ejemplo muestra el montaje del 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 el montaje del 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 hacen referencia a él:

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 personalizada 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 crear 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 actualizar este recurso personalizado, Atlas Kubernetes Operator elimina 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

El siguiente ejemplo muestra una AtlasDatabaseUser especificación de recurso personalizado 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 AtlasDatabaseUser especificación de recurso personalizado 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 la 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 de destino del usuario de la base de datos en las validaciones de Atlas:

  • (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

  • (has(self.``externalProjectRef``) && has(self.``connectionSecret``)) || !has(self.``externalProjectRef``): debe definir un secreto de conexión local al hacer referencia a 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

Roles es una matriz de los roles de este usuario y las bases de datos o colecciones a las que se aplica el roles. Un rol permite al usuario realizar acciones específicas en la base de datos especificada.

true

username

string

El nombre de usuario es una etiqueta legible username para autenticarse en MongoDB que representa al usuario que se autentica en MongoDB. El formato de esta etiqueta depende del método de autenticación: en el caso de AWS IAM: el valor debe ser AWS ARN para el usuario/rol IAM; en el caso de OIDC Workload o Workforce: el valor debe ser Atlas OIDC IdP ID, seguido de un signo "/", y luego el nombre del grupo IdP; en el caso de autenticación en texto sin formato: el valor puede ser cualquiera.

true

awsIamType

enum

Etiqueta legible que indica si el nuevo usuario de la base de datos se autentica con Amazon Web ServicesAWS (). Credenciales de Identity and Access Management ()IAM asociadas al usuario o a su rol. Enumeración:,,. NONE USERROLE Valor predeterminado:. NONE

false

connectionSecret

Objeto

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

false

databaseName

string

DatabaseName Es una base de datos con la que Atlas autentica al usuario. Si el usuario se autentica con la carga de AWS IAM trabajo,,509 x,, LDAP o,OIDC este valor debe ser "$external". Si el usuario se autentica con SCRAMSHA la OIDC fuerza de trabajo - o, este valor debe ser "admin". El valor predeterminado es "admin". Valor predeterminado: 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 la base de datos. Máximo 100 caracteres.

false

externalProjectRef

Objeto

externalProjectRef Contiene el proyecto Atlas principal ID. Se excluye mutuamente 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. Se excluye mutuamente con el campo "externalProjectRef".

false

scopes

[]objeto

Scopes es una matriz de clústeres y Atlas Data Lakes a los que este usuario tiene acceso.

false

x509Type

enum

X509Type es el509 método X. mediante el cual la base de datos autentica el nombre de usuario proporcionado. Enumeración:,,. Predeterminado:. NONEMANAGEDCUSTOMER NONE

false

RoleSpec permite al usuario realizar acciones específicas en la base de datos especificada. Un rol en la base de datos de administración puede incluir privilegios que también se aplican a las demás 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 para la cual se aplica el rol.

false

Nombre del secreto que contiene las claves públicas y privadas 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 Atlas principal. Se excluye mutuamente 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 en la clave aplicada para etiquetar y categorizar este componente.

true

PasswordSecret es una referencia al secreto 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 AtlasProject principal. Es mutuamente excluyente con el campo "externalProjectRef".

Name
Tipo
Descripción
Requerido

name

string

Nombre del recurso de Kubernetes

true

namespace

string

Espacio de nombres del recurso de Kubernetes

false

Si ScopeSpec está presente, un usuario de la base de datos solo tendrá acceso al recurso indicado (Cluster o Atlas Data Lake). Si no se especifica ninguno, tendrá acceso a todos. Se recomienda restringir el acceso de los usuarios de la base de datos 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

El tipo es un type del recurso al que el usuario tiene acceso. CLUSTEREnumeración:, 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 la base de datos.

false

observedGeneration

entero

ObservedGeneration Indica la generación de la especificación del recurso que el operador Atlas conoce. El operador Atlas actualiza este campo con el valor 'metadata.generation' en cuanto inicia la conciliación del recurso. Formato: int64

false

passwordVersion

string

PasswordVersion es el 'ResourceVersion' de la contraseña secreta que el operador de Atlas conoce

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 recurso personalizado 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

A message proporcionando detalles sobre la transición.

false

reason

string

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

false

Volver

Implementación de Atlas

En esta página