O recurso personalizado do AtlasDatabaseUser configura o usuário de banco de dados de dados em um projeto Atlas . Você cria usuários do banco de dados de dados por projeto, não por agrupamento. Portanto, a configuração do recurso personalizado AtlasDatabaseUser contém uma referência ao AtlasProject Recurso personalizado. Crie o AtlasProject Recurso Personalizado com antecedência.
Importante
Os Recursos Personalizados Não Excluem Mais Objetos por Padrão
O Atlas Kubernetes Operator utiliza arquivos de configuração de recurso personalizado para gerenciar sua configuração do Atlas , mas a partir do Atlas Kubernetes Operator,2.0 os recursos personalizados que você exclui no Kubernetes não são mais (por padrão) excluídos no Atlas. Em vez disso, o Atlas Kubernetes Operator simplesmente para de gerenciar estes recursos no Atlas. Por exemplo, se você excluir um
AtlasProjectRecurso Personalizado no Kubernetes, por padrão, o Atlas Kubernetes Operator não excluirá mais automaticamente o projeto correspondente do Atlas. Essa mudança no comportamento destina-se a ajudar a evitar exclusões acidentais ou inesperadas. Para saber mais, incluindo como reverter este comportamento para o padrão utilizado antes do Atlas Kubernetes Operator.,2 0consulte Novo padrão: Proteção de exclusão no Atlas Kubernetes 2 0Operator..Da mesma forma, o Atlas Kubernetes Operator não exclui equipes do Atlas se você as remover de um projeto do Atlas no Kubernetes com o Atlas Kubernetes Operator.
Defina explicitamente os detalhes de configuração desejados para evitar o uso implícito de valores de configuração padrão do Atlas . Em alguns casos, herdar os padrões do Atlas pode resultar em um loop de reconciliação que pode impedir que seu recurso personalizado atinja um estado
READY. Por exemplo, definir explicitamente o comportamento de autoscaling desejado em seu recurso personalizadoAtlasDeployment, conforme mostrado no exemplo incluído, garante que um tamanho de instância estática em seu recurso personalizado não esteja sendo aplicado repetidamente a um sistema do Atlas que tenha o autoscaling ativado.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
O exemplo a seguir mostra uma referência ao Recurso PersonalizadoAtlasProject :
spec: projectRef: name: my-project
O Atlas Kubernetes Operator garante que a configuração do trigger de banco de dados no Atlas corresponda à configuração no Kubernetes.
O Atlas Kubernetes Operator realiza uma das seguintes ações usando aAPI de usuários do bancode dados do Atlas :
Cria um novo trigger de banco de dados.
Atualiza um usuário existente.
Antes de criar um usuário de banco de dados, você deve criar um segredo opaco com um único campo password para fazer login no banco de dados do Atlas cluster.
Observação
Você deve criar o segredo no mesmo namespace onde o recurso personalizado do AtlasDatabaseUser está localizado.
O exemplo a seguir cria um segredo:
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
O Atlas Kubernetes atlas.mongodb.com/type=credentials Operator observa segredos apenas com a etiqueta para evitar a exibição de segredos desnecessários.
O exemplo a seguir rotula um segredo:
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
Segredos de conexão
Depois que o Atlas Kubernetes Operator cria ou atualiza com êxito o usuário do banco de dados no Atlas, o Atlas Kubernetes Operator cria ou atualiza os segredos de conexão no mesmo namespace em que o recurso personalizado do AtlasDatabaseUser está localizado.
Os segredos de conexão contêm todas as informações necessárias para se conectar ao cluster do Atlas, incluindo os seguintes parâmetros:
Parâmetro | Descrição |
|---|---|
| URI de |
| URI de conexão |
| Nome que identifica o utilizador do banco de dados. |
| Senha do trigger de banco de dados. |
A aplicação em execução no Kubernetes podem utilizar estas informações para se conectar ao cluster do Atlas. Você pode montar os segredos nos pods de aplicativos como arquivos e o processo do aplicativo pode ler esses arquivos para obter dados.
O exemplo a seguir mostra a montagem do segredo como uma variável de ambiente:
spec: containers: - name: test-app env: - name: "CONNECTIONSTRING" valueFrom: secretKeyRef: name: project-cluster-basic-theuser key: connectionStringStandardSrv
O exemplo a seguir mostra a montagem do segredo como arquivos:
spec: containers: - name: test-app volumeMounts: - mountPath: /var/secrets/ name: theuser-connection volumes: - name: theuser-connection secret: secretName: project-cluster-basic-theuser
Por padrão, o Atlas Kubernetes Operator cria o segredo de conexão do usuário de banco de dados para cada cluster no mesmo projeto que o AtlasDatabaseUser faz referência. Você pode alterar esse comportamento com o parâmetro spec.scopes. Este parâmetro restringe os clusters onde o usuário de banco de dados é criado. O nome do segredo de conexão utiliza o seguinte formato: <project_name>-<cluster_name>-<db_user_name>.
Exemplos
projeto e clusters
O exemplo seguinte mostra um projeto do Atlas e os clusters que fazem referência a ele:
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: p1 projectIpAccessList: - ipAddress: "192.0.2.15" comment: "IP address for Application Server A" apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-aws-cluster spec: name: aws-cluster projectRef: name: my-project providerSettings: instanceSizeName: M10 providerName: AWS regionName: US_EAST_1 apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-gcp-cluster spec: name: gcp-cluster projectRef: name: my-project providerSettings: instanceSizeName: M10 providerName: GCP regionName: EASTERN_US
Usuário do banco de dados sem escopos
O exemplo a seguir mostra uma especificação de recurso personalizado AtlasDatabaseUser com spec.scopes omitido:
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: description: "User for the reporting application." roles: - roleName: readWriteAnyDatabase databaseName: admin projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password
Após criar este recurso personalizado, o Atlas Kubernetes Operator cria os seguintes segredos:
p1-aws-cluster-theuserp1-gcp-cluster-theuser
Usuário do banco de dados com escopos
O exemplo a seguir mostra uma especificação de recurso personalizado AtlasDatabaseUser com spec.scopes definido apenas para o cluster do Google Cloud:
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password scopes: - type: CLUSTER name: gcp-cluster
Após atualizar este recurso personalizado, o Atlas Kubernetes Operator remove theuser do aws-cluster. Ele também remove o segredo p1-aws-cluster-theuser do cluster Kubernetes.
Trigger de banco de dados com autenticação X.509
O exemplo seguinte mostra uma especificação de recurso personalizada do AtlasDatabaseUser com autenticação X.509.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: username: CN=my-x509-authenticated-user,OU=organizationalunit,O=organization databaseName: "\$external" x509Type: "CUSTOMER" roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project
Usuário do banco de dados com autenticação OIDC
O exemplo a seguir mostra uma especificação de recurso personalizado AtlasDatabaseUser com OIDC.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: my-oidc-group-id/my-idp-group-name oidcAuthType: IDP_GROUP
Usuário de banco de Amazon Web Services dados com autenticação IAM do Amazon Web Services
O exemplo a seguir mostra uma AtlasDatabaseUser especificação de recurso personalizado com Amazon Amazon Web Services Web Services IAM .
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: username: arn:aws:iam::123456789012:user/johndoe databaseName: "$external" roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project awsIamType: USER
Parâmetros
AtlasDatabaseUser
AtlasDatabaseUser é o esquema para a API do usuário de banco de dados Atlas
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | atlas.mongodb.com/v1 | true |
| string |
| true |
| objeto | Consulte a documentação do Kubernetes | true |
| objeto |
| false |
| objeto |
| false |
AtlasDatabaseUser.spec
AtlasDatabaseUserSpec define o estado de destino do usuário de banco de dados no Atlas
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| [] objeto | Funções é um array do | true |
| string | O nome de usuário é um | true |
| enum | Etiqueta legível por humanos que indica se o novo usuário de banco de dados se autentica com o Amazon Web Services ( | false |
| objeto | Nome do segredo contendo as chaves privada e pública do Atlas | false |
| string |
| false |
| string |
| false |
| string | Descrição deste usuário de banco de dados. Máximo de 100 caracteres. | false |
| objeto |
| false |
| [] objeto | Rótulos é um array que contém pares de valores-chave que aplicam tag e categorizam o usuário de banco de dados. Cada chave e valor tem um comprimento máximo de 255 caracteres. | false |
| enum | Etiqueta legível por humanos que indica se o novo nome de usuário do banco de dados com | false |
| objeto |
| false |
| objeto |
| false |
| [] objeto | Escopos é um array de clusters e Atlas Data Lakes aos quais esse usuário tem acesso. | false |
| enum | X509Type é o método X.509 pelo qual o banco de dados autentica o nome de usuário fornecido. enumeração: | false |
AtlasDatabaseUser.spec.funções
RoleSpec permite ao usuário executar ações específicas no banco de dados especificado . Uma função no banco de dados admin também pode incluir privilégios que se aplicam a outros bancos de dados.
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string |
| true |
| string |
| true |
| string |
| false |
AtlasDatabaseUser.spec.connectionSecret
Nome do segredo que contém as chaves privadas e públicas da Atlas API.
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | Nome do recurso que está sendo referenciado Mais informações: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names | true |
AtlasDatabaseUser.spec.externalProjectRef
externalProjectRef contém o ID do grupo pai do Atlas. Mutualmente exclusivo com o campo"projectRef".
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string |
| true |
AtlasDatabaseUser.spec.labels
O LabelSpec contém pares de valores-chave que tagueiam e categorizam o cluster/DBUser
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | Chave aplicada para marcar e categorizar este componente. | true |
| string | Valor definido para a chave aplicada para marcar e categorizar este componente. | true |
AtlasDatabaseUser.spec.passwordSecretRef
SenhaSecret é uma referência ao Segredo que mantém a senha do usuário.
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | O nome é | true |
AtlasDatabaseUser.spec.projectRef
projectRef é uma referência ao recurso pai AtlasProject. Mutualmente exclusivo com o campo"externalProjectRef".
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | Nome do Recurso Kubernetes | true |
| string | Namespace do Recurso Kubernetes | false |
AtlasDatabaseUser.spec.scopes
ScopeSpec, se estiver presente, um usuário de banco de dados só terá acesso ao recurso indicado (Cluster ou Atlas Data Lake), se nenhum for fornecido, ele terá acesso a todos. É altamente recomendável restringir o acesso dos usuários de banco de dados apenas a um conjunto limitado de recursos.
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | O nome é um | true |
| enum | O tipo é um | true |
AtlasDatabaseUser.status
AtlasDatabaseUserStatus define o estado observado do AtlasProject
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| [] objeto | Condições é a lista de status que mostra o estado atual do Recurso Personalizado do Atlas | true |
| string |
| false |
| inteiro |
| false |
| string |
| false |
AtlasDatabaseUser.status. conditions
A condição descreve o estado de um recurso personalizado do Atlas em um determinado ponto.
Name | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| string | Status da condição; um de verdadeiro, falso, desconhecido. | true |
| string | Tipo de condição do Atlas recurso. | true |
| string | Última vez que a condição fez a transição de um status para outro. Representado no formato | false |
| string | Um | false |
| string | O | false |