MongoDB Enterprise Kubernetes Operator 配置のスコープの設定
Kubernetes Operator をインストールする前に、Kubernetes Operator 配置のスコープを設定できます。 範囲は、 MongoDB Ops Managerと MongoDB
リソースの配置を選択した名前空間によって異なります。
Kubernetes Operator の配置スコープ
次のいずれかのスコープを設定できます。
演算子はリソースと同じ単一の名前空間を使用する
Kubernetes Operator のスコープを設定して、同じ 名前空間 を使用できます リソースとして。KubernetesMongoDB Ops Managerこの場合、 OperatorMongoDB
は、同じ 名前空間 内の と リソースを監視します 。
Kubernetes Operator をインストールすると、デフォルトの名前空間が使用されます。
演算子は名前空間のサブセットを使用します
1 つ以上の 名前空間 を使用するように Kubernetes Operator のスコープを設定できます Kubernetes Operator リソースによって使用される名前空間とは異なる。KubernetesMongoDB Ops Managerこの場合、 Operator は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 複数のリソースにアクセスできるリソースの完全な定義については、「 オペレーターロール.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 を作成します 。
ClusterRoleBinding の作成
mongodb
ns1
ns2
( 、 、 の 3 つの名前空間に含まれます。この ClusterRoleBinding は ClusterRole をバインドします 名前空間の ServiceAccountmongodb
に渡す追加オプション。clusterRoleBinding
を使用すると、mongodb
名前空間に配置された Kubernetes Operator が、ターゲット名前空間のclusterRole
に記述されているリソース(つまりmongodb
、ns1
、ns2
にアクセスできるようになります。
演算子はクラスター全体のスコープを使用します
Kubernetes Operator のスコープを Kubernetes クラスターに設定できます。 KubernetesMongoDB Ops Managerこの場合、 OperatorMongoDB
はすべての 名前空間 で とKubernetes リソースを監視します。 ( クラスター内)。
重要
Kubernetes クラスターごとに、クラスター全体のスコープを持つ Kubernetes Operator のインスタンスは 1 つだけ配置できます。
Kubernetes Operator のクラスター全体のスコープを設定するには、ご希望のインストール メソッドの手順に従います。
mongodb-enterprise.YAML MongoDBEnterprise Kubernetes OperatorGithubリポジトリ からのサンプル YAML ファイル。
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
mongodb-enterprise.YAML で を設定する"*"
から まで。YAMLdoubleファイル内のアスタリスク(
"
)の前後に*
引用符( )を含める必要があります。WATCH_NAMESPACE: "*" mongodb-enterprise.YAML 内 、変更:
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator から:
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator 先ほど変更した
ClusterRole
に次のコードを追加します。- apiGroups: - "" resources: - namespaces verbs: - list - watch mongodb-enterprise.YAML 内 、変更:
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator namespace: mongodb roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-enterprise-operator subjects: - kind: ServiceAccount name: mongodb-enterprise-operator namespace: mongodb から:
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator namespace: mongodb roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: mongodb-enterprise-operator subjects: - kind: ServiceAccount name: mongodb-enterprise-operator namespace: mongodb mongodb-enterprise.yaml
ファイルで、<namespace>
の値を、Kubernetes Operator でリソースを配置してYAMLファイルを適用する名前空間に変更します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... ローカル Kubernetes サービス アカウント の作成 :
各名前空間に対して、次のローカル Kubernetes サービス アカウント の一部またはすべてを作成します :
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-enterprise-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-enterprise-appdb
とmongodb-enterprise-ops-manager
を使用します。
該当する例をコピーして貼り付け、
<namespace>
値を名前空間を識別するラベルに置き換えます。--- kind: ServiceAccount apiVersion: v1 metadata: name: mongodb-enterprise-database-pods namespace: <namespace> --- kind: ServiceAccount apiVersion: v1 metadata: name: mongodb-enterprise-appdb namespace: <namespace> --- kind: ServiceAccount apiVersion: v1 metadata: name: mongodb-enterprise-ops-manager namespace: <namespace>
Kubernetes Operator を配置する前に、次の項目を構成します。
すべての名前空間を監視するように Kubernetes 演算子を構成します。
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" ローカル Kubernetes サービス アカウント の作成 :
各名前空間に対して、次のローカル Kubernetes サービス アカウント の一部またはすべてを作成します :
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-enterprise-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-enterprise-appdb
とmongodb-enterprise-ops-manager
を使用します。
該当する例をコピーして貼り付け、
<namespace>
値を名前空間を識別するラベルに置き換えます。helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | kubectl apply -f -
Kubernetes Operator を配置する前に、次の項目を構成します。
mongodb-enterprise-openshift.YAMLMongoDBEnterprise Kubernetes OperatorGithub リポジトリ からのサンプル YAML ファイル。
mongodb-enterprise-openshift.YAML
で を設定する から
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
"*"
まで。YAMLdoubleファイル内のアスタリスク(
"
)の前後に*
引用符( )を含める必要があります。WATCH_NAMESPACE: "*" これらのアカウントに対応するロールを作成します。 mongodb-enterprise-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 先ほど変更した
ClusterRole
に次のコードを追加します。- apiGroups: - "" resources: - namespaces verbs: - list - watch mongodb-enterprise-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 Kubernetes Operator を配置する名前空間にのみシークレットを作成します。 MongoDB リソースを複数の名前空間またはクラスター全体の スコープで配置すると、Kubernetes Operator は監視対象のすべての名前空間にわたってシークレットを同期します。 詳しくは、 Helm インストール設定の
registry.imagePullSecrets
設定を参照してください。mongodb-enterprise.yaml
ファイルで、<namespace>
を Kubernetes Operator をインストールする名前空間に置き換えます。 OC を使用する または OpenShift Container Platform UI を使用して、結果の YAML ファイルを適用します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... ローカル Kubernetes サービス アカウント の作成 :
各名前空間に対して、次のローカル Kubernetes サービス アカウント の一部またはすべてを作成します :
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-enterprise-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-enterprise-appdb
とmongodb-enterprise-ops-manager
を使用します。
該当する例をコピーして貼り付け、
<namespace>
値を名前空間を識別するラベルに置き換えます。
Kubernetes Operator を配置する前に、次の項目を構成します。
すべての名前空間を監視するように Kubernetes 演算子を構成します。
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" \ Kubernetes Operator を配置する名前空間にのみシークレットを作成します。 MongoDB リソースを複数の名前空間またはクラスター全体の スコープで配置すると、Kubernetes Operator は監視対象のすべての名前空間にわたってシークレットを同期します。 詳しくは、 Helm インストール設定の
registry.imagePullSecrets
設定を参照してください。mongodb-enterprise.yaml
ファイルで、<namespace>
を Kubernetes Operator をインストールする名前空間に置き換えます。 OC を使用する または OpenShift Container Platform UI を使用して、結果の YAML ファイルを適用します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... ローカル Kubernetes サービス アカウント の作成 :
各名前空間に対して、次のローカル Kubernetes サービス アカウント の一部またはすべてを作成します :
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-enterprise-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-enterprise-appdb
とmongodb-enterprise-ops-manager
を使用します。
該当する例をコピーして貼り付け、
<namespace>
値を名前空間を識別するラベルに置き換えます。helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | oc apply -f -
次のステップ
MongoDB Enterprise Kubernetes Operator のスコープを設定すると、次のことが可能になります。