Kubernetes MongoDB Operator

要在 Kubernetes 上安装 MongoDB Operator(以 MongoDB Community Kubernetes Operator 为例),以下是详细步骤:


前提条件

  1. 运行中的 Kubernetes 集群(v1.16+)
  2. kubectl 已配置访问集群
  3. 网络可访问 Docker Hub/GitHub(下载 Operator 资源)

安装步骤

1. 克隆 Operator 仓库
git clone https://github.com/mongodb/mongodb-kubernetes-operator.git
cd mongodb-kubernetes-operator
2. 安装自定义资源定义 (CRD)
kubectl apply -f config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
3. 创建 Namespace
kubectl create namespace mongodb
4. 部署 Operator
kubectl apply -k config/rbac/ --namespace mongodb
kubectl apply -f config/manager/manager.yaml --namespace mongodb
5. 验证 Operator 运行状态
kubectl get pods -n mongodb

输出应包含类似:

NAME                                  READY   STATUS    RESTARTS   AGE
mongodb-kubernetes-operator-xxxxx     1/1     Running   0          1m

部署 MongoDB 实例

1. 创建示例配置
cat <<EOF > mongodb.yaml
apiVersion: mongodbcommunity.mongodb.com/v1
kind: MongoDBCommunity
metadata:
  name: example-mongodb
  namespace: mongodb
spec:
  members: 3
  type: ReplicaSet
  version: "7.0.5"
  security:
    authentication:
      modes: ["SCRAM"]
  users:
    - name: admin
      db: admin
      passwordSecretRef: 
        name: admin-password
      roles:
        - name: clusterAdmin
          db: admin
        - name: userAdminAnyDatabase
          db: admin
  additionalMongodConfig:
    storage.wiredTiger.engineConfig.journalCompressor: zlib
---
apiVersion: v1
kind: Secret
metadata:
  name: admin-password
  namespace: mongodb
stringData:
  password: "securepassword123!"
EOF
2. 部署 MongoDB 集群
kubectl apply -f mongodb.yaml
3. 检查部署状态
kubectl get mongodbcommunity -n mongodb
kubectl describe mongodbcommunity example-mongodb -n mongodb

连接 MongoDB

# 获取服务地址
kubectl get svc -n mongodb

# 临时端口转发(测试用)
kubectl port-forward svc/example-mongodb-svc 27017:27017 -n mongodb

使用连接字符串:

mongodb://admin:securepassword123!@localhost:27017/?authSource=admin

关键注意事项

  1. 持久化存储
    默认使用临时存储(测试),生产环境需配置 PersistentVolumeClaim(在 spec.statefulSet.spec.volumeClaimTemplates 中定义)。

  2. 安全

    • 使用 Secret 管理密码(避免明文)
    • 启用 TLS 加密(参考 Operator 文档)
  3. 版本兼容
    检查 Operator 发布页 支持的 MongoDB 版本。

  4. 高级配置
    通过 spec.additionalMongodConfig 自定义 MongoDB 参数。


卸载

kubectl delete -f mongodb.yaml
kubectl delete -f config/manager/manager.yaml -n mongodb
kubectl delete -k config/rbac/ -n mongodb
kubectl delete crd mongodbcommunity.mongodbcommunity.mongodb.com
kubectl delete namespace mongodb

提示:生产环境建议使用 MongoDB Atlas OperatorMongoDB Enterprise Operator 获得企业级支持。

(二) MongoDB Atlas Operator VS MongoDB Enterprise Operator

以下是 MongoDB Atlas OperatorMongoDB Enterprise Operator 的详细对比,帮助您根据需求选择合适方案:


1. 核心定位

特性MongoDB Atlas OperatorMongoDB Enterprise Operator
管理对象MongoDB Atlas 云服务(托管在 MongoDB 公有云)自托管的 MongoDB Enterprise 集群(私有环境)
部署位置Atlas 云端(数据不在您的 K8s 集群内)您的 Kubernetes 集群内(数据本地化)
目标用户云优先策略、减轻运维负担需要完全控制基础设施/数据主权的企业
License免费(但 Atlas 服务按用量付费)需 MongoDB Enterprise 高级订阅(付费)

2. 架构差异

Atlas Operator
Operator
连接字符串
K8s Cluster
Atlas API
MongoDB Atlas Cloud
应用
  • 特点
    • Operator 通过 Atlas API 管理云端资源
    • 无需在 K8s 中运行 MongoDB 实例
    • 数据存储在 MongoDB 的全球云基础设施中
Enterprise Operator
Operator
Service
K8s Cluster
StatefulSet
Persistent Volume
应用
  • 特点
    • Operator 直接在 K8s 集群部署 MongoDB Pods
    • 数据存储在您的 Persistent Volumes 中
    • 需自行管理存储/网络/备份等基础设施

3. 关键功能对比

功能Atlas OperatorEnterprise Operator
高可用自动全球多区域部署需手动配置副本集/分片
备份恢复自动持续备份(时间点恢复)依赖 Ops Manager 或自定义方案
扩缩容一键垂直/水平扩容(无停机)需手动操作或脚本
安全自动 TLS、IP 白名单、加密存储需自行配置证书/KMS/网络策略
监控内置实时性能监控(Atlas UI)需集成 Prometheus + Ops Manager
版本升级全自动滚动更新需人工干预
多云支持全球 100+ 区域(AWS/Azure/GCP)仅限于您的 K8s 集群所部署的云/本地环境

4. 运维复杂度

方面Atlas OperatorEnterprise Operator
运维责任MongoDB 负责数据库层运维用户负责全栈运维
基础设施依赖无需管理存储/网络/备份需配置 PV、网络策略、备份存储等
灾难恢复自动跨区域容灾需自行设计 DR 方案
成本模型按使用量付费(计算/存储/流量)前期投入高(企业订阅 + 基础设施成本)

5. 适用场景

选择 Atlas Operator 当您需要:
  • ☁️ 完全托管的数据库服务
  • ⚡️ 快速启动全球分布式应用
  • 🌍 自动多区域容灾能力
  • 📊 内置监控/备份/安全功能(开箱即用)
  • 典型用例:云原生应用、Serverless 架构、跨区域 SaaS 服务
选择 Enterprise Operator 当您需要:
  • 🔒 数据主权合规(数据必须保留在私有环境)
  • 🛡️ 深度定制 MongoDB 配置参数
  • 💻 与现有私有云/数据中心集成
  • 📡 离线环境部署能力
  • 典型用例:金融/政府机构、本地数据中心、混合云架构

6. 集成生态

组件Atlas OperatorEnterprise Operator
管理控制台Atlas Web UIOps Manager / Cloud Manager
CI/CD 集成Atlas CLI + Terraform ProviderKubernetes Native Tools (Helm/Argo CD)
监控栈Atlas 内置 + Datadog/New Relic 集成Prometheus + Grafana + Ops Manager
备份方案Atlas 云备份(自动)需配置 Ops Manager 备份或 Velero

7. 安装复杂度

  • Atlas Operator
    helm install atlas-operator mongodb/atlas-operator  # 3分钟完成
    
  • Enterprise Operator
    # 需前置部署 Ops Manager 和配置存储
    kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-enterprise-kubernetes/master/crds.yaml
    helm install enterprise-operator mongodb/enterprise-operator
    

结论建议

需求推荐方案
快速云原生部署 + 减少运维Atlas Operator
数据本地化/合规要求Enterprise Operator
全球分布式应用Atlas Operator
有限运维团队Atlas Operator
全生命周期控制(高级调优)Enterprise Operator

💡 混合方案提示:部分企业同时使用两者——

  • 用 Atlas Operator 处理面向用户的全球工作负载
  • 用 Enterprise Operator 管理内部敏感数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值