注意
本教程假定读者对 Kubernetes 有一定了解。如果您不熟悉 Kubernetes,请在开始之前查看有关 Kubernetes 对象 和 自定义资源的 Kubernetes 文档。Kubernetes Operator 将 MongoDB Ops Manager 和 MongoDB 部署表示为自定义资源。您可以使用 kubectl 创建和管理它们,方式与管理任何其他 Kubernetes 对象的方式相同。要了解这些自定义资源之间的关系,请参阅 MongoDB Controllers for Kubernetes Operator 架构概述。
先决条件
在安装 Kubernetes 操作符之前,请完成以下先决条件:
准备一个可用的 Kubernetes 解决方案,并验证硬件架构支持。
如果您需要Kubernetes解决方案,请参阅有关选择正确解决方案的Kubernetes文档。查看支持的硬件架构。
克隆MongoDB Controllers for Kubernetes 操作符存储库并检出当前版本的标签。
git clone https://github.com/mongodb/mongodb-kubernetes.gitcd mongodb-kubernetesgit checkout 1.15.0注意
您可以使用 Helm 安装Kubernetes Operator。要学习;了解如何安装 Helm,请参阅Github上的文档。
可选:运行MongoDB Ops ManagerMongoDB Ops Manager 。
如果不使用 Kubernetes Operator 部署 Ops Manager 资源,则必须在 Kubernetes 集群外部运行 Ops Manager。 如果要使用 Kubernetes 操作符 在 Kubernetes 中部署 Ops Manager 资源,请跳过此先决条件。
重要
您的 Ops Manager 安装必须运行活动的NTP服务。 如果 Ops Manager 主机的时钟不同步,则该主机将无法与 Kubernetes 操作符 通信。
要学习;了解如何检查MongoDB Ops Manager托管的 NTP 服务,请参阅 RHEL 文档。
Considerations
查看以下规划主题。要了解更多信息,请参阅 规划 Kubernetes 操作符 安装。
决定是安装在单个 Kubernetes 集群还是多个 Kubernetes 集群上。请参阅 选择单集群或多集群安装模式。
确认 Kubernetes、OpenShift、MongoDB 和 MongoDB Ops Manager 的版本兼容。请参阅Kubernetes 操作符 兼容性的 MongoDB 控制器。
设置 Kubernetes 操作符 部署的范围,这将决定 Kubernetes 操作符 监视的命名空间。请参阅 为 Kubernetes 操作符 部署设置 MongoDB 控制器范围。
应用存储、持久性以及 CPU 和内存界限的生产建议。See 最佳实践.
使用 Kubernetes 安装
安装过程因您想要配置环境的方式而异:
注意
自始至终使用相同的命名空间
默认情况下,Kubernetes Operator 会将 Kubernetes 集群中的所有资源部署到 命名空间 mongodb 中。您可以通过编辑 mongodb-kubernetes.yaml 中的所有 metadata.namespace 值,将 Kubernetes Operator 资源部署到不同的命名空间。您还必须更新同一文件中的每个 RoleBinding 和 ClusterRoleBinding 中的 subjects[0].namespace 值。如果省略此值,绑定将在默认的 mongodb 命名空间中查找 ServiceAccount,但无法找到它:
apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-operator namespace: production
apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: mongodb-kubernetes-operator namespace: productionroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production
apiVersion: apps/v1kind: Deploymentmetadata: name: mongodb-kubernetes-operator namespace: production
# Example truncated可选:在安装Kubernetes Operator YAML 之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。
使用适用于Kubernetes的MongoDB Helm Charts。
注意
Helm 图表 存储库弃用
从 MongoDB Helm Charts for Kubernetes 存储库安装 Kubernetes Operator 的做法已被弃用,并将在 MCK 版本 2.0. 中移除。若要改为从符合 OCI 标准的注册表中安装 Helm 图表,请参阅“使用 Helm(符合 OCI 标准的注册表)”标签页。
为 Kubernetes添加MongoDB Helm Charts。
您可以通过运行以下命令在本地添加Kubernetes Operator Helm Chart:
helm repo add mongodb https://mongodb.github.io/helm-charts在部署 Helm Chart 之前对其进行自定义。
要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
部署Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade --install mongodb-kubernetes-operator mongodb/mongodb-kubernetes您可以传递--namespace和--create-namespace标志,将Kubernetes Operator部署到非默认命名空间,如下所示:
helm upgrade --install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \--namespace mongodb \--create-namespace使用 Helm 安装特定的每日构建版本
MongoDB 每天都会重建 Kubernetes 操作符映像,以集成最新的安全和操作系统更新。
默认情况下, helm安装您指定的 Kubernetes 操作符版本的最新版本。
要安装较早的版本,请使用--set build=<build-id>将版本 ID 指定为参数。 版本 ID 的格式始终为-b<YYYYMMDD>T000000Z ,其中<YYYYMMDD>是要使用的版本的创建日期。
例子
此示例展示了如何使用最新映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes此示例展示了如何使用 2021 年 2 月 5 日午夜创建的映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set build=-b20210205T000000Z注意
MongoDB 建议使用默认(最新)版本。
MongoDB 还将 Kubernetes 操作符 Helm 图表发布到 quay.io/mongodb/helm-charts 的 OCI 兼容容器存储库中。从该存储库安装时,您可以直接引用图表,而无需添加 Helm 图表存储库。
在部署 Helm 图表之前对其进行自定义。
要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
部署Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade --install mongodb-kubernetes-operator \ oci://quay.io/mongodb/helm-charts/mongodb-kubernetes要将 Kubernetes Operator 部署到非默认命名空间,请传递 --namespace 和 --create-namespace 标志:
helm upgrade --install mongodb-kubernetes-operator \ oci://quay.io/mongodb/helm-charts/mongodb-kubernetes \ --namespace mongodb \ --create-namespace使用 OpenShift 安装
开始之前,请确保在将Kubernetes Operator部署到OpenShift时将 MANAGED_SECURITY_CONTEXT 标志设立为 true。该值在values-openshift.yaml文件中预定义。
安装过程因您想要配置环境的方式而异:
注意
自始至终使用相同的命名空间
默认情况下,Kubernetes Operator 会将 Kubernetes 集群中的所有资源部署到 命名空间 mongodb 中。您可以通过编辑 mongodb-kubernetes-openshift.yaml 中的所有 metadata.namespace 值,将 Kubernetes Operator 资源部署到不同的命名空间。您还必须更新同一文件中的每个 RoleBinding 和 ClusterRoleBinding 中的 subjects[0].namespace 值。如果省略此值,绑定将在默认的 mongodb 命名空间中查找 ServiceAccount,但无法找到它:
apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-operator namespace: production
apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: mongodb-kubernetes-operator namespace: productionroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production
apiVersion: apps/v1kind: Deploymentmetadata: name: mongodb-kubernetes-operator namespace: production
# Example truncated克隆MongoDB Controllers for Kubernetes 操作符存储库并检出当前版本的标签。
调用以下 git 命令:
git clone https://github.com/mongodb/mongodb-kubernetes.gitcd mongodb-kubernetesgit checkout 1.15.0导航到您在其中克隆MongoDB Controllers for Kubernetes Operator存储库的目录。
例如,如果您将存储库克隆到主目录中,请运行:
cd ~/mongodb-kubernetes为MongoDB部署安装 CustomResourceDefinitions。
调用以下oc命令:
oc apply -f crds.yaml可选:在安装Kubernetes Operator YAML 之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。
在安装之前,将 <openshift-pull-secret> 添加到 Kubernetes 操作符 YAML 中的 ServiceAccount 定义中。
apiVersion: v1kind: ServiceAccountmetadata: name: enterprise-operator
namespace: mongodb
imagePullSecrets: - name: <openshift-pull-secret>
apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-appdb
namespace: mongodb
imagePullSecrets: - name: <openshift-pull-secret>
apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-database-pods
namespace: mongodb
imagePullSecrets: - name: <openshift-pull-secret>要了解更多信息,请参阅Helm 安装设置中的registry.imagePullSecrets设置。
使用适用于Kubernetes的MongoDB Helm Charts。
注意
Helm 图表 存储库弃用
从 MongoDB Helm Charts for Kubernetes 存储库安装 Kubernetes Operator 的做法已被弃用,并将在 MCK 版本 2.0. 中移除。请改用 quay.io/mongodb/helm-charts 处符合 OCI 标准的注册表中的 Helm 图表。
您可以使用Helm 3安装Kubernetes Operator。
将MongoDB Helm Charts for Kubernetes存储库添加到 Helm。
helm repo add mongodb https://mongodb.github.io/helm-charts使用 helm 安装Kubernetes 操作符。
安装适用于Kubernetes的MongoDB Helm Charts:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --values https://raw.githubusercontent.com/mongodb/helm-charts/main/charts/mongodb-kubernetes/values-openshift.yaml使用values-openshift.yaml设置。要学习;了解可选的Kubernetes Operator 安装设置,请参阅 Operator Helm 安装设置。
注意
要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。
使用 Helm 安装特定的每日构建版本
MongoDB 每天都会重建 Kubernetes 操作符映像,以集成最新的安全和操作系统更新。
默认情况下, helm安装您指定的 Kubernetes 操作符版本的最新版本。
要安装较早的版本,请使用--set build=<build-id>将版本 ID 指定为参数。 版本 ID 的格式始终为-b<YYYYMMDD>T000000Z ,其中<YYYYMMDD>是要使用的版本的创建日期。
例子
此示例展示了如何使用最新映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes此示例展示了如何使用 2021 年 2 月 5 日午夜创建的映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set build=-b20210205T000000Z注意
MongoDB 建议使用默认(最新)版本。
验证安装
要验证 Kubernetes 操作符是否正确安装,请运行以下命令并验证输出:
kubectl describe deployments mongodb-kubernetes-operator -n <metadata.namespace>oc describe deployments mongodb-kubernetes-operator -n <metadata.namespace>默认情况下,部署存在于mongodb命名空间中。 如果出现以下错误消息,请确保使用正确的命名空间:
Error from server (NotFound): deployments.apps "mongodb-kubernetes-operator" not found要对 Kubernetes 操作符进行故障排除,请参阅查看 Kubernetes 操作符的日志和其他故障排除主题。
重要
如果需要删除 Kubernetes 操作符 或命名空间,则必须首先删除 MongoDB 资源。
后续步骤
安装MongoDB Controllers for Kubernetes Operator 后,您可以: