AtlasCustomRole
カスタム リソース
カスタムリソースは、データベースユーザーに権限を割り当てるためのAtlasCustomRole
カスタムデータベースロールを定義します。
特定のプロジェクト内でこのカスタムロールを作成するには、次のいずれかを行う必要があります。
Atlas Kubernetes Operator で管理するプロジェクトについて、 カスタムリソースで カスタム
AtlasProject
リソース名を参照します。AtlasCustomRole
AtlasCustomRole
Atlas Kubernetes Operator で管理していないプロジェクトについて、 カスタムリソースで AtlasプロジェクトのプロジェクトIDを参照します。
重要
カスタム リソースはデフォルトでオブジェクトを削除しなくなりました
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
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
独立した CRD の例
次の例では、 基本的な例AtlasCustomRole
で定義されているのと同じ カスタムロールを定義する 独立した CRDshard-operator
を示しています。このカスタムリソース定義により、このリソースを定義する Atlas Kubernetes Operator の同じインスタンスで管理していないプロジェクトにこのロールを作成できます。独立した操作を有効にするには、 ではなく を使用する必要があります。また、このリソースは親プロジェクトからAPI認証情報を継承できないため、externalProjectRef
projectRef
connectionSecret
を直接指定する必要があります。
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 は次のいずれかにフォールバックします。
親
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.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
パラメーターと相互に排他的です。