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
AtlasProjectCustom 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 personalizadoAtlasDeployment, 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
Secretos de conexión
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 |
|---|---|
| Conexión pública |
| Conexión pública |
| Nombre que identifica al usuario de base de datos. |
| 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>.
Ejemplos
Proyecto y Clústeres
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
Usuario de base de datos sin ámbitos
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-theuserp1-gcp-cluster-theuser
Usuario de base de datos con alcances
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.
Usuario de base de datos con autenticación X.509
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
Usuario de base de datos con autenticación OIDC .
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
Usuario de base de datos con autenticación AWS IAM
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
Parámetros
AtlasDatabaseUser
AtlasDatabaseUser es el esquema para la API de usuario de base de datos Atlas
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | atlas.mongodb.com/v1 | true |
| string |
| true |
| Objeto | Consulte la documentación de Kubernetes | true |
| Objeto |
| false |
| Objeto |
| false |
AtlasDatabaseUser.spec
AtlasDatabaseUserSpec define el estado de destino del usuario de la base de datos en Atlas
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| []objeto | Los roles son un arreglo de las | true |
| string | El nombre de usuario es un | true |
| enum | Etiqueta legible por humanos que indica si el nuevo usuario de la base de datos se autentica con Amazon Web Services ( | false |
| Objeto | Nombre del secreto que contiene las claves privadas y las llaves públicas de Atlas | false |
| string |
| false |
| string |
| false |
| string | Descripción de este usuario de base de datos. Máximo 100 caracteres. | false |
| Objeto |
| false |
| []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 |
| enum | Etiqueta legible que indica si el nuevo nombre de usuario de la base de datos tiene | false |
| Objeto |
| false |
| Objeto |
| false |
| []objeto | Los ámbitos son un arreglo de clústeres y Atlas Data Lakes a los que este usuario tiene acceso. | false |
| enum | X509El tipo es X.509 el método que utiliza la base de datos para autenticar el nombre de usuario proporcionado. Enumerado: | false |
AtlasDatabaseUser.spec.roles
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 |
|---|---|---|---|
| string |
| true |
| string |
| true |
| string |
| false |
AtlasDatabaseUser.spec.connectionSecret
Nombre del secreto que contiene las claves privadas y públicas de la API de Atlas.
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| 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 |
AtlasDatabaseUser.spec.externalProjectRef
externalProjectRef contiene el ID del proyecto principal de Atlas. Mutuamente exclusivo con el campo 'projectRef'.
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string |
| true |
AtlasDatabaseUser.spec.labels
LabelSpec contiene pares clave-valor que etiquetan y categorizan el clúster/DBUser
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | Clave aplicada para etiquetar y categorizar este componente. | true |
| string | Valor establecido a la Llave aplicada para etiquetar y categorizar este componente. | true |
AtlasDatabaseUser.spec.passwordSecretRef
PasswordSecret es una referencia a Secret que guarda la contraseña del usuario.
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | El nombre es el | true |
AtlasDatabaseUser.spec.projectRef
projectRef es una referencia al recurso padre AtlasProject. Mutuamente excluyente con el campo "externalProjectRef".
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | Nombre del recurso de Kubernetes | true |
| string | namespace del recurso de Kubernetes | false |
AtlasDatabaseUser.spec.scopes
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 |
|---|---|---|---|
| string | El nombre es un | true |
| enum | Tipo es un | true |
AtlasDatabaseUser.status
AtlasDatabaseUserStatus define el estado observado de AtlasProject
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| []objeto | Condiciones es la lista de estados que muestra el estado actual del recurso personalizado de Atlas | true |
| string |
| false |
| entero |
| false |
| string |
| false |
AtlasDatabaseUser.status.conditions
La condición describe el estado de un recurso personalizado de Atlas en un momento determinado.
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | Estado de la condición; uno de Verdadero, Falso, Desconocido. | true |
| string | Tipo de condición de recursos personalizados de Atlas. | true |
| string | Última vez que la condición cambió de un estado a otro. Representado en | false |
| string | Un | false |
| string | El | false |