AtlasDatabaseUserカスタム リソースは、Atlas プロジェクト内のデータベースユーザーを構成します。 データベースユーザーは、クラスターごとではなく、プロジェクトごとに作成します。 したがって、 AtlasDatabaseUserカスタム リソース構成には AtlasProjectカスタム リソースへの参照が含まれています。 事前にAtlasProjectカスタム リソースを作成してください。
重要
カスタム リソースはデフォルトでオブジェクトを削除しなくなりました
Atlas Kubernetes Operator はカスタムリソース構成ファイルを使用して Atlas 構成を管理しますが、Atlas Kubernetes Operator2.0 以降、 Kubernetesで削除したカスタム リソースは Atlas で削除されなくなりました(デフォルトでは )。代わりに、Atlas Kubernetes Operator は Atlas 内のそれらのリソースの管理を停止します。 例、 Kubernetesで カスタム リソースを削除すると、デフォルトでは、Atlas Kubernetes Operator は Atlas
AtlasProjectから対応するプロジェクトを自動的に削除しなくなります。この動作の変更は、誤ってまたは予期せずに削除されるのを防ぐことを目的としています。 この動作を 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 | 説明 |
|---|---|
| パブリック |
| パブリック |
| データベースユーザーを識別する名前。 |
| データベースユーザーのパスワード。 |
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-theuserp1-gcp-cluster-theuser
スコープを持つデータベースユーザー
次の例では、spec.scopes がAtlasDatabaseUser 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 Operatortheuser はaws-cluster から を削除します。また、Kubernetes クラスターからp1-aws-cluster-theuserシークレットも削除されます。
X.509 認証を持つデータベースユーザー
次の例は、 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 認証を持つデータベースユーザー
次の例では、 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
Amazon Web ServicesAmazon Web Services IAM 認証を持つデータベースユーザー
次の例は、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
AtlasDatabaseUser は、Atlas Database ユーザーAPIのスキーマです
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | atlas.mongodb.com/v1 | true |
| string |
| true |
| オブジェクト |
| true |
| オブジェクト |
| false |
| オブジェクト |
| false |
AtlasDatabaseUser.spec
AtlasDatabaseUserSpec は、Atlas のデータベースユーザーのターゲット状態を定義します
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| []オブジェクト | ロールは、このユーザーの | true |
| string | ユーザー名は | true |
| 列挙 | 新しいデータベースユーザーがAmazon Web Services ( | false |
| オブジェクト | Atlas | false |
| string |
| false |
| string |
| false |
| string | このデータベースユーザーの説明。最大 100 文字。 | false |
| オブジェクト |
| false |
| []オブジェクト | ラベルは、データベースユーザー をタグ付けして分類するキーと値のペアを含む配列です。各キーと値の最大長は 255 文字です。 | false |
| 列挙 | 新しいデータベースユーザー名が | false |
| オブジェクト |
| false |
| オブジェクト |
| false |
| []オブジェクト | スコープは、このユーザーがアクセスできるクラスターと Atlas Data Lake の配列です。 | false |
| 列挙 | X509 Type は、指定されたユーザー名509 をデータベースが認証する X. 方式です。列挙: | false |
AtlasDatabaseUser.spec.roles
roleSpec を使用すると、ユーザーは指定されたデータベースに対して特定の アクション を実行できます。管理データベースのロールには、他のデータベースにも適用される特権を含めることができます。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string |
| true |
| string |
| true |
| string |
| false |
AtlasDatabaseUser.spec. connectionSecret
Atlas API の秘密キーと公開キーを含むシークレットの名前。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | 参照されているリソースの名前の詳細情報: https://kubernetes.io/docs/concers/overview/work-with-objects/names/#names | true |
AtlasDatabaseUser.spec.externalProjectRef
externalProjectRef は親 AtlasプロジェクトIDを保持します。 "projectRef"フィールドと排他関係にあります。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string |
| true |
AtlasDatabaseUser.spec. labels
labels
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | このコンポーネントをタグ付けおよび分類するために適用されるキー。 | true |
| string | このコンポーネントをタグ付けおよび分類するために適用されるキーに設定された値。 | true |
AtlasDatabaseUser.spec.passwordSecretRef
PasswordSecret は、ユーザーのパスワードを保持する シークレット への参照です。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | 名前はKubernetesリソースの | true |
AtlasDatabaseUser.spec.projectRef
projectRef は、親の Atlas Projectリソースへの参照です。 "external ProjectRef"フィールドと排他関係にあります。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | Kubernetesリソースの名前 | true |
| string | Kubernetesリソースの名前空間 | false |
AtlasDatabaseUser.spec.scopes
Scopes が存在する場合、データベースユーザーは指定されたリソース(クラスターまたは Atlas Data Lake)にのみアクセスでき、指定されていない場合はすべてにアクセスできます。データベースユーザーのアクセスは、限られたリソース セットにのみ制限することを強くお勧めします。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | 名前は、ユーザーがアクセスできるクラスターまたは Atlas Data Lake の | true |
| 列挙 |
| true |
AtlasDatabaseUser.status
AtlasDatabaseUserStatus は、AtlasProject の監視された状態を定義します
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| []オブジェクト | 条件は、Atlas カスタム リソースの現在の状態を示すステータスのリストです | true |
| string |
| false |
| integer |
| false |
| string |
| false |
AtlasDatabaseUser.status.条件
条件 は、 特定の点における Atlas カスタム リソースの状態を表します。
Name | タイプ | 説明 | 必須 |
|---|---|---|---|
| string | 条件のステータス。 True、False、Unknown のいずれか 1 つ。 | true |
| string | Atlas カスタム リソース条件のタイプ。 | true |
| string | 条件があるステータスから別のステータスに最後に移行した時刻。 | false |
| string | 移行に関する詳細を提供する | false |
| string | 条件の最後の移行の | false |