Atlas Kubernetes Operator es compatible con las siguientes definiciones de recursos personalizados:
Resource | Descripción | Nombre corto |
|---|---|---|
Configuración de una Política de Cumplimiento de Copia de seguridad para proteger los datos de copia de seguridad. | abcp | |
Política de respaldo para realizar una copia de seguridad de su clúster Atlas. | abp | |
Cronograma de copia de seguridad para respaldar tu clúster Atlas. | abs | |
un(a) rol personalizado de base de datos para asignar privilegios a sus usuarios de base de datos. | acr | |
Clúster dentro de algún proyecto en Atlas. | ad | |
Usuario de base de datos dentro de un proyecto en Atlas. | adu | |
Lista de fuentes permitidas para las conexiones a Atlas. | aal | |
Proyecto en Atlas. | ap | |
Equipo del proyecto en Atlas. | en | |
instancia federada de base de datos y sus nodos privados en Atlas. | adf | |
Conexión de peering deVPC entre su proyecto Atlas y su proveedor de nube. | anp | |
Contenedor de red que admite el emparejamiento VPC entre tu proyecto de Atlas y un proveedor de nube. | anc | |
Modificar la configuración específica de la organización. | aos | |
Conexión de endpoint privado desde su proveedor de nube elegido a Atlas. | ape | |
Índice de alguna colección en su clúster Atlas. | ASIC | |
Conexión de Atlas Stream Processing. | asc | |
Espacio de trabajo de Atlas Stream Processing. | asi | |
Autenticación federada en Atlas. | afa |
Importante
Recursos personalizados ya no borran objetos por defecto
Atlas Kubernetes Operator utiliza archivos de configuración de recursos personalizados para administrar la configuración de Atlas, pero a partir de Atlas Kubernetes Operator 2.0, los recursos personalizados que borres en Kubernetes ya no se borran (por defecto) en Atlas. En su lugar, Atlas Kubernetes Operator simplemente deja de administrar estos recursos en Atlas. Por ejemplo, si borras un
AtlasProjectRecurso personalizado en Kubernetes, por defecto el Atlas Kubernetes Operator ya no borra automáticamente el Proyecto correspondiente en Atlas. Este cambio de comportamiento tiene como objetivo ayudar a prevenir eliminaciones accidentales o inesperadas. Para aprender más, incluyendo cómo revertir este comportamiento al por defecto antes de Atlas Kubernetes Operator 2.0, consulte Nuevo valor por defecto: Protección contra eliminaciones en Atlas Kubernetes Operator 2.0.De manera similar, Atlas Kubernetes Operator no elimina equipos de Atlas si los elimina de un proyecto Atlas en Kubernetes con Atlas Kubernetes Operator.
Define explícitamente los detalles de configuración que deseas para evitar el uso implícito de los valores de configuración por defecto de Atlas. En algunos casos, heredar los valores por defecto de Atlas puede crear un ciclo de conciliación que impida que el recurso personalizado alcance un estado de
READY. Por ejemplo, definir explícitamente el comportamiento de escalado automático deseado en el recurso personalizadoAtlasDeployment, como se muestra en el ejemplo incluido, garantiza que un tamaño de instancia estático en el recurso personalizado no se aplique repetidamente a una implementación de Atlas que tiene el escalado automático habilitado.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Administrar Atlas Kubernetes Operator con kubectl
Para listar todos los recursos de Atlas Kubernetes Operator en tu clúster con kubectl, puedes ejecutar:
kubectl get atlas
Para tu comodidad, para enumerar o describir tipos específicos de CRD de Atlas Kubernetes Operator, puedes usar los nombres cortos que aparecen en la tabla anterior. Por ejemplo, para enumerar todos los atlasdatabaseusers en el namespace mongodb, puede ejecutar:
kubectl get adu -n mongodb
Flujo de trabajo de Atlas Kubernetes Operator
Cuando utilizas Atlas Kubernetes Operator, puedes crear un nuevo proyecto de Atlas o trabajar con un proyecto de Atlas existente.
Necesita la siguiente llave pública de API, llave privada de API y la información del Identificador de la Organización para configurar el acceso de Atlas Kubernetes Operator a Atlas.
Si deseas que el Atlas Kubernetes Operator cree un nuevo Proyecto de Atlas, otorga acceso programático a una organización. Si tu organización requiere una lista de acceso IP para la API de administración de Atlas, también deberás configurar la lista de acceso a la API.
Importante
Debes asignar la clave API al Organization Project Creator rol en la organización o superior.
Si deseas trabajar con un proyecto Atlas existente, Añadir acceso al proyecto desde un proyecto. Si tu organización requiere una lista de acceso IP para la API de Administración de Atlas, también debes configurar la lista de acceso a la API.
Importante
Debe asignar al clave API el rol de proyecto Project Owner.
Para saber más, consulta Configura el acceso a Atlas.
Crear y actualizar proceso
Cada vez que cambia el campo spec en cualquiera de los recursos personalizados admitidos, se inicia el siguiente flujo de trabajo en Atlas Kubernetes Operator:
El operador de Atlas Kubernetes recibe un evento sobre el recurso personalizado modificado.
Atlas Kubernetes Operator actualiza el campo
status.conditionspara reflejar que el recurso no está listo:conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "False" type: Ready Para conectarse a la API de administración de Atlas, Atlas Kubernetes Operator lee el Identificador de la Organización y las llaves API de una de las siguientes ubicaciones:
spec.connectionSecretRef.name(si se especifica en elAtlasProjectrecurso personalizado).De forma predeterminada, Atlas Kubernetes Operator mantiene los secretos de conexión en el mismo espacio de nombrescomo el
AtlasProjectrecurso personalizado. Para almacenar secretos en otro espacio de nombres, especifique elspec.connectionSecretRef.namespaceparámetro.globalSecreto del operador de Atlas Kubernetes<operator-deployment-name>-api-key(si no sespec.connectionSecretRef.nameespecifica).
Para crear o actualizar recursos en Atlas, Atlas Kubernetes Operator utiliza la información de conexión para realizar llamadas API a Atlas.
Si ocurre algún error durante la conciliación,
status.conditionsse actualiza para reflejar el error.Ejemplo
- lastTransitionTime: "2021-03-15T14:26:44Z" message: 'POST https://cloud.mongodb.com/api/atlas/v1.0/groups/604a47de73cd8cag77239021/accessList: 400 (request "INVALID_IP_ADDRESS_OR_CIDR_NOTATION") The address 192.0.2.1dfdfd5 must be in valid IP address or CIDR notation.' reason: ProjectIPAccessListNotCreatedInAtlas status: "False" type: IPAccessListReady Si la actualización se realiza correctamente,
status.conditionsrefleja que el recurso está listo:conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "True" type: Ready
Borrar proceso
A partir de Atlas Kubernetes Operator 2.0, cuando eliminas un recurso personalizado de Kubernetes, el objeto permanece en Atlas por defecto, pero Atlas Kubernetes Operator ya no controla el objeto. Puede revertir este por defecto para su implementación completa, o reemplazar este por defecto para un recurso personalizado específico usando una anotación para permitir que Atlas Kubernetes Operator borre el objeto correspondiente de Atlas. Si se anula con una anotación, se inicia el siguiente flujo de trabajo:
El operador de Atlas Kubernetes recibe un evento sobre el recurso personalizado eliminado.
Para conectarse a la API de administración de Atlas, Atlas Kubernetes Operator lee el Identificador de la Organización y las llaves API de una de las siguientes ubicaciones:
spec.connectionSecretRef.name(si se especifica en elAtlasProjectrecurso personalizado).Por defecto, el Atlas Kubernetes Operator mantiene los secretos de conexión en el mismo namespace que el
AtlasProjectRecurso personalizado. Para almacenar secretos en otro namespace, especifica el parámetrospec.connectionSecretRef.namespace.globalSecreto del operador de Atlas Kubernetes<operator-deployment-name>-api-key(si no sespec.connectionSecretRef.nameespecifica).
Para borrar el recurso de Atlas, Atlas Kubernetes Operator usa la información de conexión para hacer llamadas API a Atlas.
Nota
Atlas Kubernetes Operator elimina cualquier objeto relacionado creado en Kubernetes. Por ejemplo, si remueve
AtlasDatabaseUser, Atlas Kubernetes Operator remueve la conexión relacionada secretos.
Usa anotaciones para omitir o reemplazar los valores por defecto
Puedes utilizar anotaciones para modificar el nuevo comportamiento por defecto del Atlas Kubernetes Operator.
Si agrega la anotación
mongodb.com/atlas-resource-policy: "delete"almetadatade un recurso personalizado, Atlas Kubernetes Operator elimina el objeto correspondiente en Atlas cuando usted elimina el recurso Atlas Kubernetes Operator.Ejemplo
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project annotations: mongodb.com/atlas-resource-policy: "delete" Si has revertido el nuevo comportamiento de eliminación al valor por defecto utilizado antes de Atlas Kubernetes Operator 2.0, puedes agregar la
mongodb.com/atlas-resource-policy: "keep"anotación almetadatade un recurso personalizado para que Atlas Kubernetes Operator no borre el recurso cuando borres el recurso Atlas Kubernetes Operator.Si agregas la anotación
mongodb.com/atlas-reconciliation-policy: "skip"a losmetadatade un recurso personalizado, el Atlas Kubernetes Operator no inicia la reconciliación para el recurso. Esta anotación permite que se pause la sincronización con la especificación hasta que se remueva la anotación. Puede usar esta anotación para realizar cambios manuales en un recurso personalizado y evitar que el Atlas Kubernetes Operator deshaga esos cambios durante una sincronización. Cuando se remueve esta anotación, el Atlas Kubernetes Operator reconcilia el recurso y lo sincroniza con la especificación.Si añades la anotación
mongodb.com/atlas-resource-version-policy: "allow"almetadatade un recurso personalizado, Atlas Kubernetes Operator te permite utilizar un recurso, incluso si su etiqueta de versión no coincide con la versión de Atlas Kubernetes Operator que está utilizando. Si la versión de su recurso es una versión principal anterior a su versión de Atlas Kubernetes Operator, es posible que las últimas funcionalidades no funcionen. Las discrepancias de versiones menores son retrocompatibles.