Kubernetes Operator をインストールする前に、Kubernetes Operator 配置のスコープを設定できます。 MongoDB Ops Manager範囲は、 とMongoDB
{0 リソースの配置を選択した名前空間によって異なります。
Kubernetes Operator の配置スコープ
次のいずれかのスコープを設定できます。
演算子はリソースと同じ単一の名前空間を使用する
Kubernetes Operator のスコープを設定して、リソースと同じ名前空間を使用することができます。この場合、 Kubernetes OperatorMongoDB
は、同じ名前空間内の Ops Manager と リソースを監視します。
Kubernetes Operator をインストールすると、デフォルトの名前空間が使用されます。
演算子は名前空間のサブセットを使用します
Kubernetes Operator のスコープを設定して、 Kubernetes Operator リソースで使用される名前空間空間とは異なる 1 つ以上の名前空間を使用することができます。この場合、 Kubernetes Operator は、指定された名前空間のサブセット内の 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 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-operator helm-chart --set operator.watchNamespace="ns-staging\,ns-pre-prod" mongodb-kubernetes-operator-staging
Kubernetes Operator をインストールして、Kubernetes Operator が配置されている名前空間以外の 1 つ以上の名前空間のリソースを監視する場合、以下のようにします。
次のリソースを作成します。
複数のリソースへのアクセスを持つ ClusterRole 。完全なリソース定義については、「 Operator-roles.YAML の例 」を参照してください。これは クラスタースコープのリソースです。
ClusterRoleBinding を作成して、ClusterRole を ServiceAccount にリンクします。この
clusterRoleBinding
は、clusterRole
Kubernetes Operator がインストールされている名前空間で使用している ServiceAccount を使用して作成した をバインドします。
インストール中に適用するデフォルトの構成ファイルに ClusterRole と ClusterRoleBinding を含めます。
ローカルKubernetes ServiceAccounts を作成します。
各名前空間に対して、次のローカルKubernetes ServiceAccount の一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-kubernetes-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-kubernetes-appdb
とmongodb-kubernetes-ops-manager
を使用します。
次の例は、ClusterRole と ClusterRoleBinding がクラスター内でどのように連携するかを示しています。
mongodb
名前空間に ServiceAccount を作成し、この名前空間に Kubernetes Operator をインストールするとします。 Kubernetes Operator はこの ServiceAccount を使用します。
名前空間ns1
とns2
を監視するように Kubernetes Operator のスコープを設定するには次の手順に従います。
これらの特権を使用して、クラスター全体で名前空間以外の ClusterRole を作成します。
次の 3 つの名前空間で ClusterRoleBinding を作成します:
mongodb
、 、ns1
ns2
。この ClusterRoleBinding は、ClusterRole を 名前空間の ServiceAccount にバインドします。mongodb
を使用すると、clusterRoleBinding
名前空間に配置されたKubernetes Operatormongodb
clusterRole
mongodb
が、ターゲット名前空間の に記述されているリソース(つまり、 、ns1
、ns2
にあるリソースにアクセスできるようになります。
演算子はクラスター全体のスコープを使用します
Kubernetes Operator のスコープをKubernetesクラスターに設定できます。この場合、 Kubernetes Operator は、MongoDB
Kubernetesクラスター内のすべての名前空間で Ops Manager と リソースを監視します。
重要
Kubernetes クラスターごとに、クラスター全体のスコープを持つ Kubernetes Operator のインスタンスは 1 つだけ配置できます。
Kubernetes Operator のクラスター全体のスコープを設定するには、ご希望のインストール メソッドの手順に従います。
Use the mongodb-kubernetes.yaml sample YAML file from the MongoDB Controllers for Kubernetes Operator GitHub repository.
Set the
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
in mongodb-kubernetes.yaml to"*"
. You must include the double quotation marks ("
) around the asterisk (*
) in the YAML file.WATCH_NAMESPACE: "*" 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 先ほど変更した
ClusterRole
に次のコードを追加します。- apiGroups: - "" resources: - namespaces verbs: - list - watch 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 mongodb-kubernetes.yaml
ファイルで、<namespace>
の値を、Kubernetes Operator でリソースを配置してYAMLファイルを適用する名前空間に変更します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-kubernetes-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-kubernetes-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-kubernetes-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-kubernetes-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-kubernetes-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-kubernetes-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-kubernetes-appdb 51 namespace: <namespace> 52 ... 各名前空間に対して、次のローカルKubernetesサービス アカウントの一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-kubernetes-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-kubernetes-appdb
とmongodb-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 を配置する前に、次の項目を構成します。
すべての名前空間を監視するように Kubernetes 演算子を構成します。
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set operator.watchNamespace="*" 各名前空間に対して、次のローカルKubernetesサービス アカウントの一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-kubernetes-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-kubernetes-appdb
とmongodb-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 を配置する前に、次の項目を構成します。
Use the mongodb-kubernetes-openshift.yaml sample YAML file from the MongoDB Controllers for Kubernetes Operator GitHub repository.
Set the
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
in mongodb-kubernetes-openshift.yaml to"*"
. You must include the double quotation marks ("
) around the asterisk (*
) in the YAML file.WATCH_NAMESPACE: "*" Create the corresponding roles for these accounts. In mongodb-kubernetes-openshift.yaml, change:
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 In mongodb-kubernetes-openshift.yaml, change:
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-kubernetes.yaml
ファイルで、<namespace>
をKubernetes Operator をインストールする名前空間に置き換えます。 oc またはOpenShift Container Platform UIを使用して、結果の YAMLファイル を適用します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-kubernetes-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-kubernetes-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-kubernetes-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-kubernetes-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-kubernetes-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-kubernetes-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-kubernetes-appdb 51 namespace: <namespace> 52 ... 各名前空間に対して、次のローカルKubernetesサービス アカウントの一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-kubernetes-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-kubernetes-appdb
とmongodb-kubernetes-ops-manager
を使用します。
該当する例をコピーして貼り付け、
<namespace>
値を名前空間を識別するラベルに置き換えます。
Kubernetes Operator を配置する前に、次の項目を構成します。
すべての名前空間を監視するように Kubernetes 演算子を構成します。
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set operator.watchNamespace="*" \ Kubernetes Operator を配置する名前空間にのみシークレットを作成します。 MongoDB リソースを複数の名前空間またはクラスター全体の スコープで配置すると、Kubernetes Operator は監視対象のすべての名前空間にわたってシークレットを同期します。 詳しくは、 Helm インストール設定の
registry.imagePullSecrets
設定を参照してください。mongodb-kubernetes.yaml
ファイルで、<namespace>
をKubernetes Operator をインストールする名前空間に置き換えます。 oc またはOpenShift Container Platform UIを使用して、結果の YAMLファイル を適用します。1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-kubernetes-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-kubernetes-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-kubernetes-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-kubernetes-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-kubernetes-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-kubernetes-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-kubernetes-appdb 51 namespace: <namespace> 52 ... 各名前空間に対して、次のローカルKubernetesサービス アカウントの一部またはすべてを作成します。
名前空間に MongoDB インスタンスを配置する場合は、
mongodb-kubernetes-database-pods
を使用します。名前空間にMongoDB Ops Managerを配置する場合は、
mongodb-kubernetes-appdb
とmongodb-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 のスコープを設定すると、次のことが可能になります。