Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes 演算子
/

AtlasDatabaseUser カスタム リソース

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

重要

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

Atlas Kubernetes Operator はカスタム リソース構成ファイルを使用して Atlas 構成を管理しますが、Atlas Kubernetes Operator 2.0 以降では、Kubernetes で削除したカスタム リソースは Atlas では削除されなくなりました。 代わりに、Atlas Kubernetes Operator はそれらのリソースの管理を停止します。 たとえば、Kubernetes でAtlasProjectカスタム リソースを削除すると、Atlas Kubernetes Operator による、Atlas 内の対応するプロジェクトの自動削除が行われなくなるた、意図しないまたは予期しない削除を防げます。 この動作を Atlas Kubernetes Operator 2.0 より前に使用されていたデフォルトに戻す方法などの詳細については、「新しいデフォルト: Atlas Kubernetes Operator 2.0 の削除保護 」を参照してください。

次の例えには、 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:
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 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カスタム リソース パラメータの一部について説明します。 使用可能なパラメーターの完全なリストについては、 Atlas Database Users APIを参照してください。 これらの説明、利用可能な例、 APIドキュメントを参照して、仕様をカスタマイズします。

spec.databaseName

: string

必須

データベースユーザーが認証するデータベース。 データベースユーザーは、MongoDB にログインするためにユーザー名と認証データベースの両方を提供する必要があります。

データベース ユーザーがSCRAM-SHAで認証される場合、この値はadminである必要があります。

データベース ユーザーがX.509で認証される場合、この値は\$externalである必要があります。

spec.oidcAuthType

: string

条件付き

データベースが提供された を認証する OIDCspec.username メソッド。

データベースユーザーがOpenID Connectで認証される場合、この値はIDP_GROUPである必要があります。

spec.passwordSecretRef

: string

条件付き

パスワードを含むシークレットへの参照。SCRAM-SHA認証メソッドでは、このパラメーターが必要です。

spec.projectRef.name

: string

必須

データベースユーザーが属するプロジェクトの名前。 既存のAtlasProjectカスタム リソースを指定する必要があります。

spec.roles

タイプ: 配列

必須

ユーザーのロールと、ロールが適用されるデータベースまたはコレクションが格納されたリスト。 使用可能なパラメーターの完全なリストについては、「 Atlas Database Users API 」を参照してください。

spec.scopes

タイプ: 配列

任意

ユーザーが作成されたクラスターを含むリスト。

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

次のパラメーターを指定しないでください。

戻る

AtlasDeployment

項目一覧