以下过程概述了如何将Kubernetes Operator升级到最新版本。 此升级进程与Kubernetes Operator 安装进程并行。
为在Kubernetes中运行的Kubernetes Operator 升级MongoDB控制器
注意
自始至终使用相同的命名空间
默认情况下,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 Helm 安装设置。
使用适用于Kubernetes的MongoDB Helm Charts。
更新到最新版本的MongoDB Helm Charts for Kubernetes。
运行以下命令,检查当前 Helm 模板的版本:
helm search repo mongodb/mongodb-kubernetes如果当前安装的版本不是最新版本,请运行以下命令来更新Helm 存储库:
helm repo update mongodb如果本地没有安装 Helm 存储库,可以通过运行以下命令来安装:
helm repo add mongodb https://mongodb.github.io/helm-charts在升级 Helm Chart 之前对其进行自定义。
为避免破坏性更改,应确保选择与现有部署中的设置相同的设置。 要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
升级Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade mongodb-kubernetes-operator mongodb/mongodb-kubernetes您可以传递--namespace和--namespace-create标志,将Kubernetes Operator部署到非默认命名空间,如下所示:
helm upgrade mongodb-kubernetes-operator mongodb/mongodb-kubernetes \--namespace mongodb \--create-namespace为在OpenShift中运行的Kubernetes Operator 升级MongoDB控制器
以下步骤取决于环境的配置方式:
注意
自始至终使用相同的命名空间
默认情况下,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在升级Kubernetes Operator YAML 之前对其进行自定义。
为避免破坏性更改,应确保选择与现有部署中的设置相同的设置。 要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
您必须将<openshift-pull-secret>添加到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>升级到新版本的 Kubernetes 操作符。
填充 <version> 占位符并运行以下 oc:
oc apply -f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/1.4.0/public/mongodb-kubernetes-openshift.yaml升级MongoDB部署的 CustomResourceDefinitions。
运行以下oc命令:
填充 <version> 占位符并运行以下 oc 命令,将所选的 CRD 版本部署到Kubernetes集群:
oc apply -f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/1.4.0/public/crds.yaml更新到最新版本的MongoDB Helm Charts for Kubernetes。
运行以下命令,检查当前 Helm 模板的版本:
helm search repo mongodb/mongodb-kubernetes如果当前安装的版本不是最新版本,请运行以下命令来更新Helm 存储库:
helm repo update mongodb如果本地没有安装 Helm 存储库,可以通过运行以下命令来安装:
helm repo add mongodb https://mongodb.github.io/helm-charts在升级 Helm Chart 之前对其进行自定义。
为避免破坏性更改,应确保选择与现有部署中的设置相同的设置。 要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
升级Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade mongodb-kubernetes-operator mongodb/mongodb-kubernetes您可以传递--namespace和--namespace-create标志,将Kubernetes Operator部署到非默认命名空间,如下所示:
helm upgrade mongodb-kubernetes-operator mongodb/mongodb-kubernetes \--namespace mongodb \--create-namespace要对 Kubernetes 操作符进行故障排除,请参阅查看 Kubernetes 操作符的日志和其他故障排除主题。
重要
如果需要删除 Kubernetes 操作符 或命名空间,则必须首先删除 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 后,您可以: