Docs 菜单
Docs 主页
/ /
MongoDB Atlas Kubernetes Operator
/

AtlasDatabaseUser 自定义资源

AtlasDatabaseUser自定义资源配置Atlas项目中的数据库用户。 您可以为每个项目而不是每个集群创建数据库用户。 因此, AtlasDatabaseUser自定义资源配置包含对 AtlasProject自定义资源的引用。 事先创建AtlasProject自定义资源

重要

自定义资源定义优先

Atlas Kubernetes Operator使用自定义资源配置文件来管理Atlas配置。 每个自定义资源定义都会覆盖以其他方式指定的设置,例如在Atlas用户界面中。 如果您删除自定义资源, Atlas Kubernetes Operator会从Atlas中删除该对象,除非您使用注解来跳过删除。 要学习;了解更多信息,请参阅创建和更新进程以及删除进程。

以下示例显示了对AtlasProject自定义资源的引用:

spec:
projectRef:
name: my-project

Atlas Kubernetes Operator 确保 Atlas 中的数据库用户配置与 Kubernetes 中的配置相匹配。

Atlas Kubernetes Operator使用Atlas Database Users API执行以下操作之一:

  • 创建新的数据库用户。

  • 更新现有用户。

在创建数据库用户之前,您必须使用单个 字段创建不透明的密钥 password,以日志Atlas 集群数据库。

注意

您必须在 AtlasDatabaseUser自定义资源所在的同一命名空间中创建密钥。

以下示例将创建一个密钥:

kubectl create secret generic the-user-password --from-literal="password=P@@sword%"

Atlas Kubernetes Operator 仅监视带有标签 atlas.mongodb.com/type=credentials 的密钥,以避免监视不必要的密钥

以下示例标记了密钥:

kubectl label secret the-user-password atlas.mongodb.com/type=credentials

在 Atlas Kubernetes Operator 在 Atlas 中成功创建或更新数据库用户后,Atlas Kubernetes Operator 会在AtlasDatabaseUser自定义资源所在的同一命名空间中创建或更新连接密钥。

连接密钥包含连接到 Atlas 集群所需的所有信息,包括以下参数:

Parameter
说明

connectionStringStandard

公共mongodb://连接 URI

connectionstringStandardSrv

公共mongodb+srv://连接URI

username

标识数据库用户的名称。

password

数据库用户的密码。

在 Kubernetes 中运行的应用程序可以使用此信息连接到 Atlas 集群。 您可以将密钥作为文件挂载到应用程序 Pod,应用程序进程可以读取这些文件以获取数据。

以下示例显示将密钥安装为环境变量:

spec:
containers:
- name: test-app
env:
- name: "CONNECTIONSTRING"
valueFrom:
secretKeyRef:
name: project-cluster-basic-theuser
key: connectionStringStandardSrv

以下示例展示了如何将密钥安装为文件:

spec:
containers:
- name: test-app
volumeMounts:
- mountPath: /var/secrets/
name: theuser-connection
volumes:
- name: theuser-connection
secret:
secretName: project-cluster-basic-theuser

默认, Atlas Kubernetes Operator会为AtlasDatabaseUser引用的同一项目中的每个集群创建数据库用户连接密钥。 您可以使用spec.scopes参数更改此行为。 此参数限制创建数据库用户的集群。 连接密钥的名称使用以下格式: <project_name>-<cluster_name>-<db_user_name>

以下示例显示了 Atlas 项目以及引用该项目的集群:

apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
labels:
app.kubernetes.io/version: 1.6.0
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
labels:
app.kubernetes.io/version: 1.6.0
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
labels:
app.kubernetes.io/version: 1.6.0
spec:
name: gcp-cluster
projectRef:
name: my-project
providerSettings:
instanceSizeName: M10
providerName: GCP
regionName: EASTERN_US

以下示例显示了省略spec.scopesAtlasDatabaseUser自定义资源规范:

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
labels:
app.kubernetes.io/version: 1.6.0
spec:
roles:
- roleName: readWriteAnyDatabase
databaseName: admin
projectRef:
name: my-project
username: theuser
passwordSecretRef:
name: the-user-password

创建此自定义资源后,Atlas Kubernetes Operator 会创建以下密钥:

  • p1-aws-cluster-theuser

  • p1-gcp-cluster-theuser

以下示例显示了 AtlasDatabaseUser 自定义资源规范,其中spec.scopes仅设置为GCP集群:

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
labels:
app.kubernetes.io/version: 1.6.0
spec:
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project
username: theuser
passwordSecretRef:
name: the-user-password
scopes:
- type: CLUSTER
name: gcp-cluster

更新此资源后,Atlas Kubernetes Operator 将从 中删除theuser aws-cluster。它还从 Kubernetes 集群中删除p1-aws-cluster-theuser密钥。

以下示例显示了采用X.509 身份验证AtlasDatabaseUser自定义资源规范。

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
labels:
app.kubernetes.io/version: 1.6.0
spec:
username: CN=my-x509-authenticated-user,OU=organizationalunit,O=organization
databaseName: "\$external"
x509Type: "CUSTOMER"
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project

本部分介绍一些可用的关键AtlasDatabaseUser自定义资源参数。 有关可用参数的完整列表,请参阅Atlas数据库用户API 。 请参阅这些描述、可用示例和API文档,自定义您的规范。

spec.databaseName

类型:字符串

必需

数据库用户进行身份验证所依据的数据库。 数据库用户必须提供用户名和身份验证数据库才能登录 MongoDB。

如果数据库用户使用SCRAM-SHA进行身份验证,则此值必须为admin

如果数据库用户使用X.509进行身份验证,则此值必须为\$external

spec.passwordSecretRef

类型:字符串

可选的

参考包含密码的密钥。SCRAM-SHA身份验证方法需要此参数。

spec.projectRef.name

类型:字符串

必需

数据库用户所属项目的名称。 您必须指定现有的AtlasProject自定义资源。

spec.roles

类型:数组

必需

包含用户角色以及角色适用的数据库或集合的列表。 有关可用参数的完整列表,请参阅 Atlas数据库用户 API。

spec.scopes

类型:数组

Optional

包含创建用户的集群的列表。

spec.scopes.name

类型:字符串

可选的

人类可读标签,用于标识数据库用户可以访问权限的集群。 如果指定了spec.scopes ,则必须指定此参数。

spec.scopes.type

类型:字符串

可选的

人类可读标签,用于标识数据库用户可以访问的资源类型。 Atlas Kubernetes Operator 目前仅支持CLUSTER 。 如果指定了spec.scopes ,则必须指定此参数。

spec.username

类型:字符串

必需

人类可读标签,用于标识向MongoDB database或集合进行身份验证所需的用户。

如果数据库用户使用OpenID Connect进行身份验证,则此值必须是Atlas OIDC IdP ,后跟正斜杠/IdP群组名称。

如果数据库用户使用Amazon Web Services IAM凭证进行身份验证,则此值必须是使用Amazon Web Services IAM凭证进行身份验证的用户或使用Amazon Web Services IAM凭证进行身份验证的用户的角色(采用Amazon资源名称格式。) 。

spec.x509Type

类型:字符串

Optional

X. 509方法,数据库用于对提供的spec.username进行身份验证。 如果您不指定值,Atlas 将使用默认值NONE

此参数接受:

不使用 X.509 身份验证的用户。

托管

使用 Atlas 托管的 X.509 的用户。

您必须为\$external spec.databaseName参数指定 。

客户

使用自管理 X.509的用户。使用此 x509Type 创建的用户需要在 spec.username 参数中使用公用名 (CN)。要学习;了解详情,请参阅 RFC 2253。

您必须为\$external spec.databaseName参数指定 。

有关API提供的配置参数,请参阅 Atlas数据库用户 API。

目前,Atlas Kubernetes Operator 不支持 Atlas Database Users API 提供的以下参数:

  • awsIAMType

  • ldapAuthType

请勿指定以下参数:

后退

Atlas 部署

在此页面上