Docs Menu
Docs Home
/ /
Recursos personalizados
/ / /

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 la API de usuarios de la base de datos de Atlas:

  • 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 AtlasDatabaseUser especificación de recurso personalizado con spec.scopes omitido:

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

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 personalizado con configurado solo para el clúster de Google spec.scopes 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

Esta sección describe algunos de los parámetros clave de recursos personalizados de AtlasDatabaseUser que están disponibles. Para una lista completa de los parámetros disponibles, consulta la API de usuarios de base de datos de Atlas. Consulta estas descripciones, los ejemplos disponibles y la documentación de la API para personalizar tus especificaciones.

spec.awsIamType

Tipo: string

Opcional

Etiqueta que indica si el usuario de la base de datos se autentica con las credenciales de AWS IAM asociadas al usuario o con su rol. Si no se especifica ningún valor, Atlas usa el valor NONE predeterminado.

Este parámetro acepta:

NINGUNO

Usuario que no utiliza la autenticación de AWS IAM.

USUARIO

Usuario que se autentica con las credenciales de AWS IAM asociadas al usuario.

PAPEL

Usuario que se autentica con las credenciales de AWS IAM asociadas con el rol del usuario.

spec.connectionSecret.name

Tipo: string

Condicional

Nombre del secreto opaco que contiene el ID de la organización y las claves API que Atlas Kubernetes Operator utiliza para conectarse a Atlas. Si no se especifica, Atlas Kubernetes Operator recurre a:

  • El parámetro spec.connectionSecretRef.name del padre atlasProject

  • El secreto predeterminado global, si spec.connectionSecretRef.name no está definido para el padre atlasProject

Este parámetro es obligatorio para los CRD independientes.

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
spec.databaseName

Tipo: string

Requerido

Base de datos en la que se autentica el usuario. Los usuarios de la base de datos deben proporcionar un nombre de usuario y una base de datos de autenticación para iniciar sesión en MongoDB.

Si el usuario de la base de datos se autentica con SCRAM-SHA, este valor debe admin ser.

Si el usuario de la base de datos se autentica con X.,509 este valor debe \$external ser.

Si el usuario de la base de datos se autentica con OpenID Connect, este valor debe $external ser.

spec.externalProjectRef.id

Tipo: string

Condicional

ID del proyecto al que pertenece el usuario de la base de datos. Debe especificar el ID de proyecto de un proyecto Atlas existente. Este parámetro es obligatorio para los usuarios de la base de datos que pertenecen a proyectos gestionados por:

  • Una instancia diferente de Atlas Kubernetes Operator

  • Herramientas distintas a Atlas Kubernetes Operator

Para los usuarios de la base de datos que pertenecen a proyectos administrados por la misma instancia de Atlas Kubernetes Operator, utilice spec.projectRef.name si no utiliza spec.externalProjectRef.id.

spec.oidcAuthType

Tipo: string

Condicional

MétodoOIDC mediante el cual la spec.username base de datos autentica el proporcionado.

Si el usuario de la base de datos se autentica con OpenID Connect, este valor debe IDP_GROUP ser.

Este parámetro acepta:

NINGUNO

Usuario que no utiliza autenticación OIDC.

USUARIO

Usuario que utiliza OIDC administrado por Atlas.

Debe especificar $external para el spec.databaseName parámetro.

spec.passwordSecretRef

Tipo: string

Condicional

Referencia al secreto que contiene la contraseña. El método de autenticación SCRAM-SHA requiere este parámetro.

spec.projectRef.name

Tipo: string

Condicional

Nombre del proyecto al que pertenece el usuario de la base de datos. Debe especificar un recurso personalizado AtlasProject existente. Este parámetro solo se aplica a los usuarios de la base de datos que pertenecen a proyectos administrados por la misma instancia del operador de Atlas Kubernetes.

Para los usuarios de bases de datos que pertenecen a proyectos administrados por:

  • una instancia diferente de Atlas Kubernetes Operator

  • herramientas distintas de Atlas Kubernetes Operator

utilice spec.externalProjectRef.name.

spec.roles

Tipo: arreglo

Requerido

Lista que contiene los roles del usuario y las bases de datos o colecciones a las que se aplican. Para obtener una lista completa de los parámetros disponibles, consulte la API de usuarios de bases de datos de Atlas.

spec.scopes

Tipo: arreglo

Opcional

Lista que contiene los clusters donde se crea el usuario.

spec.scopes.name

Tipo: string

Condicional

Etiqueta legible que identifica el clúster al que puede acceder el usuario de la base de datos. Debe especificar este parámetro si spec.scopes especificó.

spec.scopes.type

Tipo: string

Condicional

Etiqueta legible que identifica el tipo de recurso al que puede acceder el usuario de la base de datos. El operador de Kubernetes de Atlas actualmente solo CLUSTER admite. Debe especificar este parámetro si spec.scopes especificó.

spec.username

Tipo: string

Requerido

Etiqueta legible por humanos que identifica al usuario necesario para autenticarse en la base de datos o colección de MongoDB.

Si el usuario de la base de datos se autentica con OpenID Connect, este valor debe ser su IdP de Atlas OIDC seguido de una barra diagonal / y ​​el nombre de su grupo de IdP.

Si el usuario de la base de datos se autentica con las credenciales de AWS IAM, este valor debe ser el usuario que se autentica con las credenciales de AWS IAM o el rol del usuario que se autentica con las credenciales de AWS IAM en el formato de nombre de recurso de Amazon.

spec.x509Type

Tipo: string

Opcional

Método X. mediante el cual la base de datos autentica el proporcionado. Si no se especifica un valor, Atlas usa el509 spec.username valor NONE predeterminado.

Este parámetro acepta:

NINGUNO

Usuario que no usa autenticación X.509.

ADMINISTRADO

Usuario que utiliza X.509 administrado por Atlas.

Debe especificar \$external para el spec.databaseName parámetro.

ATENCIÓN AL CLIENTE

Usuario que utiliza X509 autogestionado.. Los usuarios creados con este x509Type requieren un nombre común (CN) en el parámetro. Para obtener más información, consulte spec.username la RFC.2253

Debe especificar \$external para el spec.databaseName parámetro.

Para conocer los parámetros de configuración disponibles en la API, consulte la API de usuarios de la base de datos Atlas.

Actualmente, Atlas Kubernetes Operator no admite los siguientes parámetros disponibles en la API de usuarios de la base de datos de Atlas:

  • ldapAuthType

No especifique los siguientes parámetros:

Volver

Implementación de Atlas

En esta página