配置 Ops Manager 资源以使用远程模式
在此页面上
在默认配置中,MongoDB 助手和备份守护程序通过 Internet 从 MongoDB, Inc.
如果 Kubernetes 集群中的节点无法访问互联网,您可以将 Ops Manager 配置为使用 Kubernetes 操作符在远程模式下运行。备份守护程序和托管 MongoDB 资源仅从 Ops Manager 下载安装存档,Ops Manager 将下载请求代理到部署到 Kubernetes 集群的本地 Web 服务器或 S3 兼容存储上的 HTTP 端点。
此过程介绍如何将 Nginx HTTP 服务器部署到 Kubernetes 集群,以托管 MongoDB 安装存档。
先决条件和注意事项
部署 Ops Manager 资源 。以下过程向您展示如何更新 Ops Manager Kubernetes 对象 以启用远程模式。
步骤
将kubectl
配置为默认命名空间。
如果尚未执行,请运行以下命令,执行您创建的命名空间中的所有kubectl
命令。
注意
MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:
将
context
设置为中心集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。将
--namespace
设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如:kubectl config --namespace "mongodb"
。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
创建 ConfigMap 对于 Nginx。
本教程中的 ConfigMap 将 Nginx 配置为:
运行名为
localhost
的 HTTP 服务器,侦听 Kubernetes 集群中节点上的端口80
,然后将对特定资源的 HTTP 请求路由到提供 MongoDB Server 和 MongoDB Database Tools 安装存档的位置。
将以下示例 Nginx ConfigMap 粘贴到文本编辑器中:
1 2 apiVersion: v1 3 kind: ConfigMap 4 metadata: 5 name: nginx-conf 6 data: 7 nginx.conf: | 8 events {} 9 http { 10 server { 11 server_name localhost; 12 listen 80; 13 location /linux/ { 14 alias /mongodb-ops-manager/mongodb-releases/linux/; 15 } 16 location /tools/ { 17 alias /tools/; 18 } 19 } 20 } 21 ... 以
.yaml
文件扩展名保存此文件。通过对您创建的 ConfigMap 文件调用以下
kubectl
命令来创建 Nginx ConfigMap:kubectl apply -f <nginix-configmap>.yaml
将 Nginx 部署到 Kubernetes 集群。
本教程中的 Nginx 资源配置:
部署一个 Nginx 副本,
创建卷挂载以存储 MongoDB Server 和 MongoDB database Tools 安装存档,以及
定义 初始化容器
curl
使用 命令将 Nginx 提供的安装存档下载到您在 Kubernetes 集群中部署的 MongoDB 数据库资源。
创建 Kubernetes 服务,使 Nginx 可从集群中的其他 Pod 访问。
本教程中的服务通过端口80
将 Nginx 暴露给来自 Kubernetes 集群中其他节点的流量。 这允许您使用 Kubernetes 操作符部署的 MongoDB database 资源 pods 从 Nginx 下载安装存档。
运行以下命令,为 Nginx 部署创建服务:
将以下示例服务粘贴到文本编辑器中:
1 2 apiVersion: v1 3 kind: Service 4 metadata: 5 name: nginx-svc 6 labels: 7 app: nginx 8 spec: 9 ports: 10 - port: 80 11 protocol: TCP 12 selector: 13 app: nginx 14 ... 以
.yaml
文件扩展名保存此文件。通过对创建的服务文件调用以下
kubectl
命令来创建服务:kubectl apply -f <nginix-service>.yaml
复制并更新此 Ops Manager 资源的突出显示字段。
突出显示的部分使用以下 Ops Manager 配置设置:
automation.versions.source: remote
以spec.configuration
远程模式。automation.versions.download.baseUrl
在spec.configuration
中提供为 MongoDB 安装存档提供服务的 HTTP 资源的基本 URL。更新此行,将
<namespace>
替换为您使用 Kubernetes 操作符将资源部署到的命名空间。automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false"
spec.configuration
中,以帮助确保企业版构建没有问题。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDBOpsManager 4 metadata: 5 name: ops-manager-localmode 6 spec: 7 replicas: 1 8 version: "6.0.0" 9 adminCredentials: ops-manager-admin-secret 10 configuration: 11 # this enables remote mode in Ops Manager 12 automation.versions.source: remote 13 automation.versions.download.baseUrl: "http://nginx-svc.<namespace>.svc.cluster.local:8080" 14 15 backup: 16 enabled: false 17 18 applicationDatabase: 19 members: 3 20 ...
将复制的示例部分粘贴到现有的 Ops Manager 资源中。
打开您首选的文本编辑器并粘贴 对象 规范到资源文件中的相应位置。
追踪你的 Ops Manager 实例的状态。
要检查 Ops Manager 资源的状态,请调用以下命令:
kubectl get om -o yaml -w
有关资源部署状态的信息,请参阅排除 Kubernetes Operator 故障。
Ops Manager 资源完成Pending
阶段后,该命令将返回类似于以下内容的输出:
1 status: 2 applicationDatabase: 3 lastTransition: "2020-05-15T16:20:22Z" 4 members: 3 5 phase: Running 6 type: ReplicaSet 7 version: "4.4.5-ubi8" 8 backup: 9 phase: "" 10 opsManager: 11 lastTransition: "2020-05-15T16:20:26Z" 12 phase: Running 13 replicas: 1 14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080 15 version: "6.0.0"
复制status.opsManager.url
字段的值,该字段说明资源的连接 URL 。 您可以在创建 ConfigMap 时使用此值 在此过程的稍后部分中。
部署MongoDB database资源。
如果尚未完成,请完成以下先决条件:
在部署 Ops Manager 的同一命名空间中部署MongoDB 数据库资源。确保您:
将资源的
spec.opsManager.configMapRef.name
与 ConfigMap 的metadata.name
进行匹配。将资源的
spec.credentials
与您创建的包含 Ops Manager 编程 API 密钥对的密钥名称进行匹配。
在使用 Kubernetes Operator 创建的 MongoDB database 资源 container 中运行的 MongoDB 代理通过 Nginx 从 Ops Manager 下载安装存档,而不是从互联网下载。