AtlasDatabaseUser
Recurso personalizado
Nesta página
- Segredos de conexão
- Exemplos
- projeto e clusters
- Usuário do banco de dados sem escopos
- Usuário do banco de dados com escopos
- Trigger de banco de dados com autenticação X.509
- Usuário do banco de dados com autenticaçãoOIDC
- Usuário de banco de Amazon Web Services dados com autenticação IAM do Amazon Web Services
- Parâmetros
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 usa 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
AtlasProject
Recurso 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.,0 consulte Novo padrão: proteção de exclusão no Atlas Kubernetes 2 Operator.0.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 do banco de dados, você deve criar um segredo opaco com um único password
campo para fazer login no banco de dados do Atlas cluster.
Observação
Você deve criar o segredo no mesmo namespace onde o AtlasDatabaseUser
recurso personalizado do está localizado.
O exemplo a seguir cria um segredo:
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
Atlas Kubernetes Operator observa segredos apenas com a etiqueta atlas.mongodb.com/type=credentials
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 conexão |
| 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 de dados para cada cluster no mesmo projeto que o AtlasDatabaseUser
faz referência. Você pode alterar este comportamento com o parâmetro spec.scopes
. Este parâmetro restringe os clusters onde o usuário de banco de dados de dados é criado. O nome do segredo de conexão usa 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 seguinte 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: 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-theuser
p1-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 somente para o cluster da GCP :
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 roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project awsIAMType: USER
Parâmetros
Esta seção descreve alguns dos principais parâmetros de recursos personalizados AtlasDatabaseUser
disponíveis. Para obter uma lista completa dos parâmetros disponíveis, consulte a API Atlas Database Users. Consulte estas descrições, os exemplos disponíveis e a documentação da API para personalizar suas especificações.
spec.awsIAMType
Tipo: string
Opcional
Etiqueta que indica se o usuário de banco de dados de dados se autentica com as credenciais do Amazon Web Services Amazon Web Services IAM associadas ao usuário ou à função do usuário. Se você não especificar um valor, o Atlas utilizará o valor padrão de
NONE
.Este parâmetro aceita:
none
Usuário que não usa a autenticação Amazon Web Services IAM do Amazon Web Services.
USUÁRIO
Usuário que se autentica com as credenciais Amazon Web Services do Amazon Web Services IAM associadas ao usuário.
FUNÇÃO
Usuário que se autentica com as credenciais Amazon Web Services do Amazon Web Services IAM associadas à função do usuário.
spec.connectionSecret.name
Tipo: string
Condicional
Nome do segredo opaco que contém o ID da organização e as chaves de API que o Atlas Kubernetes Operator usa para se conectar ao Atlas. Se não for especificado, o Atlas Kubernetes Operator voltará para:
O parâmetro
spec.connectionSecretRef.name
doatlasProject
paiO segredo
global
padrão, sespec.connectionSecretRef.name
estiver indefinido para oatlasProject
pai
Este parâmetro é obrigatório para CRDs independentes.
Atlas Kubernetes Operator observa segredos apenas com a etiqueta
atlas.mongodb.com/type=credentials
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
spec.databaseName
Tipo: string
Obrigatório
Banco de dados no qual o utilizador de banco de dados se autentica. Os usuários do banco de dados devem fornecer um nome de usuário e um banco de dados de autenticação para fazer login no MongoDB.
Se o usuário do banco de dados se autenticar com SCRAM-SHA, esse valor deverá ser
admin
.Se o trigger de banco de dados se autenticar com X.509, esse valor deverá ser
\$external
.Se o usuário de banco de dados de dados se autenticar com o OpenID Connect, esse valor deverá ser
$external
.
spec.externalProjectRef.id
Tipo: string
Condicional
ID do projeto ao qual o usuário de banco de dados de dados pertence. Você deve especificar o ID do projeto de um Atlas Project existente. Esse parâmetro é necessário para usuários de banco de dados de dados que pertencem a projetos gerenciados por:
Uma instância diferente do Atlas Kubernetes Operator
Ferramentas diferentes do Atlas Kubernetes Operator
Para usuários do banco de dados de dados que pertencem a projetos gerenciados pela mesma instância do Atlas Kubernetes Operator, utilize o
spec.projectRef.name
se você não utilizar ospec.externalProjectRef.id
.
spec.oidcAuthType
Tipo: string
Condicional
Método OIDC pelo qual o banco de dados autentica o
spec.username
fornecido.Se o usuário de banco de dados de dados se autenticar com o OpenID Connect, esse valor deverá ser
IDP_GROUP
.Este parâmetro aceita:
none
Usuário que não usa autenticação OIDC.
USUÁRIO
Usuário que usa OIDC gerenciado pelo Atlas .
Você deve especificar
$external
para ospec.databaseName
parâmetro.
spec.passwordSecretRef
Tipo: string
Condicional
Referência ao segredo que contém a senha. O método de autenticação SCRAM-SHA exige este parâmetro.
spec.projectRef.name
Tipo: string
Condicional
Nome do projeto ao qual o usuário de banco de dados de dados pertence. Você deve especificar um
AtlasProject
Recurso Personalizado existente. Este parâmetro se aplica somente a usuários do banco de dados de dados que pertencem a projetos gerenciados pela mesma instância do Atlas Kubernetes Operator.Para usuários do banco de dados de dados que pertencem a projetos gerenciados por:
uma instância diferente do Atlas Kubernetes Operator
ferramentas diferentes do Atlas Kubernetes Operator
usar
spec.externalProjectRef.name
.
spec.roles
Tipo: array
Obrigatório
Lista que contém as funções do usuário e os bancos de dados ou collections nos quais as funções se aplicam. Para obter uma lista completa dos parâmetros disponíveis, consulte a API Usuários do Banco de Dados do Atlas.
spec.scopes.name
Tipo: string
Condicional
Rótulo legível por humanos que identifica o cluster que o usuário de banco de dados de dados pode acessar. Você deve especificar este parâmetro se especificou
spec.scopes
.
spec.scopes.type
Tipo: string
Condicional
Rótulo legível por humanos que identifica o tipo de recurso que o usuário do banco de dados pode acessar. Atualmente, o Atlas Kubernetes Operator suporta apenas
CLUSTER
. Você deve especificar este parâmetro se especificouspec.scopes
.
spec.username
Tipo: string
Obrigatório
Rótulo legível por humanos que identifica o usuário necessário para autenticar no banco de MongoDB database .
Se o usuário de banco de dados de dados se autenticar com o OpenID Connect, esse valor deverá ser seu IdP do Atlas OIDC seguido por uma barra
/
e seu nome de grupo IdP .Se o usuário de banco de dados de dados se autenticar com as Amazon Web Services credenciais IAM , esse valor deverá ser o usuário que se autentica com as credenciais Amazon Web Services do IAM ou a função do usuário que se autentica com as credenciais Amazon Web Services do IAM Amazon no formato de nome de recurso da .
spec.x509Type
Tipo: string
Opcional
Método X.509 pelo qual o banco de dados autentica o
spec.username
fornecido. Se você não especificar um valor, o Atlas utilizará o valor padrão deNONE
.Este parâmetro aceita:
none
Usuário que não usa autenticação X.509.
GERENCIADO
Usuário que usa X.509 managed pelo Atlas.
Você deve especificar
\$external
para ospec.databaseName
parâmetro.CLIENTE
Usuário que usa o X509 autogerenciado. . Os usuários criados com este
x509Type
exigem um Nome Comum (CN) no parâmetro. Para saber mais,spec.username
consulte RFC.2253Você deve especificar
\$external
para ospec.databaseName
parâmetro.
Para os parâmetros de configuração disponíveis a partir da API, consulte a API do Atlas Database Users.
Atualmente, o Atlas Kubernetes Operator não suporta os seguintes parâmetros disponíveis a partir da API de utilizadores de banco de dados Atlas:
ldapAuthType
Não especifique os seguintes parâmetros:
groupId
password
Especifique
spec.passwordSecretRef
em vez disso.