Puede usar Atlas Kubernetes Operator para administrar recursos en un proyecto Atlas sin usar Atlas Kubernetes Operator para administrar el proyecto en sí. En este modelo de definición de recursos personalizados independientes ("CRD independiente"), se asocian recursos como AtlasDeployment Recurso personalizado y recurso personalizado con un proyecto Atlas directamente por AtlasDatabaseUser su ID de Atlas.
Los CRD independientes le permiten utilizar diferentes sistemas de administración de infraestructura programática para sus proyectos, mientras utiliza Atlas Kubernetes Operator para administrar recursos que se modifican con mayor frecuencia, como usuarios de bases de datos o implementaciones individuales.
Al separar la gestión del proyecto Atlas de la gestión de subrecursos como usuarios e implementaciones, los CRD independientes le permiten asignar estas responsabilidades a diferente personal o diferentes equipos dentro de su organización según se adapte a sus necesidades.
Considerations
Al usar Atlas Kubernetes Operator para administrar un proyecto, puede configurar la autenticación de la API de administración de Atlas mediante el spec.connectionSecretRef.name parámetro del atlasProject recurso o dejar este parámetro sin configurar para que se usen las credenciales globales de Atlas de forma predeterminada. Al usar CRD independientes, puede especificar un spec.connectionSecret.name para cada recurso. Si este parámetro se configura, prevalece sobre spec.connectionSecretRef.name o las credenciales globales de Atlas.
La configuración de este parámetro es obligatoria para cualquier recurso cuyo recurso principal se referencia mediante un ID de proyecto Atlas; en caso contrario, es opcional.
Ejemplo
Se define un CRD atlasDeployment que hace referencia a su proyecto principal mediante el ID de Atlas en lugar de un parámetro atlasProject spec.name. Se debe definir un spec.connectSecret.name para el recurso atlasDeployment, como se muestra a continuación:
apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: test-cluster-name namespace: mongodb-atlas-system spec: externalProjectRef: id: 671998971c8520583f24f411 connectionSecret: name: my-atlas-key deploymentSpec: clusterType: REPLICASET name: service-name tags: - key: "environment" value: "production" backupEnabled: true replicationSpecs: - zoneName: US-Zone numShards: 3 regionConfigs: - regionName: CENTRAL_US providerName: GCP backingProviderName: GCP priority: 7 electableSpecs: instanceSize: M10 nodeCount: 3
Migración a CRD independiente
Para migrar los CRD existentes desde la gestión de nivel atlasProjecta la gestión independiente:
Deshabilitar la conciliación de proyectos y editar referencias de subrecursos
Agrega el elemento de anotación
mongodb.com/atlas-reconciliation-policy: "skip"almetadatadel recurso principal. Esto previene que Atlas Kubernetes Operator intente reconciliar el recurso principal y sus subrecursos. Considera lo siguiente:apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project annotations: mongodb.com/atlas-reconciliation-policy: "skip" spec: name: Test project connectionSecretRef: name: my-atlas-key projectIpAccessList: - cidrBlock: "203.0.113.0/24" comment: "CIDR block for Application Server B - D" Advertencia
Si no aplica esta anotación, Atlas Kubernetes Operator seguirá intentando la conciliación mientras modifica sus otros recursos. Para los usuarios con la opción "Nuevo valor predeterminado: Protección contra eliminación en Atlas Kubernetes Operator "2.0 deshabilitada, esto puede provocar que Atlas Kubernetes Operator elimine el proyecto Atlas al eliminar el
atlasProjectrecurso, o que entre en estado de bloqueo al intentar eliminar un proyecto con subrecursos activos, como usuarios de bases de datos o implementaciones.Modifique la referencia del proyecto para que apunte a un ID de proyecto Atlas en lugar de un
atlasProjectnombre.Por ejemplo, para desacoplar un recurso
atlasDatabaseUser:apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: readWriteAnyDatabase databaseName: admin externalProjectRef: id: 671998971c8520583f24f411 username: theuser passwordSecretRef: name: the-user-password
(Condicional) Eliminar la anotación de la política de conciliación
Si desea continuar administrando su proyecto con Atlas Kubernetes Operator, como en un escenario en el que aún tiene recursos subordinados a su atlasProject, reactive la conciliación eliminando la anotación de la política de conciliación del CRD atlasProject.