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
AtlasProjectRecurso 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 personalizadoAtlasDeployment, 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
Secretos de conexión
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 |
|---|---|
| Conexión pública |
| URI |
| Nombre que identifica al usuario de la base de datos. |
| 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>.
Ejemplos
Proyecto y clústeres
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
Usuario de base de datos sin ámbitos
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-theuserp1-gcp-cluster-theuser
Usuario de base de datos con ámbitos
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.
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
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
Usuario de base de datos con autenticación de AWS IAM
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
Parámetros
AtlasDatabaseUser
AtlasDatabaseUser es el esquema para la API de usuario de la 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 | Roles es una matriz de los | true |
| string | El nombre de usuario es una etiqueta legible | true |
| enum | Etiqueta legible 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 públicas de Atlas | false |
| string |
| false |
| string |
| false |
| string | Descripción de este usuario de la 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 | Scopes es una matriz de clústeres y Atlas Data Lakes a los que este usuario tiene acceso. | false |
| enum | X509Type es el509 método X. mediante el cual la base de datos autentica el nombre de usuario proporcionado. Enumeración:,,. Predeterminado:. | false |
AtlasDatabaseUser.spec.roles
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 |
|---|---|---|---|
| string |
| true |
| string |
| true |
| string |
| false |
Usuario de base de datos Atlas.spec.connectionSecret
Nombre del secreto que contiene las claves públicas y privadas 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.referenciaDeProyectoExterno
externalProjectRef contiene el ID del proyecto Atlas principal. Se excluye mutuamente con el campo "projectRef".
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string |
| true |
AtlasDatabaseUser.spec.etiquetas
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 en la clave aplicada para etiquetar y categorizar este componente. | true |
AtlasDatabaseUser.spec.contraseñaReferenciaSecreta
PasswordSecret es una referencia al secreto 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 AtlasProject principal. Es mutuamente excluyente con el campo "externalProjectRef".
Name | Tipo | Descripción | Requerido |
|---|---|---|---|
| string | Nombre del recurso de Kubernetes | true |
| string | Espacio de nombres del recurso de Kubernetes | false |
Ámbitos de especificación del usuario de la base de datos Atlas
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 |
|---|---|---|---|
| string | El nombre es un | true |
| enum | El 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 |
Condiciones del estado del usuario de la base de datos Atlas
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 recurso personalizado de Atlas. | true |
| string | Última vez que la condición cambió de un estado a otro. Representado en | false |
| string | A | false |
| string | El | false |