注意
本教程假定您具备一定的Kubernetes知识。如果您不熟悉Kubernetes,请在开始之前查看有关Kubernetes对象和自定义资源的Kubernetes文档。 Kubernetes Operator 将Ops Manager和MongoDB部署表示为自定义资源。您可以使用kubectl 创建和管理它们,就像管理任何其他Kubernetes对象一样。要学习;了解这些自定义资源如何相互关联,请参阅Kubernetes Operator 架构的MongoDB控制器概述。
先决条件
在安装Kubernetes Operator 之前,请完成以下先决条件:
准备一个可用的 Kubernetes 解决方案,并验证硬件架构支持。
如果您需要Kubernetes解决方案,请参阅有关选择正确解决方案的Kubernetes文档。查看支持的硬件架构。
克隆MongoDB Controllers for Kubernetes 操作符存储库。
git clone https://github.com/mongodb/mongodb-kubernetes.git
注意
您可以使用 Helm 安装Kubernetes Operator。要学习;了解如何安装 Helm,请参阅Github上的文档。
为Kubernetes部署创建命名空间。
默认下, Kubernetes Operator 使用 mongodb命名空间。为了简化安装,请考虑使用以下kubectl命令创建一个标记为 mongodb 的命名空间:
kubectl create namespace mongodb
如果您不想使用mongodb命名空间,则可以为命名空间添加任何您喜欢的标签:
kubectl create namespace <namespaceName>
可选:运行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 Operator 安装规划MongoDB控制器。
决定是在单个Kubernetes集群上还是在多个Kubernetes集群上安装。请参阅选择Kubernetes Operator 安装模式:单 Kubernetes 集群或多 Kubernetes 集群。
确认您的Kubernetes、 OpenShift、 MongoDB和Ops Manager版本兼容。请参阅MongoDB控制器以实现Kubernetes Operator 兼容性。
设置Kubernetes Operator部署的范围,这决定了Kubernetes Operator 监视的命名空间。请参阅为Kubernetes Operator 部署设置MongoDB控制器范围。
应用存储、持久性以及 CPU 和内存限制的生产建议。请参阅最佳实践。
使用 Kubernetes 安装
安装过程因您想要配置环境的方式而异:
注意
自始至终使用相同的命名空间
默认下, Kubernetes Operator 会将Kubernetes集群中的所有资源部署到命名空间 mongodb。您可以通过编辑 mongodb-kubernetes.yaml 中 metadata.namespace 的所有值,将Kubernetes Operator 资源部署到不同的命名空间:
apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-operator namespace: production apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-kubernetes-operator namespace: production # Example truncated ...
可选:在安装Kubernetes 操作符YAML之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。
使用适用于Kubernetes的MongoDB Helm Charts。
为 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 建议使用默认(最新)版本。
使用 OpenShift 安装
开始之前,请确保在将Kubernetes Operator部署到OpenShift时将 MANAGED_SECURITY_CONTEXT 标志设立为 true。该值在values-openshift.yaml文件中预定义。
安装过程因您想要配置环境的方式而异:
注意
自始至终使用相同的命名空间
默认下, Kubernetes Operator 会将Kubernetes集群中的所有资源部署到命名空间 mongodb。您可以通过编辑 mongodb-kubernetes-openshift.yaml 中 metadata.namespace 的所有值,将Kubernetes Operator 资源部署到不同的命名空间:
apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-operator namespace: production apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-kubernetes-operator namespace: production # Example truncated ...
克隆MongoDB Controllers for Kubernetes 操作符存储库。
调用以下 git 命令:
git clone https://github.com/mongodb/mongodb-kubernetes.git
导航到您在其中克隆MongoDB Controllers for Kubernetes Operator存储库的目录。
例如,如果您将存储库克隆到主目录中,请运行:
cd ~/mongodb-kubernetes
为MongoDB部署安装 CustomResourceDefinitions。
调用以下oc命令:
oc apply -f crds.yaml
可选:在安装Kubernetes 操作符YAML之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。
在安装之前,将 <openshift-pull-secret> 添加到 Kubernetes 操作符 YAML 中的 ServiceAccount 定义中。
apiVersion: v1 kind: ServiceAccount metadata: name: enterprise-operator namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-appdb namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-database-pods namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret>
要了解更多信息,请参阅Helm 安装设置中的registry.imagePullSecrets设置。
使用适用于Kubernetes的MongoDB Helm Charts。
您可以使用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 后,您可以: