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
Atlas Kubernetes Operator utiliza archivos de configuración de recursos personalizados para administrar la configuración de Atlas. Sin embargo, a partir de Atlas Kubernetes Operator 2.0, los recursos personalizados que elimine en Kubernetes ya no se eliminan en Atlas. En su lugar, Atlas Kubernetes Operator simplemente deja de administrarlos. Por ejemplo, si elimina un recurso AtlasProject personalizado en Kubernetes, Atlas Kubernetes Operator ya no elimina automáticamente el proyecto correspondiente de Atlas, lo que evita eliminaciones accidentales o inesperadas. Para obtener más información, incluido cómo revertir este comportamiento al valor predeterminado anterior a Atlas Kubernetes Operator 2.0, consulte Nuevo valor predeterminado: Protección contra eliminación en Atlas Kubernetes Operator 2.0.
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
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 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-theuserp1-gcp-cluster-theuser
Usuario de base de datos con ámbitos
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.
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
Parámetros
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.databaseNameTipo: 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
adminser.Si el usuario de la base de datos se autentica con X.509, este valor debe
\$externalser.
spec.oidcAuthTypeTipo: string
Condicional
MétodoOIDC mediante el cual la
spec.usernamebase de datos autentica el proporcionado.Si el usuario de la base de datos se autentica con OpenID Connect, este valor debe
IDP_GROUPser.
spec.passwordSecretRefTipo: string
Condicional
Referencia al secreto que contiene la contraseña. El método de autenticación SCRAM-SHA requiere este parámetro.
spec.projectRef.nameTipo: string
Requerido
Nombre del proyecto al que pertenece el usuario de la base de datos. Debe especificar un recurso personalizado
AtlasProjectexistente.
spec.rolesTipo: 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.nameTipo: 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.scopesespecificó.
spec.scopes.typeTipo: 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
CLUSTERadmite. Debe especificar este parámetro sispec.scopesespecificó.
spec.usernameTipo: 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.x509TypeTipo: 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.usernamevalorNONEpredeterminado.Este parámetro acepta:
NINGUNO
Usuario que no usa autenticación X.509.
ADMINISTRADO
Usuario que utiliza X.509 administrado por Atlas.
Debe especificar
\$externalpara elspec.databaseNameparámetro.ATENCIÓN AL CLIENTE
Usuario que utiliza X509 autogestionado.. Los usuarios creados con este
x509Typerequieren un nombre común (CN) en el parámetro. Para obtener más información, consultespec.usernamela RFC.2253Debe especificar
\$externalpara elspec.databaseNamepará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:
groupIdpasswordEspecifique en su
spec.passwordSecretReflugar.