在安装 Kubernetes Operator 之前,您可以设置 Kubernetes Operator 部署的范围。 范围取决于您选择在其中部署 MongoDB Ops Manager 和 MongoDB 资源的命名空间。
Kubernetes Operator 部署范围
您可以设置以下范围之一:
Operator 使用与资源相同的单一命名空间
您可以将 Kubernetes 操作符的范围设置为使用与资源相同的命名空间。在这种情况下,Kubernetes 操作符会监视该命名空间中的 MongoDB Ops Manager 和 MongoDB 资源。
安装 Kubernetes 操作符时,它会使用默认命名空间。
操作符使用命名空间的子集
您可以将 Kubernetes 操作符 的范围设置为使用一个或多个与 Kubernetes 操作符 资源使用的命名空间不同的命名空间。在这种情况下,Kubernetes 操作符 会监视您指定的命名空间子集中的 MongoDB Ops Manager 和 MongoDB 资源。
要安装具有此范围的 Kubernetes 操作符 instances,请将helm与操作符.watchNamespace结合使用参数。
在单个 Kubernetes 操作符实例监视不同集群资源类型的部署中,监视命名空间子集非常有用。例如,您可以将 Kubernetes 操作符 配置为监视一个命名空间子集中的MongoDB资源,并监视另一命名空间子集中的MongoDBMultiCluster资源。为了避免在资源协调期间出现竞争条件,对于您希望 Kubernetes 操作符监视的每种自定义资源类型,请确保将范围设置为命名空间的不同子集。
按照helm的相关安装说明进行操作,但在Operator.watchNamespace中指定一个或多个命名空间 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 的命名空间以外)中的资源时:
创建以下资源:
可以访问权限多种资源的 ClusterRole。有关完整的资源定义,请参阅 Operator-roles.yaml 示例。这是集群范围的资源。
创建ClusterRoleBinding以将ClusterRole与 ServiceAccount 关联。此
clusterRoleBinding将绑定您使用Kubernetes Operator 在安装它的命名空间上使用的 ServiceAccount 创建的clusterRole。
将 ClusterRole 和 ClusterRoleBinding 包含在安装期间应用的默认配置文件中。
创建本地Kubernetes ServiceAccounts:
为每个命名空间创建以下部分或全部本地Kubernetes ServiceAccounts:
如果要在命名空间中部署 MongoDB 实例,请使用
mongodb-enterprise-database-pods。如果要在命名空间中部署 Ops Manager,请使用
mongodb-enterprise-appdb和mongodb-enterprise-ops-manager。
以下示例说明了 ClusterRole 和 ClusterRoleBinding 如何在集群中协同工作。
假设您在mongodb命名空间中创建一个 ServiceAccount,然后在此命名空间中安装 Kubernetes 操作符。Kubernetes 操作符 使用此 ServiceAccount。
要将 Kubernetes 操作符范围设置为监视命名空间ns1和ns2 ,请执行以下操作:
获取集群管理员权限。
使用这些特权,创建一个集群范围的、无命名空间的ClusterRole。
在三个命名空间中创建 ClusterRoleBinding:
mongodb、ns1和ns2。此 ClusterRoleBinding 会将 ClusterRole 绑定到mongodb命名空间中的 ServiceAccount。clusterRoleBinding将允许部署在mongodb命名空间中的Kubernetes Operator访问权限目标命名空间的clusterRole中描述的资源,即mongodb、ns1和ns2中描述的资源。
Operator 使用集群范围的作用域
您可以将 Kubernetes 操作符 的作用域设置为 Kubernetes 集群。在这种情况下,Kubernetes 操作符 会监视 Kubernetes 集群中所有命名空间中的 Ops Manager 和 MongoDB 资源。
重要
对于每个 Kubernetes 集群,您只能部署一个具有集群范围范围的 Kubernetes Operator 实例。
要为 Kubernetes Operator 设置集群范围的作用域,请选择您的平台。
后续步骤
设置 MongoDB Enterprise Kubernetes Operator 的范围后,您可以: