MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/ /
/ / /

AtlasDatabaseUser カスタム リソース

AtlasDatabaseUserカスタム リソースは、Atlas プロジェクト内のデータベースユーザーを構成します。 データベースユーザーは、クラスターごとではなく、プロジェクトごとに作成します。 したがって、 AtlasDatabaseUserカスタム リソース構成には AtlasProjectカスタム リソースへの参照が含まれています。 事前にAtlasProjectカスタム リソースを作成してください。

重要

カスタム リソースはデフォルトでオブジェクトを削除しなくなりました

  • Atlas Kubernetes Operator はカスタムリソース構成ファイルを使用して Atlas 構成を管理しますが、Atlas Kubernetes Operator2.0 以降、 Kubernetesで削除したカスタム リソースは Atlas で削除されなくなりました(デフォルトでは )。代わりに、Atlas Kubernetes Operator は Atlas 内のそれらのリソースの管理を停止します。 例、 Kubernetesで カスタム リソースを削除すると、デフォルトでは、Atlas Kubernetes Operator は AtlasAtlasProject から対応するプロジェクトを自動的に削除しなくなります。この動作の変更は、誤ってまたは予期せずに削除されるのを防ぐことを目的としています。 この動作を Atlas Kubernetes Operator. 以前に使用されていたデフォルトに戻す方法などの詳細については、「2 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

次の例えには、 AtlasProjectカスタム リソースへの参照が示されています。

spec:
projectRef:
name: my-project

Atlas Kubernetes Operator は、Atlas のデータベースユーザー構成が Kubernetes の構成と一致することを確認します。

Atlas Kubernetes Operator は、Atlas データベースユーザー APIを使用して次のいずれかのアクションを実行します。

  • 新しいデータベースユーザーを作成します。

  • 既存のユーザーを更新します。

データベースユーザーを作成する 前に、Atlas クラスターデータベースにログための単一の passwordフィールドを持つ不変のシークレットを作成する必要があります。

注意

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 クラスターに接続できます。 シークレットを ファイルとしてアプリケーション ポッドにマウントでき、アプリケーション プロセスはこれらのファイルを読み取ってデータを取得できます。

次の例では、シークレットを環境変数としてマウントしています。

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

次の例では、spec.scopes が省略されている AtlasDatabaseUser カスタムリソース仕様を示しています。

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

このカスタム リソースを作成すると、Atlas Kubernetes Operator は次のシークレットを作成します。

  • p1-aws-cluster-theuser

  • p1-gcp-cluster-theuser

次の例では、spec.scopesAtlasDatabaseUser Google Cloud クラスターのみに設定されている カスタムリソース仕様を示しています。

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

このカスタム リソースを更新すると、Atlas Kubernetes Operatortheuseraws-cluster から を削除します。また、Kubernetes クラスターからp1-aws-cluster-theuserシークレットも削除されます。

次の例は、 X.509 認証を使用したAtlasDatabaseUserのカスタム リソース仕様を示しています。

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

次の例では、 OIDCを使用したAtlasDatabaseUserのカスタム リソース仕様を示しています。

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

次の例は、AtlasDatabaseUser AmazonAmazon 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

AtlasDatabaseUser は、Atlas Database ユーザーAPIのスキーマです

Name
タイプ
説明
必須

apiVersion

string

atlas.mongodb.com/v1

true

kind

string

AtlasDatabaseUser

true

metadata

オブジェクト

metadataフィールドのフィールドについては、 Kubernetes API のドキュメントを参照してください。

true

spec

オブジェクト

AtlasDatabaseUserSpec は、Atlas 検証におけるデータベースユーザーのターゲット状態を定義します。

  • (has(自分.``externalProjectRef``) &+ !has(Self.``projectRef``)) || (ディレクティブを使用したプロジェクト参照)externalProjectRefprojectRef

  • (has(自分.``externalProjectRef``) &= は(自己.`` connectionSecret``)) ||他のプロジェクトを参照するときに、ローカル接続のシークレットを定義する必要があります:

false

status

オブジェクト

AtlasDatabaseUserStatus の観察された状態を定義します AtlasProject

false

AtlasDatabaseUserSpec は、Atlas のデータベースユーザーのターゲット状態を定義します

Name
タイプ
説明
必須

roles

[]オブジェクト

ロールは、このユーザーの rolesroles が適用されるデータベースとコレクションの配列です。ロールにより、ユーザーは指定されたデータベースに対して特定の アクション を実行できます。

true

username

string

ユーザー名は MongoDB に認証するための username です。MongoDB に認証するユーザーを表す、人間が判読可能なラベル。このラベルの形式は、認証の方法によって異なります。AWS IAM の場合: 値は IAM ユーザーまたはロールの AWS ARN である必要があります。 OIDCワークロードまたはワークフォースの場合: 値は Atlas OIDC IdP ID、「/」、その後に IdP グループ名が続く必要があります。プレーンテキスト認証の場合、値は任意のものにすることができます。

true

awsIamType

列挙

新しいデータベースユーザーがAmazon Web Services (AWS )で認証されるかどうかを示す、人間が判読可能なラベル。ユーザーまたはユーザーのロールに関連付けられた ID とアクセス管理(IAM )の認証情報 列挙:NONE USER、 、ROLE デフォルト:NONE

false

connectionSecret

オブジェクト

Atlas API の秘密キーと公開キーを含むシークレットの名前。

false

databaseName

string

DatabaseName は、Atlas がユーザーを認証する データベース です。ユーザーがAWSIAM 、x.509 、LDAP 、またはOIDC Workload で認証される場合、この値は "$external" になります。ユーザーがSCRAM -SHA またはOIDC Workforce で認証される場合、この値は「admin」である必要があります。デフォルト値は「admin」です。デフォルト: admin

false

deleteAfterDate

string

DeleteAfterDate は、Atlas がユーザーを削除する UTCISO 8601 の日付と時刻形式のタイムスタンプです。指定する日付は、今後、1 週間以内である必要があります。

false

description

string

このデータベースユーザーの説明。最大 100 文字。

false

externalProjectRef

オブジェクト

externalProjectRef は親 AtlasプロジェクトID を保持します。 "projectRef"フィールドと排他関係にあります。

false

labels

[]オブジェクト

ラベルは、データベースユーザー をタグ付けして分類するキーと値のペアを含む配列です。各キーと値の最大長は 255 文字です。

false

oidcAuthType

列挙

新しいデータベースユーザー名がOIDC フェデレーション認証を使用しているかどうかを示す、人間に判読可能なラベル。フェデレーション認証グループ(ワークフォース)を作成するには、このフィールドにIDP_GROUP の値を指定します。フェデレーション認証ユーザー(ワークロード)を作成するには、このフィールドにUSER の値を指定します。列挙:NONE IDP_GROUP、 、USER デフォルト:NONE

false

passwordSecretRef

オブジェクト

PasswordSecret は、ユーザーのパスワードを保持する シークレット への参照です。

false

projectRef

オブジェクト

projectRef は親の AtlasProjectリソースへの参照です。 "externalProjectRef"フィールドと排他関係にあります。

false

scopes

[]オブジェクト

スコープは、このユーザーがアクセスできるクラスターと Atlas Data Lake の配列です。

false

x509Type

列挙

X509 Type は、指定されたユーザー名509 をデータベースが認証する X. 方式です。列挙:NONEMANAGEDCUSTOMER デフォルト:NONE

false

roleSpec を使用すると、ユーザーは指定されたデータベースに対して特定の アクション を実行できます。管理データベースのロールには、他のデータベースにも適用される特権を含めることができます。

Name
タイプ
説明
必須

databaseName

string

DatabaseName は、ユーザーが指定されたロールを持つデータベースです。管理データベースのロールには、他のデータベースに適用する特権を含めることができます。

true

roleName

string

RoleName は、ロールの名前です。この値は、 組み込みロール またはカスタムロールにすることができます。

true

collectionName

string

CollectionName は、ロールが適用されるコレクションです。

false

Atlas API の秘密キーと公開キーを含むシークレットの名前。

Name
タイプ
説明
必須

name

string

参照されているリソースの名前の詳細情報: https://kubernetes.io/docs/concers/overview/work-with-objects/names/#names

true

externalProjectRef は親 AtlasプロジェクトIDを保持します。 "projectRef"フィールドと排他関係にあります。

Name
タイプ
説明
必須

id

string

ID は、AtlasプロジェクトID です。

true

labels

Name
タイプ
説明
必須

key

string

このコンポーネントをタグ付けおよび分類するために適用されるキー。

true

value

string

このコンポーネントをタグ付けおよび分類するために適用されるキーに設定された値。

true

PasswordSecret は、ユーザーのパスワードを保持する シークレット への参照です。

Name
タイプ
説明
必須

name

string

名前はKubernetesリソースの name です

true

projectRef は、親の Atlas Projectリソースへの参照です。 "external ProjectRef"フィールドと排他関係にあります。

Name
タイプ
説明
必須

name

string

Kubernetesリソースの名前

true

namespace

string

Kubernetesリソースの名前空間

false

Scopes が存在する場合、データベースユーザーは指定されたリソース(クラスターまたは Atlas Data Lake)にのみアクセスでき、指定されていない場合はすべてにアクセスできます。データベースユーザーのアクセスは、限られたリソース セットにのみ制限することを強くお勧めします。

Name
タイプ
説明
必須

name

string

名前は、ユーザーがアクセスできるクラスターまたは Atlas Data Lake の name です。

true

type

列挙

typeタイプは、ユーザーがアクセスできるリソースの です。列挙:CLUSTERDATA_LAKE

true

AtlasDatabaseUserStatus は、AtlasProject の監視された状態を定義します

Name
タイプ
説明
必須

conditions

[]オブジェクト

条件は、Atlas カスタム リソースの現在の状態を示すステータスのリストです

true

name

string

UserName は、データベースユーザーの現在の name です。

false

observedGeneration

integer

ObservedGeneration は、Atlas 演算子が認識しているリソース仕様の生成を示します。 Atlas 演算子は、リソースの調整を開始するとすぐに、このフィールドをメタデータ.生成 の値に更新します。形式: int64

false

passwordVersion

string

PasswordVersion は、Atlas 演算子が認識しているパスワード シークレットの 'ResourceVersion' です:

false

条件 は、 特定の点における Atlas カスタム リソースの状態を表します。

Name
タイプ
説明
必須

status

string

条件のステータス。 True、False、Unknown のいずれか 1 つ。

true

type

string

Atlas カスタム リソース条件のタイプ。

true

lastTransitionTime

string

条件があるステータスから別のステータスに最後に移行した時刻。ISO8601 形式で表されます。形式: 日時

false

message

string

移行に関する詳細を提供する message

false

reason

string

条件の最後の移行の reason

false

戻る

AtlasDeployment

項目一覧