AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Kubernetes Operator 配置のMongoDBドライバーのスコープの設定

Kubernetes Operator をインストールする前に、Kubernetes Operator 配置のスコープを設定できます。 範囲は、 MongoDB Ops Managerと MongoDB リソースの配置を選択した名前空間によって異なります。

次のいずれかのスコープを設定できます。

You can set the scope for the Kubernetes Operator to use the same namespace as resources. In this case, the Kubernetes Operator watches Ops Manager and MongoDB resources in that same namespace.

Kubernetes Operator をインストールすると、デフォルトの名前空間が使用されます。

You can set the scope for the Kubernetes Operator to use one or more namespaces that differ from the namespace used by the Kubernetes Operator resources. In this case, the Kubernetes Operator watches Ops Manager and MongoDB resources in a subset of namespaces that you specify.

このスコープで Kubernetes Operator インスタンスをインストールするには、オペレーター.watchNamespace とともにhelmを使用します。 許可されます。

名前空間のサブセットを監視すると、単一の Kubernetes Operator インスタンスが異なるクラスター リソース タイプを監視する配置に役立ちます。 たとえば、Kubernetes Operator を構成して、名前空間の 1 つのサブセット内のMongoDBリソースを監視し、名前空間の別のサブセット内のMongoDBMultiClusterリソースを監視するようにできます。 リソース調整中に競合状態を回避するには、Kubernetes Operator で監視するカスタム リソース タイプごとに、スコープを名前空間の個別のサブセットに設定していることを確認してください。

helmの関連するインストール手順に従いますが、オペレーター.watchNamespace に 1 つ以上の名前空間を指定します。 Kubernetes Operator が監視するパラメーター。

# Watch one namespace
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
--set operator.watchNamespace='namespace-to-watch' <...>
# Watch both namespace-a and namespace-b
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
--set operator.watchNamespace="namespace-a\,namespace-b"
# Operator with name `mongodb-kubernetes-operator-qa-envs` will
# watch ns-dev, ns-qa and ns-uat namespaces
helm install mongodb-kubernetes-operator-qa-envs mongodb/mongodb-kubernetes \
--set operator.watchNamespace="ns-dev\,ns-qa\,ns-uat"
# Operator with name `mongodb-kubernetes-operator-staging` will
# watch ns-staging and ns-pre-prod
helm install mongodb-kubernetes-operator-staging mongodb/mongodb-kubernetes --set operator.watchNamespace="ns-staging\,ns-pre-prod"

Kubernetes Operator をインストールして、Kubernetes Operator が配置されている名前空間以外の 1 つ以上の名前空間のリソースを監視する場合、以下のようにします。

  1. 次のリソースを作成します。

  2. インストール中に適用するデフォルトの構成ファイルに ClusterRole ClusterRoleBinding を含めます。

  3. Create local Kubernetes ServiceAccounts:

    各名前空間に対して、次のローカルKubernetes ServiceAccount の一部またはすべてを作成します。

    • 名前空間に MongoDB インスタンスを配置する場合は、 mongodb-kubernetes-database-podsを使用します。

    • 名前空間にMongoDB Ops Managerを配置する場合は、mongodb-kubernetes-appdbmongodb-kubernetes-ops-manager を使用します。

次の例は、ClusterRoleClusterRoleBinding がクラスター内でどのように連携するかを示しています。

mongodb名前空間に ServiceAccount を作成し、この名前空間に Kubernetes Operator をインストールするとします。 Kubernetes Operator はこの ServiceAccount を使用します。

名前空間ns1ns2を監視するように Kubernetes Operator のスコープを設定するには次の手順に従います。

  1. これらの特権を使用して、クラスター全体で名前空間以外の ClusterRole を作成します。

  2. Create a ClusterRoleBinding in three namespaces: mongodb, ns1 and ns2. This ClusterRoleBinding will bind the ClusterRole to the ServiceAccount in the mongodb namespace. The clusterRoleBinding will allow the Kubernetes Operator deployed in the mongodb namespace to access the resources described in the clusterRole of the target namespace, that is, in mongodb, ns1 and ns2.

Operator.watchNamespace も参照してください。

Kubernetes Operator のスコープをKubernetesクラスターに設定できます。この場合、 Kubernetes Operator は、 Kubernetesクラスター内のすべての名前空間でMongoDB Ops Managerと MongoDB リソースを監視します。

重要

Kubernetes クラスターごとに、クラスター全体のスコープを持つ Kubernetes Operator のインスタンスは 1 つだけ配置できます。

Kubernetes Operator のクラスター全体のスコープを設定するには、ご希望のインストール メソッドの手順に従います。

  1. Kubernetes Operator GitHubリポジトリのMongoDBコントロール からの mongodb-kubernetes.YAMLサンプルYAMLファイルを使用します。

  2. mongodb-kubernetes.YAMLspec.template.spec.containers.name.env.name:WATCH_NAMESPACE"*" に設定します。 YAMLファイル内のアスタリスク(" )の前後に二重引用符(* )を含める必要があります。

    WATCH_NAMESPACE: "*"
  3. In mongodb-kubernetes.yaml, change:

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator

    から:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
  4. 先ほど変更したClusterRoleに次のコードを追加します。

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  5. In mongodb-kubernetes.yaml, change:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: mongodb-kubernetes-operator
    subjects:
    - kind: ServiceAccount
    name: mongodb-kubernetes-operator
    namespace: mongodb

    から:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: mongodb-kubernetes-operator
    subjects:
    - kind: ServiceAccount
    name: mongodb-kubernetes-operator
    namespace: mongodb
  6. mongodb-kubernetes.yamlファイルで、 <namespace>の値を、Kubernetes Operator でリソースを配置してYAMLファイルを適用する名前空間に変更します。

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  7. ローカルKubernetesサービス アカウント の作成

    各名前空間に対して、次のローカルKubernetes サービス アカウント の一部またはすべてを作成します。

    • 名前空間に MongoDB インスタンスを配置する場合は、 mongodb-kubernetes-database-podsを使用します。

    • 名前空間にMongoDB Ops Managerを配置する場合は、mongodb-kubernetes-appdbmongodb-kubernetes-ops-manager を使用します。

    該当する例をコピーして貼り付け、 <namespace>値を名前空間を識別するラベルに置き換えます。

    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-database-pods
    namespace: <namespace>
    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-appdb
    namespace: <namespace>
    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-ops-manager
    namespace: <namespace>

Kubernetes Operator を配置する前に、次の項目を構成します。

  1. すべての名前空間を監視するように Kubernetes 演算子を構成します。

    helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
    --set operator.watchNamespace="*"
  2. ローカルKubernetesサービス アカウント の作成

    各名前空間に対して、次のローカルKubernetes サービス アカウント の一部またはすべてを作成します。

    • 名前空間に MongoDB インスタンスを配置する場合は、 mongodb-kubernetes-database-podsを使用します。

    • 名前空間にMongoDB Ops Managerを配置する場合は、mongodb-kubernetes-appdbmongodb-kubernetes-ops-manager を使用します。

    該当する例をコピーして貼り付け、 <namespace>値を名前空間を識別するラベルに置き換えます。

    helm template mongodb/mongodb-kubernetes \
    --set operator.namespace=<metadata.namespace> \
    --show-only templates/database-roles.yaml | kubectl apply -f -

Kubernetes Operator を配置する前に、次の項目を構成します。

  1. mongodb-kubernetes-openshift.YAMLspec.template.spec.containers.name.env.name:WATCH_NAMESPACE"*" に設定します。 YAMLファイル内のアスタリスク(" )の前後に二重引用符(* )を含める必要があります。

    WATCH_NAMESPACE: "*"
  2. これらのアカウントに対応するロールを作成します。mongodb-kubernetes-openshift.YAML で、以下の変更を行います。

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator

    から:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
  3. 先ほど変更したClusterRoleに次のコードを追加します。

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  4. mongodb-kubernetes-openshift.YAML で、以下の変更を行います。

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: enterprise-operator
    subjects:
    - kind: ServiceAccount
    name: enterprise-operator
    namespace: mongodb

    から:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: enterprise-operator
    subjects:
    - kind: ServiceAccount
    name: enterprise-operator
    namespace: mongodb
  5. Kubernetes Operator を配置する名前空間にのみシークレットを作成します。 MongoDBリソースを複数の名前空間またはクラスター全体のスコープで配置すると、 Kubernetes Operator は監視対象のすべての名前空間にわたってシークレットを同期します。詳しくは、registry.imagePullSecrets Helm インストール設定の 設定を参照してください。

    mongodb-kubernetes.yamlファイルで、<namespace> をKubernetes Operator をインストールする名前空間に置き換えます。oc または OpenShift Container Platform UI を使用して、結果の YAML ファイルを適用します。

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  6. ローカルKubernetesサービス アカウント の作成

    各名前空間に対して、次のローカルKubernetes サービス アカウント の一部またはすべてを作成します。

    • 名前空間に MongoDB インスタンスを配置する場合は、 mongodb-kubernetes-database-podsを使用します。

    • 名前空間にMongoDB Ops Managerを配置する場合は、mongodb-kubernetes-appdbmongodb-kubernetes-ops-manager を使用します。

    該当する例をコピーして貼り付け、 <namespace>値を名前空間を識別するラベルに置き換えます。

Kubernetes Operator を配置する前に、次の項目を構成します。

  1. すべての名前空間を監視するように Kubernetes 演算子を構成します。

    helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
    --set operator.watchNamespace="*" \
  2. Kubernetes Operator を配置する名前空間にのみシークレットを作成します。 MongoDBリソースを複数の名前空間またはクラスター全体のスコープで配置すると、 Kubernetes Operator は監視対象のすべての名前空間にわたってシークレットを同期します。詳しくは、registry.imagePullSecrets Helm インストール設定の 設定を参照してください。

    mongodb-kubernetes.yamlファイルで、<namespace> をKubernetes Operator をインストールする名前空間に置き換えます。oc または OpenShift Container Platform UI を使用して、結果の YAML ファイルを適用します。

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  3. ローカルKubernetesサービス アカウント の作成

    各名前空間に対して、次のローカルKubernetes サービス アカウント の一部またはすべてを作成します。

    • 名前空間に MongoDB インスタンスを配置する場合は、 mongodb-kubernetes-database-podsを使用します。

    • 名前空間にMongoDB Ops Managerを配置する場合は、mongodb-kubernetes-appdbmongodb-kubernetes-ops-manager を使用します。

    該当する例をコピーして貼り付け、 <namespace>値を名前空間を識別するラベルに置き換えます。

    helm template mongodb/mongodb-kubernetes \
    --set operator.namespace=<metadata.namespace> \
    --show-only templates/database-roles.yaml | oc apply -f -

MongoDB Controls for Kubernetes Operator のスコープを設定すると、次のことが可能になります。