Menu Docs
Página inicial do Docs
/ /
Kubernetes Operator do MongoDB Atlas
/

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
  • Parâmetros

O recurso personalizado do AtlasDatabaseUser configura o trigger de banco de dados em um projeto do Atlas. Crie trigger de banco de dados por projeto, não por cluster. Portanto, a configuração do recurso personalizado AtlasDatabaseUser contém uma referência ao recurso personalizadoAtlasProject . Crie o recurso personalizadoAtlasProject 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 excluídos no Atlas. Em vez disso, o Atlas Kubernetes Operator simplesmente para de gerenciar estes recursos. Por exemplo, se você excluir um AtlasProject Recurso Personalizado do no Kubernetes, o Atlas Kubernetes Operator não excluirá mais automaticamente o projeto correspondente do Atlas, evitando exclusões acidentais ou inesperadas. Para saber mais, incluindo como reverter este comportamento para o padrão anterior ao Atlas Kubernetes Operator 2.0, consulte Novo padrão: Proteção de exclusão no Atlas Kubernetes Operator 2.0.

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

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
connectionStringStandard
URI de conexão mongodb:// pública.
connectionstringStandardSrv
URI de conexão mongodb+srv:// pública.
username
Nome que identifica o utilizador do banco de dados.
password
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>.

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

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

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.

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

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

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.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.

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.

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

Obrigatório

Nome do projeto ao qual o trigger de banco de dados pertence. Você deve especificar um Recurso PersonalizadoAtlasProject existente.

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

Tipo: array

Opcional

Lista que contém os clusters onde o usuário é criado.

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 especificou spec.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 .

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 de NONE.

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 o parâmetro spec.databaseName .

CLIENTE

Usuário que usa o X.509. Os usuários criados com este x509Type exigem um Nome Comum (CN) no parâmetro spec.username . Para saber mais, consulte RFC 2253.

Você deve especificar \$external para o parâmetro spec.databaseName .

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:

  • awsIAMType

  • ldapAuthType

Não especifique os seguintes parâmetros:

← AtlasDeployment Recurso personalizado