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