Se puede utilizar el Atlas Kubernetes Operator para gestionar un recurso en un Proyecto de Atlas sin utilizarlo para gestionar el propio Proyecto. En este modelo independiente de definición de recursos personalizados ("CRD independiente"), se asocian recursos tales como AtlasDeployment Recurso personalizado y AtlasDatabaseUser Recurso personalizado con un proyecto de Atlas directamente por su Atlas ID.
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 y implementaciones, los CRD independientes permiten asignar estas responsabilidades a diferentes personas o equipos dentro de su organización según sus necesidades.
Considerations
Cuando uses Atlas Kubernetes Operator para gestionar un proyecto, puedes configurar la autenticación de la API de administración de Atlas utilizando el parámetro spec.connectionSecretRef.name del recurso atlasProject, o dejar este parámetro sin configurar para usar las credenciales globales por defecto de Atlas. Cuando se utilizan CRD independientes, se puede especificar un spec.connectionSecret.name para cada recurso. Este parámetro, si se establece, tiene prioridad sobre spec.connectionSecretRef.name o las credenciales globales de Atlas.
Es obligatorio establecer este parámetro para cualquier recurso cuyo recurso principal se haga referencia usando un Atlas ID del grupo, y es opcional en los demás casos.
Ejemplo
Defines un atlasDeployment CRD que hace referencia a su proyecto principal por Atlas ID en vez de un parámetro atlasProject spec.name. Debes definir un spec.connectSecret.name para el recurso atlasDeployment, como en lo siguiente:
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 a nivel atlasProjecthacia una gestión independiente:
Desactiva la conciliación de proyectos y edita las 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 aplicas esta anotación, el Atlas Kubernetes Operator continuará intentando la reconciliación a medida que modifiques tus otros recursos. Para los usuarios con New Default: Deletion Protection in Atlas Kubernetes Operator 2.0 deshabilitado, esto puede resultar en que el Atlas Kubernetes Operator remueva el proyecto Atlas cuando usted remueve el recurso
atlasProject, o entrar en un estado bloqueado al intentar remover un proyecto con subrecursos activos como usuarios de base 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) remover la anotación de la política de conciliación
Si quieres seguir gestionando tu proyecto con Atlas Kubernetes Operator, como en un escenario donde todavía tienes recursos subordinados a tu atlasProject, reactiva la reconciliación removiendo la anotación de la política de reconciliación del CRD atlasProject.