Você pode utilizar o Atlas Kubernetes Operator para gerenciar recursos em um projeto do Atlas sem utilizar o Atlas Kubernetes Operator para gerenciar o projeto em si. Neste modelo de definição de recurso personalizado independente ("CRD independente"), você associa recursos como AtlasDeployment Recurso Personalizado e AtlasDatabaseUser Recurso Personalizado a um projeto Atlas diretamente por seu 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 .
A definição desse parâmetro é obrigatória para qualquer recurso cujo recurso pai seja referenciado usando um ID do projeto do Atlas e opcional em caso contrário.
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.Modifique a referência do projeto para ponto para um ID do projeto do Atlas em vez de um
atlasProjectnome do.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.