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

AtlasCustomRole カスタム リソース

項目一覧

  • 基本的な例
  • 独立した CRD の例
  • パラメーター

カスタムリソースは、データベースユーザーに権限を割り当てるためのAtlasCustomRole カスタムデータベースロールを定義します。

特定のプロジェクト内でこのカスタムロールを作成するには、次のいずれかを行う必要があります。

  • Atlas Kubernetes Operator で管理するプロジェクトについて、 カスタムリソースで カスタム AtlasProjectリソース名を参照します。AtlasCustomRole

  • AtlasCustomRoleAtlas Kubernetes Operator で管理していないプロジェクトについて、 カスタムリソースで AtlasプロジェクトのプロジェクトIDを参照します。

重要

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

  • 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

Atlas Kubernetes Operator は、Atlas カスタム データベース ロールAPIリソースを使用して次のいずれかのアクションを実行します。

  • 新しいカスタムデータベースロールを作成します。

  • 既存のカスタムデータベースロールをアップデートします。

次の例では、my-projectプロジェクト内の シャーディングされたクラスター をバックアップとモニタリングの特権を持つ shard-operatorカスタムロールを定義する AtlasCustomRole カスタムリソースが示されています。

apiVersion: atlas.mongodb.com/v1
kind: AtlasCustomRole
metadata:
name: shard-operator-role
namespace: mongodb-atlas-system
labels:
mongodb.com/atlas-reconciliation-policy: keep
spec:
projectRef:
name: my-project
namespace: my-operator-namespace
role:
name: my-role
actions:
- name: getShardMap
resources:
cluster: true
- name: shardingState
resources:
cluster: true
- name: connPoolStats
resources:
cluster: true
- name: getLog
resources:
cluster: true
inheritedRoles:
- name: operator-role-1
role: backup

次の例では、 基本的な例AtlasCustomRole で定義されているのと同じ カスタムロールを定義する 独立した CRDshard-operator を示しています。このカスタムリソース定義により、このリソースを定義する Atlas Kubernetes Operator の同じインスタンスで管理していないプロジェクトにこのロールを作成できます。独立した操作を有効にするには、 ではなく を使用する必要があります。また、このリソースは親プロジェクトからAPI認証情報を継承できないため、externalProjectRef projectRefconnectionSecretを直接指定する必要があります。

apiVersion: atlas.mongodb.com/v1
kind: AtlasCustomRole
metadata:
name: shard-operator-role
namespace: mongodb-atlas-system
labels:
mongodb.com/atlas-reconciliation-policy: keep
spec:
externalProjectRef:
id: 671998971c8520583f24f411
connectionSecret:
name: my-atlas-key
role:
name: my-role
actions:
- name: getShardMap
resources:
cluster: true
- name: shardingState
resources:
cluster: true
- name: connPoolStats
resources:
cluster: true
- name: getLog
resources:
cluster: true
inheritedRoles:
- name: operator-role-1
role: backup

このセクションでは、使用可能なAtlasTeamカスタム リソース パラメータについて説明します。

metadata.name

: string

必須

このチームをAtlasProjectに追加するために使用する名前。

metadata.namespace

: string

任意

atlasTeamカスタム リソースを含めるdefault以外の名前空間。 カスタム名前空間を定義する場合は、 フィールドのAtlasProject カスタム リソース spec.teams.teamRef.namespaceにそれを追加する必要があります。

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.externalProjectRef.id

: string

条件付き

カスタムロールが属するプロジェクトのID 。既存の Atlas プロジェクト のプロジェクトIDを指定する必要があります。このパラメータは、次のいずれかによって管理されるプロジェクトに属するカスタムロールに必要です。

  • Atlas Kubernetes Operator の別のインスタンス

  • Atlas Kubernetes Operator 以外のツール

Atlas Kubernetes Operator の同じインスタンスによって管理されるプロジェクトに属するカスタムロールの場合、spec.externalProjectRef.id を使用しない場合は spec.projectRef.name を使用します。

カスタムロールは 1 つのプロジェクトにのみ属することができます。複数のプロジェクトに同じカスタムロールを定義するには、プロジェクトごとにカスタムリソース定義 を作成します。

spec.projectRef.name

: string

条件付き

カスタムロールが属するプロジェクトの名前。既存の カスタムAtlasProject リソース を指定する必要があります。このパラメーターは、同じインスタンスAtlas Kubernetes Operator によって管理されるプロジェクトに属するカスタムロールにのみ適用されます。

プロジェクトに属するカスタムロールの場合、次のいずれかによって管理されます。

  • Atlas Kubernetes Operator の別のインスタンス

  • Atlas Kubernetes Operator 以外のツール

spec.externalProjectRef.id を使用します。

カスタムロールは 1 つのプロジェクトにのみ属することができます。複数のプロジェクトに同じカスタムロールを定義するには、プロジェクトごとにカスタムリソース定義 を作成します。

spec.projectRef.namespace

: string

条件付き

で指定されたAtlasProject カスタム spec.projectRef.nameリソースが存在する名前空間。

プロジェクトに属するカスタムロールの場合、次のいずれかによって管理されます。

  • Atlas Kubernetes Operator の別のインスタンス

  • Atlas Kubernetes Operator 以外のツール

このパラメーターは設定しないでください。

spec.role.actions

タイプ: 配列

任意

ロールが付与する個々の特権アクションを表すオブジェクトのリスト。

spec.role.actions.name

: string

任意

特権アクションを識別するラベル。 Atlas Administration APIで利用できるアクションの完全なリストについては、 / 参照/custom-role-actions を参照してください。

spec.role.actions.resources

タイプ: 配列

任意

アクションが付与されるデータベースとコレクションを示す、またはクラスターリソースにアクションが付与されていることを示すオブジェクトのリスト。

spec.role.actions.resources.cluster

タイプ: ブール値

任意

アクションがクラスター リソースに対して付与されていることを示すフラグ。

注意

このパラメーターは、 spec.role.actions.resources.collectionパラメーターおよびspec.role.actions.resources.databaseパラメーターと相互に排他的です。

spec.role.actions.resources.collection

: string

任意

アクションが付与されるコレクションを識別する、人間が判読可能なラベル。 この値が空の string の場合、 spec.role.actions.resources.databaseパラメータで指定されたデータベース内のすべてのコレクションに対してアクションが付与されます。

注意

このパラメーターはspec.role.actions.resources.clusterパラメーターと相互に排他的です。

spec.role.actions.resources.database

: string

任意

アクションが付与されるデータベースを識別する、人間が判読可能なラベル。

注意

このパラメーターはspec.role.actions.resources.clusterパラメーターと相互に排他的です。

spec.role.inheritedRoles

タイプ: 配列

任意

継承されたロールと、そのロールが付与されているデータベースを示すキーと値のペアを表すオブジェクトのリスト。

spec.role.inheritedRoles.database

: string

任意

継承されたロールが付与されるデータベースを識別する、人間が判読可能なラベル。

注意

この値は、読み取りreadWriteを除くすべてのロールでadminである必要があります。

spec.role.inheritedRoles.name

: string

任意

継承されたロールを一意に識別するラベル。別のカスタムロールまたは組み込みロールを指定できます。

戻る

AtlasDatabaseUser