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: 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が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 databaseName: "$external" 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 認証情報で認証するユーザー。
ROLE
Amazon 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である必要があります。データベースユーザーがOpenID Connectで認証される場合、この値は
$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である必要があります。このパラメーターは以下を受け入れます。
なし
OIDC認証 を使用しないユーザー。
USER
Atlas が管理する OIDC を使用するユーザー。
$externalspec.databaseNameパラメータに を指定する必要があります。
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 Web Services IAM 認証情報で認証されるユーザー、またはAmazon Amazon Web Services IAM 認証形式で認証されるユーザーのロールである必要があります 。
spec.x509Type型: string
任意
X. データベースが提供された
spec.usernameを認証する509メソッド。 値を指定しない場合、Atlas はデフォルト値のNONEを使用します。このパラメーターは以下を受け入れます。
なし
X.509 認証を使用しないユーザー。
MANAGED
Atlas が管理する X.509 を使用するユーザー。
\$externalspec.databaseNameパラメータに を指定する必要があります。CUSTOMER
自己管理型 X.509 を使用するユーザー。この
x509Typeで作成されたユーザーには、spec.usernameパラメータに CN(Common Name、共通名)が必要です。詳細については、 RFC 2253 を参照してください。\$externalspec.databaseNameパラメータに を指定する必要があります。
APIから利用可能な構成パラメーターについては、「 Atlas Database Users API 」を参照してください。
現在、Atlas Kubernetes Operator は、Atlas Database Users APIから利用可能な次のパラメータをサポートしていません。
ldapAuthType
次のパラメーターを指定しないでください。
groupIdpassword代わりに
spec.passwordSecretRefを指定してください。