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

AtlasDatabaseUser カスタム リソース

項目一覧

  • 接続シークレット
  • プロジェクトとクラスター
  • スコープのないデータベースユーザー
  • スコープを持つデータベースユーザー
  • X.509 認証を持つデータベースユーザー
  • OIDC認証を持つデータベースユーザー
  • Amazon Web ServicesAmazon Web Services IAM 認証を持つデータベースユーザー
  • パラメーター

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

重要

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

  • Atlas Kubernetes Operator はカスタムリソース構成ファイルを使用して Atlas2.0 構成を管理しますが、 Atlas Kubernetes Operator 以降、 Kubernetesで削除したカスタム リソースは Atlas で削除されなくなりました(デフォルトでは )。代わりに、Atlas Kubernetes Operator は Atlas 内のそれらのリソースの管理を停止します。例、 Kubernetesで カスタム リソースを削除すると、デフォルトでは、Atlas Kubernetes OperatorAtlasProject は 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 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
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 は次のいずれかにフォールバックします。

  • atlasProjectspec.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

条件付き

データベースが提供された を認証する OIDCspec.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

タイプ: 配列

任意

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

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 認証を使用しないユーザー。
MANAGED

Atlas が管理する 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

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

戻る

AtlasDeployment