Kubernetes Operator をインストールする前に、Kubernetes Operator 配置のスコープを設定できます。 スコープは、 MongoDB Ops ManagerとMongoDBリソースの配置を選択した名前空間によって異なります。
Kubernetes Operator の配置スコープ
次のいずれかのスコープを設定できます。
演算子はリソースと同じ単一の名前空間を使用する (デフォルト)
演算子はリソースと同じ単一の名前空間を使用する
Kubernetes 演算子のスコープを設定して、リソースと同じ 名前空間 を使用できます。この場合、Kubernetes Operator は同じ 名前空間 内で MongoDB Ops Manager と MongoDB リソースを監視します。
Kubernetes Operator をインストールすると、デフォルトの名前空間が使用されます。
演算子は名前空間のサブセットを使用します
Kubernetes Operator のスコープを設定して、Kubernetes Operator リソースで使用される名前空間とは異なる 1 つ以上の名前空間を使用することができます。この場合、Kubernetes Operator は、指定した名前空間のサブセット内の MongoDB Ops Manager と MongoDB リソースを監視します。
このスコープで Kubernetes Operator インスタンスをインストールするには、オペレーター.watchNamespace とともにhelmを使用します。 許可されます。
名前空間のサブセットを監視すると、単一の Kubernetes Operator インスタンスが異なるクラスター リソース タイプを監視する配置に役立ちます。 たとえば、Kubernetes Operator を構成して、名前空間の 1 つのサブセット内のMongoDBリソースを監視し、名前空間の別のサブセット内のMongoDBMultiClusterリソースを監視するようにできます。 リソース調整中に競合状態を回避するには、Kubernetes Operator で監視するカスタム リソース タイプごとに、スコープを名前空間の個別のサブセットに設定していることを確認してください。
helmの関連するインストール手順に従いますが、オペレーター.watchNamespace に 1 つ以上の名前空間を指定します。 Kubernetes Operator が監視するパラメーター。
# Watch one namespace helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace='namespace-to-watch' <...>
# Watch both namespace-a and namespace-b helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="namespace-a\,namespace-b"
# Operator with name `mongodb-enterprise-operator-qa-envs` will # watch ns-dev, ns-qa and ns-uat namespaces helm install mongodb-enterprise-operator-qa-envs mongodb/enterprise-operator \ --set operator.watchNamespace="ns-dev\,ns-qa\,ns-uat"
# Operator with name `mongodb-enterprise-operator-staging` will # watch ns-staging and ns-pre-prod helm install mongodb-operator helm-chart --set operator.watchNamespace="ns-staging\,ns-pre-prod" mongodb-enterprise-operator-staging
Kubernetes Operator をインストールして、Kubernetes Operator が配置されている名前空間以外の 1 つ以上の名前空間のリソースを監視する場合、以下のようにします。
次のリソースを作成します。
複数のリソースへのアクセスを持つ ClusterRole 。完全なリソース定義については、「 Operator-roles.YAML の例 」を参照してください。これは クラスタースコープのリソースです。
ClusterRoleBinding を作成して、ClusterRole を ServiceAccount にリンクします。この
clusterRoleBindingは、 Kubernetes Operator がインストールされている名前空間で使用している ServiceAccount を使用して作成したclusterRoleをバインドします。
インストール中に適用するデフォルトの構成ファイルに ClusterRole と ClusterRoleBinding を含めます。
ローカルKubernetes ServiceAccounts を作成します。
各名前空間に対して、次のローカルKubernetes ServiceAccount の一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-enterprise-database-podsを使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-enterprise-appdbとmongodb-enterprise-ops-managerを使用します。
次の例は、ClusterRole と ClusterRoleBinding がクラスター内でどのように連携するかを示しています。
mongodb名前空間に ServiceAccount を作成し、この名前空間に Kubernetes Operator をインストールするとします。 Kubernetes Operator はこの ServiceAccount を使用します。
名前空間ns1とns2を監視するように Kubernetes Operator のスコープを設定するには次の手順に従います。
これらの特権を使用して、クラスター全体で名前空間以外の ClusterRole を作成します。
次の 3 つの名前空間で ClusterRoleBinding を作成します:
mongodb、 、ns1ns2。このClusterRoleBindingは、ClusterRoleをmongodb名前空間の ServiceAccount にバインドします。clusterRoleBindingを使用すると、mongodb名前空間に配置されたKubernetes Operator が、ターゲット名前空間のclusterRoleに記述されているリソース(つまり、mongodb、ns1、ns2にあるリソースにアクセスできるようになります。
演算子はクラスター全体のスコープを使用します
Kubernetes Operator のスコープを Kubernetes クラスターに設定できます。この場合、Kubernetes Operator は Kubernetes クラスター内のすべての名前空間で MongoDB Ops Manager と MongoDB リソースを監視します。
重要
Kubernetes クラスターごとに、クラスター全体のスコープを持つ Kubernetes Operator のインスタンスは 1 つだけ配置できます。
Kubernetes Operator のクラスター全体のスコープを設定するには、プラットフォームを選択します。
次のステップ
MongoDB Enterprise Kubernetes Operator のスコープを設定すると、次のことが可能になります。