AtlasCustomRole
自定义资源
AtlasCustomRole
自定义资源定义了 自定义数据库角色,以便为数据库用户分配权限。
要在给定项目中创建此自定义角色,您必须:
AtlasProject
AtlasCustomRole
对于使用Atlas Kubernetes Operator管理的项目,在 自定义资源中引用 自定义资源名称AtlasCustomRole
对于不使用Atlas Kubernetes Operator管理的项目,请在 自定义资源中引用Atlas项目的项目ID
重要
自定义资源不再默认删除对象
Atlas Kubernetes Operator使用自定义资源配置文件来管理Atlas配置,但从Atlas Kubernetes Operator2.0 开始,您在Kubernetes中删除的自定义资源不再(默认)在Atlas中删除。相反, Atlas Kubernetes Operator只是停止管理Atlas中的这些资源。示例,如果您在Kubernetes中删除
AtlasProject
自定义资源,默认, Atlas Kubernetes Operator不再自动从Atlas中删除相应的项目。这种行为更改旨在帮助防止意外删除。要学习;了解详情,包括如何将此行为恢复为Atlas Kubernetes Operator2 之前使用的默认行为。0 ,请参阅新默认值: Atlas Kubernetes Operator中的删除保护2 。0 。同样,如果您使用Atlas Kubernetes Operator从Kubernetes中的Atlas项目中删除团队,则Atlas Kubernetes Operator不会从Atlas中删除团队。
显式定义所需的配置详细信息,以避免隐式使用默认Atlas配置值。在某些情况下,继承Atlas默认值可能会导致协调循环,从而阻止自定义资源实现
READY
状态。示例,在AtlasDeployment
自定义资源中显式定义所需的自动伸缩行为(如所包含的示例所示)可确保自定义资源中的静态实例大小不会重复应用于已启用自动伸缩的Atlas部署。autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Atlas Kubernetes Operator使用Atlas自定义数据库角色API资源执行以下操作之一:
创建新的自定义数据库角色。
更新现有的自定义数据库角色。
示例
基本示例
以下示例显示了一个定义 shard-operator
自定义角色的 AtlasCustomRole
自定义资源,该角色具有备份和监控my-project
项目中的分片集群的特权。
apiVersion: atlas.mongodb.com/v1 kind: AtlasCustomRole metadata: name: shard-operator-role namespace: mongodb-atlas-system labels: mongodb.com/atlas-reconciliation-policy: keep spec: projectRef: name: my-project namespace: my-operator-namespace role: name: my-role actions: - name: getShardMap resources: cluster: true - name: shardingState resources: cluster: true - name: connPoolStats resources: cluster: true - name: getLog resources: cluster: true inheritedRoles: - name: operator-role-1 role: backup
独立 CRD 示例
以下示例显示了一个独立于AtlasCustomRole
的 CRD,它定义了基本示例中定义的相同 shard-operator
自定义角色。通过此自定义资源定义,您可以在项目中创建此角色,而该项目并非在您定义此资源的Atlas Kubernetes Operator实例中管理。要启用独立操作,必须使用externalProjectRef
而不是projectRef
,并且必须直接提供connectionSecret
,因为此资源无法从其父项目继承API凭证。
apiVersion: atlas.mongodb.com/v1 kind: AtlasCustomRole metadata: name: shard-operator-role namespace: mongodb-atlas-system labels: mongodb.com/atlas-reconciliation-policy: keep spec: externalProjectRef: id: 671998971c8520583f24f411 connectionSecret: name: my-atlas-key role: name: my-role actions: - name: getShardMap resources: cluster: true - name: shardingState resources: cluster: true - name: connPoolStats resources: cluster: true - name: getLog resources: cluster: true inheritedRoles: - name: operator-role-1 role: backup
参数
本部分介绍可用的AtlasTeam
自定义资源参数。
metadata.name
类型:字符串
必需
AtlasProject
自定义资源用于将此团队添加到项目中的名称。
metadata.namespace
类型:字符串
Optional
要包含
atlasTeam
自定义资源的default
以外的命名空间。 如果定义自定义命名空间,则必须将其添加到 字段中的AtlasProject
自定义资源spec.teams.teamRef.namespace
。
spec.connectionSecret.name
类型:字符串
可选的
不透明密钥 IDAPIAtlas Kubernetes OperatorAtlas的名称,其中包含Atlas Kubernetes Operator用于连接到Atlas的组织ID和API密钥。如果未指定, Atlas Kubernetes Operator会回退到以下任一项:
父级
atlasProject
的spec.connectionSecretRef.name
参数默认
global
密钥(如果未为父atlasProject
定义spec.connectionSecretRef.name
Atlas Kubernetes Operator 仅监视带有标签 的密钥,以避免监视不必要的
atlas.mongodb.com/type=credentials
密钥 。以下示例标记了密钥:
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
spec.externalProjectRef.id
类型:字符串
可选的
自定义角色所属项目的ID 。您必须指定现有Atlas项目的项目ID 。对于属于以下任一机构托管的项目的自定义角色,需要此参数:
Atlas Kubernetes Operator的不同实例
Atlas Kubernetes Operator以外的工具
对于属于同一Atlas Kubernetes Operator实例托管的项目的自定义角色,如果您不使用
spec.externalProjectRef.id
,请使用spec.projectRef.name
。一个自定义角色只能属于一个项目。要为多个项目定义相同的自定义角色,请为每个项目创建自定义资源定义。
spec.projectRef.name
类型:字符串
可选的
自定义角色所属项目的名称。您必须指定现有的 自定义资源。此参数仅适用于属于由同一实例Atlas Kubernetes
AtlasProject
Operator托管的项目的自定义角色。对于属于以下任一机构托管的项目的自定义角色:
Atlas Kubernetes Operator的不同实例
Atlas Kubernetes Operator以外的工具
使用
spec.externalProjectRef.id
。一个自定义角色只能属于一个项目。要为多个项目定义相同的自定义角色,请为每个项目创建自定义资源定义。
spec.projectRef.namespace
类型:字符串
可选的
AtlasProject
中指定的spec.projectRef.name
自定义资源所在的命名空间。对于属于以下任一机构托管的项目的自定义角色:
Atlas Kubernetes Operator的不同实例
Atlas Kubernetes Operator以外的工具
请勿设立此参数。
spec.role.actions
类型:数组
Optional
表示角色授予的各个权限操作的对象列表。
spec.role.actions.name
类型:字符串
Optional
标识权限动作的标签。有关Atlas Administration API中可用操作的完整列表,请参阅 /reference/custom-role-actions。
spec.role.actions.resources
类型:数组
Optional
对象列表,这些对象指示已授予该操作的数据库和集合,或者指示已对集群资源授予该操作。
spec.role.actions.resources.cluster
类型:布尔值
Optional
指示已在集群资源上授予该操作的标志。
spec.role.actions.resources.collection
类型:字符串
Optional
人类可读标签,用于标识对其授予操作的集合。 如果该值为空string ,则对
spec.role.actions.resources.database
参数中指定的数据库内的所有集合授予该操作。注意
此参数与
spec.role.actions.resources.cluster
参数互斥。
spec.role.actions.resources.database
类型:字符串
Optional
人类可读标签,用于标识授予操作的数据库。
注意
此参数与
spec.role.actions.resources.cluster
参数互斥。