El AtlasCustomRole recurso personalizado define un rol de base de datos personalizado para asignar privilegios a los usuarios de su base de datos.
Para crear este rol personalizado dentro de un proyecto determinado, debes:
Referencia a la Nombre del
AtlasProjectrecurso personalizado en elAtlasCustomRolerecurso personalizado, para los proyectos que administra con Atlas Kubernetes OperatorHaga referencia al ID del proyecto de su proyecto Atlas en el
AtlasCustomRolerecurso personalizado, para los proyectos que no administra con Atlas Kubernetes Operator
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 operador de Kubernetes de Atlas realiza una de las siguientes acciones utilizando el recurso de API de rol de base de datos personalizada de Atlas:
Crea una nueva función de base de datos personalizada.
Actualiza una función de base de datos personalizada existente.
Ejemplos
Ejemplo básico
El siguiente ejemplo muestra un recurso personalizado AtlasCustomRole que define el rol personalizado shard-operator, con privilegios para realizar copias de seguridad y supervisar clústeres fragmentados dentro del proyecto my-project.
apiVersion: atlas.mongodb.com/v1 kind: AtlasCustomRole metadata: name: shard-operator-role namespace: mongodb-atlas-system labels: mongodb.com/atlas-reconciliation-policy: keep spec: projectRef: name: my-project namespace: my-operator-namespace role: name: my-role actions: - name: getShardMap resources: cluster: true - name: shardingState resources: cluster: true - name: connPoolStats resources: cluster: true - name: getLog resources: cluster: true inheritedRoles: - name: operator-role-1 role: backup
Ejemplo de CRD independiente
El siguiente ejemplo muestra un AtlasCustomRole CRD independiente que define el mismo shard-operator rol personalizado definido en el Ejemplo Básico. Esta definición de recurso personalizado le permite crear este rol en un proyecto que no administra en la misma instancia de Atlas Kubernetes Operator con la que define este recurso. Para habilitar la operación independiente, debe usar un externalProjectRef en lugar de un projectRef y proporcionar un connectionSecret directamente, ya que este recurso no puede heredar las credenciales de API de su proyecto principal.
apiVersion: atlas.mongodb.com/v1 kind: AtlasCustomRole metadata: name: shard-operator-role namespace: mongodb-atlas-system labels: mongodb.com/atlas-reconciliation-policy: keep spec: externalProjectRef: id: 671998971c8520583f24f411 connectionSecret: name: my-atlas-key role: name: my-role actions: - name: getShardMap resources: cluster: true - name: shardingState resources: cluster: true - name: connPoolStats resources: cluster: true - name: getLog resources: cluster: true inheritedRoles: - name: operator-role-1 role: backup
Parámetros
Esta sección describe los AtlasTeam parámetros de recursos personalizados disponibles.
metadata.nameTipo: string
Requerido
Nombre que utiliza el recurso
AtlasProjectpersonalizado para agregar este equipo a un proyecto.
metadata.namespaceTipo: string
Opcional
Namespace distinto de
defaultque quieres que contenga el recurso personalizadoatlasTeam. Si defines un namespace personalizado, debes añadirlo alAtlasProjectrecurso personalizado en el campospec.teams.teamRef.namespace.
spec.connectionSecret.nameTipo: string
Condicional
Nombre del secreto opacoQue 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.namedel padreatlasProjectEl secreto predeterminado
global, sispec.connectionSecretRef.nameno está definido para el padreatlasProject
Este parámetro es obligatorio para los CRD independientes.
El operador Atlas Kubernetes solo observa secretos con la etiqueta
atlas.mongodb.com/type=credentialspara evitar observar secretos innecesarios.El siguiente ejemplo etiqueta un secreto:
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
spec.externalProjectRef.idTipo: string
Condicional
ID del proyecto al que pertenece el rol personalizado. Debe especificar el ID de proyecto de un proyecto Atlas existente. Este parámetro es obligatorio para los roles personalizados que pertenecen a proyectos gestionados por:
Una instancia diferente de Atlas Kubernetes Operator
Herramientas distintas a Atlas Kubernetes Operator
Para los roles personalizados que pertenecen a proyectos administrados por la misma instancia de Atlas Kubernetes Operator, use
spec.projectRef.namesi no usaspec.externalProjectRef.id.Un rol personalizado solo puede pertenecer a un proyecto. Para definir el mismo rol personalizado para varios proyectos, cree definiciones de recursos personalizadas para cada proyecto.
spec.projectRef.nameTipo: string
Condicional
Nombre del proyecto al que pertenece el rol personalizado. Debe especificar un recurso personalizado existente. Este parámetro solo se aplica a los roles personalizados que pertenecen a proyectos administrados por la misma instancia del operador de Atlas
AtlasProjectKubernetes.Para roles personalizados que pertenecen a proyectos administrados por:
una instancia diferente de Atlas Kubernetes Operator
herramientas distintas de Atlas Kubernetes Operator
utilice
spec.externalProjectRef.id.Un rol personalizado solo puede pertenecer a un proyecto. Para definir el mismo rol personalizado para varios proyectos, cree definiciones de recursos personalizadas para cada proyecto.
spec.projectRef.namespaceTipo: string
Condicional
Espacio de nombres en el que
AtlasProjectspec.projectRef.nameexiste el recurso personalizado especificado en.Para roles personalizados que pertenecen a proyectos administrados por:
una instancia diferente de Atlas Kubernetes Operator
herramientas distintas de Atlas Kubernetes Operator
No configure este parámetro.
spec.role.actionsTipo: arreglo
Opcional
Lista de objetos que representan las acciones de privilegio individuales que otorga el rol.
spec.role.actions.nameTipo: string
Requerido
Etiqueta que identifica la acción del privilegio. Para obtener una lista completa de las acciones disponibles en la API de administración de Atlas, consulte /reference/custom-role-actions.
spec.role.actions.resourcesTipo: arreglo
Opcional
Lista de objetos que indican una base de datos y una colección en la que se concede la acción, o indican que la acción se concede en el recurso del clúster.
spec.role.actions.resources.clusterTipo: booleano
Opcional
Bandera que indica que la acción está concedida en el recurso del clúster.
Nota
Este parámetro es mutuamente excluyente con los parámetros
spec.role.actions.resources.collectionspec.role.actions.resources.databasey.
spec.role.actions.resources.collectionTipo: string
Opcional
Etiqueta legible que identifica la colección en la que se concede la acción. Si este valor es una cadena vacía, la acción se concede en todas las colecciones de la base de datos especificada en el
spec.role.actions.resources.databaseparámetro.Nota
Este parámetro es mutuamente excluyente con el
spec.role.actions.resources.clusterparámetro.
spec.role.actions.resources.databaseTipo: string
Opcional
Etiqueta legible por humanos que identifica la base de datos en la que se concede la acción.
Nota
Este parámetro es mutuamente excluyente con el
spec.role.actions.resources.clusterparámetro.
spec.role.inheritedRolesTipo: arreglo
Opcional
Lista de objetos que representan pares clave-valor que indican el rol heredado y la base de datos en la que se otorga el rol.
spec.role.inheritedRoles.databaseTipo: string
Opcional
Etiqueta legible por humanos que identifica la base de datos en la que se otorga el rol heredado.
Nota
Este valor debe ser
adminpara todos los roles excepto lectura y lectura-escritura.
spec.role.inheritedRoles.nameTipo: string
Opcional
Etiqueta que identifica de forma única el rol heredado. Puede especificar otro rol personalizado o uno integrado.