MongoDB Kubernetes Operator 部署与配置完全指南

MongoDB Kubernetes Operator 部署与配置完全指南

【免费下载链接】mongodb-kubernetes-operator MongoDB Community Kubernetes Operator 【免费下载链接】mongodb-kubernetes-operator 项目地址: https://gitcode.com/gh_mirrors/mo/mongodb-kubernetes-operator

前言

MongoDB Kubernetes Operator 是一个强大的工具,它允许开发者在 Kubernetes 集群中轻松部署和管理 MongoDB 实例。本文将深入讲解如何部署和配置 MongoDBCommunity 资源,涵盖从基础部署到高级配置的各个方面。

基础部署:副本集

部署前的注意事项

重要警告:删除 MongoDB 资源时,持久化卷(PV)会保留以防止意外数据丢失。如果使用相同名称创建新的 MongoDB 资源并重用这些持久化卷,当新资源的拓扑结构与之前不同时,可能会导致问题。

部署步骤详解

  1. 准备配置文件: 修改示例配置文件中的密码字段,替换<your-password-here>为您选择的强密码。

  2. 应用配置

    kubectl apply -f config/samples/mongodb.com_v1_mongodbcommunity_cr.yaml --namespace <my-namespace>
    
  3. 验证部署

    kubectl get mongodbcommunity --namespace <my-namespace>
    
  4. 获取连接信息: Operator 会自动创建包含连接字符串和凭证的 Secret。Secret 命名遵循<metadata.name>-<auth-db>-<username>的格式。

    使用以下命令获取连接信息(需要 jq 1.6+):

    kubectl get secret <connection-string-secret-name> -n <my-namespace> \
    -o json | jq -r '.data | with_entries(.value |= @base64d)'
    

    输出将包含标准连接字符串和 DNS 种子列表连接字符串。

  5. 连接测试: 从集群内的 Pod 使用获取的连接字符串测试连接:

    mongosh "mongodb+srv://<username>:<password>@example-mongodb-svc.mongodb.svc.cluster.local/admin?ssl=true"
    

扩展与调整副本集

水平扩展副本集

通过修改spec.members字段可以调整副本集成员数量:

  1. 编辑 YAML 文件,将members值更新为目标数量
  2. 重新应用配置:
    kubectl apply -f <example>.yaml --namespace <my-namespace>
    

注意:缩减副本集时,Operator 可能需要几分钟时间移除对应的 StatefulSet 副本。

添加仲裁节点

仲裁节点(Arbiter)是不存储数据的特殊副本集成员,仅参与选举。添加方法:

  1. 在配置中添加arbiters字段
  2. 确保arbiters值为正整数且小于members

示例配置:

spec:
  type: ReplicaSet
  members: 3
  arbiters: 1
  version: "4.4.13"

版本升级策略

升级 MongoDB 版本

  1. 修改spec.version为目标版本(必须使用完整版本号,如"5.0.3")
  2. 考虑设置featureCompatibilityVersion以保持降级能力

示例升级配置:

spec:
  version: "4.2.7"
  featureCompatibilityVersion: "4.0"

功能兼容性版本

featureCompatibilityVersion控制 MongoDB 的功能兼容性级别。设置为当前工作版本可以在升级后保留降级选项。

OpenShift 环境部署

在 OpenShift 上部署需要额外配置:

  1. 为 Operator 部署设置环境变量MANAGED_SECURITY_CONTEXT=true
  2. 使用专门的 OpenShift 示例配置文件

高级安全配置

自定义数据库角色

通过spec.security.roles可以定义细粒度的访问控制角色:

security:
  roles:
    - role: testRole
      db: admin
      privileges:
        - resource:
            db: "test"
            collection: ""
          actions:
            - find
      roles: []

角色配置包含:

  • 权限定义(privileges)
  • 继承角色(roles)
  • 认证限制(authenticationRestrictions)

就绪探针定制

在特殊情况下可能需要调整就绪探针(Readiness Probe)参数:

spec:
  statefulSet:
    spec:
      template:
        spec:
          containers:
            - name: mongodb-agent
              readinessProbe:
                failureThreshold: 40
                initialDelaySeconds: 5

适用场景

  • 镜像下载速度慢时增加failureThreshold
  • Kubernetes API 响应慢时增加periodSeconds

集群域配置

要修改 MongoDB 服务对象的集群域(默认cluster.local),可在 Operator 部署中设置CLUSTER_DOMAIN环境变量:

env:
  - name: CLUSTER_DOMAIN
    value: $CUSTOM_DOMAIN

最佳实践建议

  1. 生产环境密码管理:避免在配置文件中直接写入密码,考虑使用 Kubernetes Secret
  2. 版本控制:升级前充分测试,并合理设置功能兼容性版本
  3. 监控配置:根据实际负载调整就绪探针参数
  4. 安全隔离:合理使用命名空间隔离不同环境的 MongoDB 实例

通过本文的详细指导,您应该能够在 Kubernetes 环境中高效部署和管理 MongoDB 集群,满足各种业务场景的需求。

【免费下载链接】mongodb-kubernetes-operator MongoDB Community Kubernetes Operator 【免费下载链接】mongodb-kubernetes-operator 项目地址: https://gitcode.com/gh_mirrors/mo/mongodb-kubernetes-operator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值