MongoDB工具 >MongoDB Kubernetes运营商 >安装操作员 > 规划您的MongoDB Enterprise Kubernetes操作员安装
使用MongoDB Enterprise Kubernetes Operator部署:
Cloud Manager和Ops Manager 4.0.11支持MongoDB资源
您可以使用Kubernetes Operator通过Ops Manager 4.0.11或更高版本以及Cloud Manager部署MongoDB资源。在本指南中任何提到Ops Manager的地方,都可以替代 Cloud Manager。
要使用Kubernetes Operator部署MongoDB资源,您需要一个Ops Manager实例。使用操作员将此实例部署到Kubernetes,或使用传统的安装方法将该实例部署到Kubernetes外部 。操作员使用Ops Manager API方法来部署然后管理MongoDB资源。
Kubernetes Operator与以下Kubernetes和OpenShift版本兼容。除非另有说明,否则列出的每个Kubernetes Operator版本都从列出的版本开始跨完整的发行系列。
不推荐使用斜体版本。
MongoDB Enterprise Kubernetes操作员发布系列 | Kubernetes版本 | OpenShift版本 |
---|---|---|
1.0.0 | 1.11、1.12、1.13、1.14 | 3.11、4.0、4.1 |
1.1.0 | 1.11,1.12,1.13,1.14 | 3.11、4.0、4.1 |
1.2.0 | 1.13、1.14、1.15 | 3.11、4.0、4.1 |
1.3.0 | 1.14、1.15、1.16 | 3.11、4.0、4.1 |
1.4.0 | 1.14、1.15、1.16 | 3.11,4.0,4.1,4.2 [1],4.3 [1] |
1.5.0 | 1.14、1.15、1.16、1.17、1.18 | 3.11、4.0、4.1、4.2、4.3、4.4 |
[1] | (1,2) Kubernetes操作1.4.3和后来 |
MongoDB使用以下操作系统的最新版本构建容器映像:
如果您从以下位置获得Kubernetes运营商: | …集装箱用途 |
---|---|
quay.io 或GitHub | Ubuntu 16.04 |
OpenShift | 红帽企业Linux 7 |
MongoDB,Inc.每三周发布一次,然后更新这些映像上的所有软件包。
Kubernetes Operator使用Webhook防止用户应用无效的资源定义。Webhook拒绝无效请求。Kubernetes Operator不会创建或更新资源。
该ClusterRole
和ClusterRoleBinding
为网络挂接包含在默认的配置文件,在安装过程中应用。要创建角色和绑定,您必须具有
cluster-admin特权。
如果您应用了无效的资源定义,则webhook会向shell返回一条描述错误的消息:
来自服务器的错误(无法为应用程序数据库配置shardPodSpec字段,因为对于分片集群和appdbs都是副本集):创建“ my-ops-manager.yaml”时出错:准入webhook“ ompolicy.mongodb.com”拒绝了该请求:shardPodSpec字段不可用于应用程序数据库,因为它可用于分片群集,而appdbs是副本集
Kubernetes Operator不需要验证网络钩子即可创建或更新资源。如果您忽略验证Webhook,从默认配置中删除其角色和绑定,或者没有足够的特权来运行它,则Kubernetes Operator在协调每个资源时会执行相同的验证。Kubernetes Operator将资源标记为
Failed
好像验证遇到严重错误一样。对于非严重错误,Kubernetes操作员会发出警告。
GKE部署
部署到私有集群时,GKE的webhook存在一个已知问题。要了解更多信息,请参阅更新Google防火墙规则以修复WebHook问题。
您可以根据要部署Ops Manager和MongoDB Kubernetes资源资源的位置,在不同范围内部署Kubernetes Operator:
您可以将Kubernetes运算符的作用域限定为名称空间。Kubernetes Operator在同一名称空间中监视Ops Manager和MongoDB Kubernetes资源。
使用安装说明安装Kubernetes Operator时,这是默认范围 。
您可以将Kubernetes运算符的作用域限定为名称空间。Kubernetes Operator在指定的名称空间中监视Ops Manager和MongoDB Kubernetes资源。
您必须使用helm
此作用域来安装Kubernetes Operator。按照相关的helm
安装说明进行操作,但是使用以下命令来设置Kubernetes Operator要监视的名称空间:
设置名称空间可确保:
您将Kubernetes Operator的范围限定在一个集群上。Kubernetes Operator 在Kubernetes集群的所有命名空间中监视Ops Manager和MongoDB Kubernetes资源。
重要
每个Kubernetes群集只能部署一个具有整个群集范围的操作员。
您必须使用helm
此作用域来安装Kubernetes Operator。请遵循相关的helm
安装说明,但进行以下调整:
要将Kubernetes Operator设置为监视所有名称空间,请调用以下命令:
为要在其中部署Ops Manager和MongoDB Kubernetes资源的每个命名空间创建所需的服务帐户:
如果集群中不存在任何MongoDB CustomResourceDefinitions,则早期版本的Kubernetes Operator会在启动时崩溃。例如,即使您不打算使用Kubernetes Operator进行部署,也必须安装CustomResourceDefinition for Ops Manager。
现在,您可以指定希望Kubernetes Operator观看哪些自定义资源。这允许您仅为希望Kubernetes Operator管理的资源安装CustomResourceDefinition。
您必须用于helm
将Kubernetes Operator配置为仅监视您指定的自定义资源。请遵循相关的helm
安装说明,但进行以下调整:
确定要安装的CustomResourceDefinitions。您可以安装以下任意数量的产品:
值 | 描述 |
---|---|
mongodb |
安装CustomResourceDefinitions并监视数据库资源。 |
mongodbusers |
安装CustomResourceDefinitions并观看MongoDB用户资源。 |
opsmanagers |
安装CustomResourceDefinitions并观看Ops Manager资源。 |
在命令字段中使用该选项以指定要安装的CustomResourceDefinitions,并配置Kubernetes Operator来监视它们。-- set
operator.watchedResources
helm template
用逗号分隔每个自定义资源:
要安装MongoDB Kubernetes Operator,您必须:
有一个可用的Kubernetes解决方案。
如果您需要Kubernetes解决方案,请参阅Kubernetes 文档以选择正确的解决方案。
克隆MongoDB Enterprise Kubernetes Operator存储库。
注意
您可以使用Helm安装Kubernetes Operator。要了解如何安装Helm,请参阅 GitHub上的文档。
为您的Kubernetes部署创建名称空间。默认情况下,Kubernetes Operator使用mongodb
命名空间。为了简化安装,请考虑mongodb
使用以下kubectl
命令创建带有标签的名称空间:
如果不想使用mongodb
名称空间,则可以将名称空间标记为任何您喜欢的名称:
(可选)具有正在运行的Ops Manager。
如果不使用Kubernetes Operator部署Ops Manager资源,则必须在Kubernetes群集之外运行Ops Manager。如果要使用Kubernetes Operator在Kubernetes中部署Ops Manager资源,请跳过此先决条件。
(对于OpenShift安装是必需的)创建一个机密,其中包含授权从registry.connect.redhat.com
存储库中提取图像的凭据
:
如果还没有,请获取Red Hat订阅。
创建一个注册服务帐户。
单击您的注册表服务帐户,然后单击“ Docker配置”选项卡。
下载<account-name>-auth.json
文件并在文本编辑器中将其打开。
复制registry.redhat.io
对象,然后将该对象的另一个实例粘贴到文件中。请记住,在第一个对象之后添加逗号。重命名第二个对象
registry.connect.redhat.com
,然后保存文件:
创建一个openshift-pull-secret.yaml
文件,将修改后的<account-name>-auth.json
文件的内容stringData
命名为.dockerconfigjson
:
您在metadata.name
字段中提供的值包含机密名称。当要求输入时提供此值
<openshift-pull-secret>
。
从
文件创建一个秘密openshift-pull-secret.yaml
: