AtlasDatabaseUser
カスタム リソース
項目一覧
AtlasDatabaseUser
カスタム リソースは、Atlas プロジェクト内のデータベースユーザーを構成します。 データベースユーザーは、クラスターごとではなく、プロジェクトごとに作成します。 したがって、 AtlasDatabaseUser
カスタム リソース構成には AtlasProject
カスタム リソースへの参照が含まれています。 事前にAtlasProject
カスタム リソースを作成してください。
重要
カスタム リソースはデフォルトでオブジェクトを削除しなくなりました
Atlas Kubernetes Operator はカスタムリソース構成ファイルを使用して Atlas2.0 構成を管理しますが、 Atlas Kubernetes Operator 以降、 Kubernetesで削除したカスタム リソースは Atlas で削除されなくなりました(デフォルトでは )。代わりに、Atlas Kubernetes Operator は Atlas 内のそれらのリソースの管理を停止します。例、 Kubernetesで カスタム リソースを削除すると、デフォルトでは、Atlas Kubernetes Operator
AtlasProject
は Atlas から対応するプロジェクトを自動的に削除しなくなります。この動作の変更は、誤ってまたは予期せずに削除されるのを防ぐことを目的としています。この動作を Atlas Kubernetes Operator2 0より前に使用されていたデフォルトに戻す方法などの詳細については、 をご覧ください。 については、「 新しいデフォルト: Atlas Kubernetes Operator の削除保護 」を参照してください。20 。同様に、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を使用して次のいずれかのアクションを実行します。
新しいデータベースユーザーを作成します。
既存のユーザーを更新します。
データベースユーザーを作成する前に、Ops シークレット を作成する必要があります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 クラスターに接続できます。 シークレットを ファイルとしてアプリケーション ポッドにマウントでき、アプリケーション プロセスはこれらのファイルを読み取ってデータを取得できます。
次の例では、シークレットを環境変数としてマウントしています。
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: 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.scopes
がGoogle Cloud Platformクラスターのみに設定されている AtlasDatabaseUser
カスタム リソース仕様を示しています。
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 roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project awsIAMType: USER
パラメーター
このセクションでは、使用可能な主要なAtlasDatabaseUser
カスタム リソース パラメータの一部について説明します。 使用可能なパラメーターの完全なリストについては、 Atlas Database Users APIを参照してください。 これらの説明、利用可能な例、 APIドキュメントを参照して、仕様をカスタマイズします。
spec.awsIAMType
型: string
任意
データベースユーザーが、ユーザーに関連付けられたAmazon WebAmazon Web Services Services IAM 認証情報で認証されるか、またはユーザーのロールで認証されるを示すラベル。値を指定しない場合、Atlas はデフォルト値の
NONE
を使用します。このパラメーターは以下を受け入れます。
なしAmazon Web ServicesAmazon Web Services IAM認証を使用しないユーザー。USERユーザーに関連付けられたAmazon WebAmazon Web Services Services IAM 認証情報で認証するユーザー。ROLEAmazon Web Servicesユーザーのロールに関連付けられたAmazon Web Services IAM 認証情報で認証するユーザー。
spec.connectionSecret.name
型: string
条件付き
Atlas Kubernetes Operator が Atlas に接続するために使用する組織IDとAPIキーを含む opaque secret の名前。指定されていない場合、Atlas Kubernetes Operator は次のいずれかにフォールバックします。
親
atlasProject
のspec.connectionSecretRef.name
パラメータデフォルトの
global
シークレット(親atlasProject
に対してspec.connectionSecretRef.name
が未定義の場合)
このパラメータは独立した CRD に必須です。
Atlas Kubernetes Operator
atlas.mongodb.com/type=credentials
は、不要な シークレット の監視を回避するために、ラベル の シークレット のみを監視します 。次の例ではシークレットにラベルを付けます。
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
spec.databaseName
型: string
必須
データベースユーザーが認証するデータベース。 データベースユーザーは、MongoDB にログインするためにユーザー名と認証データベースの両方を提供する必要があります。
データベース ユーザーがSCRAM-SHAで認証される場合、この値は
admin
である必要があります。データベース ユーザーがX.509で認証される場合、この値は
\$external
である必要があります。
spec.externalProjectRef.id
型: string
条件付き
データベースユーザーが属するプロジェクトのID 。 既存の Atlas プロジェクト のプロジェクトIDを指定する必要があります。このパラメータは、次のいずれかによって管理されるプロジェクトに属するデータベースユーザーに必要です。
Atlas Kubernetes Operator の別のインスタンス
Atlas Kubernetes Operator 以外のツール
Atlas Kubernetes Operator の同じインスタンスによって管理されるプロジェクトに属するデータベースユーザーの場合、
spec.externalProjectRef.id
を使用しない場合はspec.projectRef.name
を使用します。
spec.oidcAuthType
型: string
条件付き
データベースが提供された を認証する OIDC
spec.username
メソッド。データベースユーザーがOpenID Connectで認証される場合、この値は
IDP_GROUP
である必要があります。
spec.passwordSecretRef
型: string
条件付き
シークレット への参照 パスワードを含む。SCRAM-SHA認証メソッドでは、このパラメーターが必要です。
spec.projectRef.name
型: string
条件付き
データベースユーザーが属するプロジェクトの名前。 既存の
AtlasProject
カスタム リソース を指定する必要があります。このパラメーターは、同じインスタンスAtlas Kubernetes Operator によって管理されるプロジェクトに属するデータベースユーザーにのみ適用されます。次のいずれかによって管理されるプロジェクトに属するデータベースユーザーの場合、次のいずれかによって管理されます。
Atlas Kubernetes Operator の別のインスタンス
Atlas Kubernetes Operator 以外のツール
spec.externalProjectRef.name
を使用します。
spec.roles
タイプ: 配列
必須
ユーザーのロールと、ロールが適用されるデータベースまたはコレクションが格納されたリスト。 使用可能なパラメーターの完全なリストについては、「 Atlas Database Users API 」を参照してください。
spec.scopes.name
型: string
条件付き
データベースユーザーがアクセスできるクラスターを識別する、人間が判読可能なラベル。
spec.scopes
を指定した場合は、このパラメータを指定する必要があります。
spec.scopes.type
型: string
条件付き
データベースユーザーがアクセスできるリソースの種類を識別する、人間が判読可能なラベル。 Atlas Kubernetes Operator は現在、
CLUSTER
のみをサポートしています。spec.scopes
を指定した場合は、このパラメータを指定する必要があります。
spec.username
型: string
必須
MongoDB database またはコレクションへの認証に必要なユーザーを識別する、人間が判読可能なラベル。
データベースユーザーがOpenID Connectで認証される場合、この値は Atlas OIDC IdP 、その後にフォワードスラッシュ
/
とIdPグループ名が含まれる必要があります。データベースユーザーがAmazon Web Services IAM 認証情報で認証する場合、この値はAmazon Amazon WebAmazon Web Services Services IAMAmazon Web Services 認証情報で認証されるユーザー、または 認証 情報で認証されるユーザーのロールである必要があり 。
spec.x509Type
型: string
任意
X. データベースが提供された
spec.username
を認証する509メソッド。 値を指定しない場合、Atlas はデフォルト値のNONE
を使用します。このパラメーターは以下を受け入れます。
なしX.509 認証を使用しないユーザー。MANAGEDAtlas が管理する X.509 を使用するユーザー。
spec.databaseName
パラメータに\$external
を指定する必要があります。CUSTOMER自己管理型 X を使用するユーザー。 509 . この
x509Type
で作成されたユーザーには、spec.username
パラメータに CN(Common Name、共通名)が必要です。 詳しくは、 RFC2253 を参照してください。spec.databaseName
パラメータに\$external
を指定する必要があります。
APIから利用可能な構成パラメーターについては、「 Atlas Database Users API 」を参照してください。
現在、Atlas Kubernetes Operator は、Atlas Database Users APIから利用可能な次のパラメータをサポートしていません。
ldapAuthType
次のパラメーターを指定しないでください。
groupId
password
代わりに
spec.passwordSecretRef
を指定してください。