You can use Atlas Kubernetes Operator to manage resources in an Atlas project without using Atlas Kubernetes Operator to manage the project itself. In this independent custom resource definition ("independent CRD") model, you associate resources such as AtlasDeployment Custom Resource and AtlasDatabaseUser Custom Resource with an Atlas project directly by its Atlas ID.
CRDs independentes permitem que você use diferentes sistemas programáticos de gerenciamento de infraestrutura para seus projetos, enquanto usa o Atlas Kubernetes Operator para gerenciar recursos alterados com mais frequência, como usuários de banco de dados de dados ou sistemas individuais.
Ao separar o gerenciamento do projeto Atlas do gerenciamento de subrecursos, como usuários e implantações, os CRDs independentes permitem alocar essas responsabilidades a diferentes funcionários ou equipes diferentes dentro da organização , conforme adequado às suas necessidades.
Considerações
Quando você utiliza o Atlas Kubernetes Operator para gerenciar um projeto, você pode configurar a autenticação da API de Administração do Atlas utilizando o spec.connectionSecretRef.name parâmetro do atlasProject recurso ou deixar este parâmetro sem definição como padrão para as credenciais globais do Atlas . Ao utilizar CRDs independentes, você pode especificar um spec.connectionSecret.name para cada recurso. Este parâmetro, se definido, tem precedência sobre spec.connectionSecretRef.name ou credenciais globais do Atlas .
Setting this parameter is required for any resource whose parent resource is referenced using an Atlas project ID, and optional otherwise.
Exemplo
Você define um CRD do atlasDeployment que referencia seu projeto pai pelo ID do Atlas em vez de um parâmetro do atlasProject spec.name. Você deve definir um spec.connectSecret.name para o recurso atlasDeployment, como no seguinte:
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
Migração para CRD independente
Para migrar CRDs existentes do gerenciamento de nível do atlasProjectpara gerenciamento independente:
Desativar a reconciliação do projeto e editar referências de subrecursos
Adicione a anotação
mongodb.com/atlas-reconciliation-policy: "skip"aometadatado recurso pai. Isto impede que o Atlas Kubernetes Operator tente reconciliar o recurso principal e os seus sub-recursos. Considere o seguinte: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" Aviso
Se você não aplicar esta anotação, o Atlas Kubernetes Operator continuará tentando tentar a reconciliação à medida que você modifica seus outros recursos. Para usuários com Novo Padrão: Proteção Contra Exclusão no Atlas Kubernetes Operator 2.0 desabilitado, isso pode fazer com que o Atlas Kubernetes Operator remova o projeto do Atlas quando você remover o
atlasProjectrecurso ou insira um estado bloqueado tentando remover um projeto com subrecursos ativos como usuários ou sistemas de banco de dados de dados.Modify the project reference to point to an Atlas project ID instead of an
atlasProjectname.Por exemplo, para desacoplar um 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 a anotação da política de reconciliação
Se você quiser continuar gerenciando seu projeto com o Atlas Kubernetes Operator, como em um cenário em que você ainda tem recursos subordinados ao seu atlasProject, reative a reconciliação removendo a anotação da política de reconciliação do CRD do atlasProject.