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 (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.
Atlas Kubernetes Operator does one of the following actions using the Atlas Database Users API:
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 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
By default, Atlas Kubernetes Operator creates the database user connection secret for each cluster in the same project that the AtlasDatabaseUser references. You can change this behavior with the spec.scopes parameter. This parameter restricts the clusters where the database user gets created. The name of the connection secret uses the following format: <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
The following example shows an AtlasDatabaseUser custom resource specification with spec.scopes omitted:
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
The following example shows an AtlasDatabaseUser custom resource specification with spec.scopes set to the Google Cloud cluster only:
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 de 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 dados com AWS IAM autenticação
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
This section describes some of the key AtlasDatabaseUser custom resource parameters available. For a full list of parameters available, see the Atlas Database Users API. Refer to these descriptions, the available examples, and the API documentation to customize your specifications.
spec.awsIamTypeTipo: string
Opcional
Etiqueta que indica se o usuário de banco de dados se autentica com as credenciais do Amazon Web Services (AWS) Identity and Access Management (IAM) associadas ao usuário ou à função do usuário. Se você não especificar um valor, o Atlas usará 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.nameTipo: string
Condicional
Nome do segredo opaco segredo 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.namedoatlasProjectpaiO segredo
globalpadrão, sespec.connectionSecretRef.nameestiver indefinido para oatlasProjectpai
Este parâmetro é obrigatório para CRDs independentes.
O Atlas Kubernetes
atlas.mongodb.com/type=credentialsOperator 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
spec.databaseNameTipo: string
Obrigatório
Database against which the database user authenticates. Database users must provide both a username and authentication database to log into MongoDB.
If the database user authenticates with SCRAM-SHA, this value must be
admin.Se o trigger de banco de dados se autenticar com X.509, esse valor deverá ser
\$external.If the database user authenticates with OpenID Connect, this value must be
$external.
spec.descriptionTipo: string
Opcional
Descrição deste usuário de banco de dados com até 100 caracteres.
spec.externalProjectRef.idTipo: string
Condicional
ID of the project to which the database user belongs. You must specify the project ID of an existing Atlas Project. This parameter is required for database users who belong to projects managed by either:
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.namese você não utilizar ospec.externalProjectRef.id.
spec.oidcAuthTypeTipo: string
Condicional
OIDC method by which the database authenticates the provided
spec.username.If the database user authenticates with OpenID Connect, this value must be
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.
You must specify
$externalfor thespec.databaseNameparameter.
spec.passwordSecretRefTipo: 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.nameTipo: string
Condicional
Nome do projeto ao qual o usuário de banco de dados de dados pertence. Você deve especificar um
AtlasProjectRecurso 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.rolesTipo: 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 de banco de dados do Atlas.
spec.scopes.nameTipo: string
Condicional
Human-readable label that identifies the cluster that the database user can access. You must specify this parameter if you specified
spec.scopes.
spec.scopes.typeTipo: string
Condicional
Human-readable label that identifies the resource type that the database user can access. Atlas Kubernetes Operator currently supports only
CLUSTER. You must specify this parameter if you specifiedspec.scopes.
spec.usernameTipo: string
Obrigatório
Rótulo legível por humanos que identifica o usuário necessário para autenticar no banco de MongoDB database .
If the database user authenticates with OpenID Connect, this value must be your Atlas OIDC IdP followed by a forward slash
/and your IdP group name.Se o usuário de banco de dados se autenticar com as credenciais do Amazon Web Services IAM, esse valor deverá ser o usuário que se autentica com as credenciais do Amazon Web Services IAM ou a função do usuário que se autentica com as credenciais do Amazon Web Services IAM no formato de nome de recurso da Amazon.
spec.x509TypeTipo: string
Opcional
X.509 method by which the database authenticates the provided
spec.username. If you don't specify a value, Atlas uses the default value ofNONE.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.
You must specify
\$externalfor thespec.databaseNameparameter.CLIENTE
Usuário que usa o X.509 autogerenciado. Os usuários criados com este
x509Typeexigem um Nome Comum (CN) no parâmetrospec.username. Para saber mais, consulte RFC 2253.You must specify
\$externalfor thespec.databaseNameparameter.
For the configuration parameters available from the API, see the Atlas Database Users API.
Currently, Atlas Kubernetes Operator does not support the following parameters available from the Atlas Database Users API:
ldapAuthType
Não especifique os seguintes parâmetros:
groupIdpasswordSpecify
spec.passwordSecretRefinstead.