云原生容器编排【免费下载链接】chartsBitnami Helm Charts项目地址https://gitcode.com/GitHub_Trending/charts30/charts点击查看免费下载本文以 bitnami/mongodb/CHANGELOG.md 的完整版本演进为主线结合该 chart 的 values.yaml、Chart.yaml 与模板源码梳理 Bitnami MongoDB Helm Chart 从 7.x 到 17.x 的核心能力变迁并给出可直接落地的安装、认证、TLS、备份、监控与安全配置方案。读完本文你将掌握该 chart 的架构选型、关键参数含义、密码轮换与备份恢复的实战操作以及版本升级时需要注意的破坏性变更点。一、Chart 概览与版本脉络1.1 当前版本与组成当前仓库中 mongodb chart 的版本为17.0.2Chart 版本对应的应用版本为MongoDB 8.0.13由 Chart.yaml 定义。图表依赖common子 chart2.x.x通过 OCI 仓库引用核心镜像包括bitnami/mongodb:8.0.13-debian-12-r0MongoDB 服务端bitnami/mongodb-exporter:0.47.0-debian-12-r1Prometheus 指标导出器bitnami/nginxTLS 证书生成 init 容器所用镜像bitnami/kubectl外部访问自动发现 init 容器所用镜像bitnami/os-shellDNS 检查 init 容器所用镜像chart 的模板结构分为五大工作负载族见 templates 目录工作负载族目录典型资源Standalone单机standalone/Deployment/StatefulSet、Service、PDB、PVCReplicaset副本集replicaset/StatefulSet、headless Service、外部访问 Service、PDBArbiter仲裁节点arbiter/StatefulSet、headless Service、ConfigMap、PDBHidden隐藏节点hidden/StatefulSet、外部访问 Service、ConfigMap、PDB运维任务backup/、update-password/mongodump CronJob、密码更新 Job另有configmap.yaml、secrets.yaml、secrets-ca.yaml、metrics-svc.yaml、servicemonitor.yaml、prometheusrule.yaml、networkpolicy.yaml、psp.yaml、role.yaml、rolebinding.yaml等横切资源模板。1.2 CHANGELOG 时间线特征从 CHANGELOG.md2211 行看该 chart 经历了从 7.8.92020 年 3 月到 17.0.22026 年 4 月约六年的持续迭代其中大量版本为「updating components versions」式的常规镜像升级真正的功能演进集中在若干个 minor/major 版本中。理解这些节点是评估升级风险与能力边界的关键。二、架构选型standalone 与 replicaset2.1 两种架构的语义architecture参数决定工作负载类型values.yamlstandalone默认部署一个 Deployment或通过useStatefulSet: true改为 StatefulSet不可横向扩展。replicaCount大于 1 时会被强制降为 1从 dep-sts.yaml 的replicas: {{ gt (.Values.replicaCount | int) 1 | ternary 1 .Values.replicaCount }}可以看出这一硬性约束。CHANGELOG 中 10.25.2 引入Recreate更新策略、10.21.2 明确 standalone 副本数为 1、12.0.0 完成整体标准化均围绕单机语义完善。replicaset部署 StatefulSet按replicaCount创建多个 mongod 实例通过 headless Servicerelease-headless互相发现构成 MongoDB 副本集。副本集模式下默认启用replicaSetHostnames: true使用 DNS 主机名而非 IP 参与副本集配置。从 replicaset/statefulset.yaml 可见副本集 StatefulSet 使用podManagementPolicy: OrderedReady依次启动并支持updateStrategy、亲和性预设podAffinityPreset/podAntiAffinityPreset/nodeAffinityPreset、topologySpreadConstraints等调度控制。2.2 副本集的高级成员13.x 之后 chart 逐步补齐了 MongoDB 副本集的完整成员拓扑CHANGELOG 中 10.8.0 新增 hidden node 支持、8.2.0 允许禁用 arbiter、14.2.0 增加 arbiter 的 nodeSelector 能力等Arbiter仲裁节点只参与选举、不存储数据默认每个副本集附带一个。其 StatefulSet、headless Service 与 PDB 独立于主副本集管理见 arbiter。15.0.2 与 14.12.2 曾修复仲裁节点 emptyDir 挂载问题。Hidden隐藏节点拥有数据但不参与客户端读取通常用于备份/分析其外部访问、TLS 证书等均有独立配置入口见 hidden。2.3 外部访问externalAccess当副本集需要被集群外客户端访问时启用externalAccessvalues.yaml支持三种 Service 类型NodePort、LoadBalancer、ClusterIP10.10.0 新增 ClusterIP 支持。关键配套能力autoDiscovery通过 init 容器使用bitnami/kubectl镜像自动查询 K8s API 获取每个副本的 LB IP 或 NodePort无需手工填写loadBalancerIPs/nodePorts。dnsCheck当使用publicNames时init 容器负责校验外部域名可解析13.x 之后引入15.6.22 为其补充了安全上下文。externalMaster13.15.0 起支持将 chart 部署的副本集引导自集群外已存在的 MongoDB 主节点externalAccess.externalMaster.host/port用于跨集群复制拓扑。注意replicaSetHostnames在externalAccess.enabledtrue时会被忽略values.yaml因为外部访问依赖可解析的公开地址而非集群内 DNS。三、认证与密码管理auth 体系深度解析3.1 auth 参数族auth是使用最频繁的配置区values.yamlauth: enabled: true # 是否启用认证 rootUser: root # 根用户名 rootPassword: # 根密码为空时自动随机生成 usernames: [] # 初始化时创建的自定义用户列表 passwords: [] # 与 usernames 一一对应的密码 databases: [] # 与用户关联的自定义数据库 replicaSetKey: # 副本集成员间认证用的 keyreplicaset 架构 existingSecret: # 指定已有 Secret包含 mongodb-passwords / mongodb-root-password / mongodb-metrics-password / mongodb-replica-set-key要点多用户支持10.29.0 引入多个自定义用户/数据库的支持替代早期单一auth.username/password/database10.26.0 允许自定义 root 用户名13.15.2 修复对MONGODB_ROOT_USER环境变量的尊重。existingSecret 优先一旦设置auth.existingSecret上述密码类参数全部被忽略15.5.3 修复了 existingSecret 与 rootPassword 的 or 条件逻辑。密钥文件挂载17.x 默认usePasswordFiles: true即通过MONGODB_ROOT_PASSWORD_FILE等文件路径挂载密码而非直接注入环境变量16.5.0 将该值改为默认 true对应 CHANGELOG 中 Set usePasswordFilestrue by default减少凭据泄露面。从 backup/cronjob.yaml 可以看到两种模式在模板中的分支实现。3.2 密码更新 JobpasswordUpdateJob16.3.0 引入的「password update job」是本 chart 一项重要的运维能力。它通过 Helmpre-upgradehook见 update-password/job.yaml 的helm.sh/hook: pre-upgrade注解在helm upgrade更换密码时自动执行使用MONGODB_PREVIOUS_ROOT_PASSWORD连接数据库通过mongosh执行db.changeUserPassword()更新 root、自定义用户与 metrics 用户的密码使用/job-status/*-changed文件标记已完成的用户保证幂等重试不会重复执行同时在 StatefulSet/Deployment 的 Pod 注解中写入charts.bitnami.com/password-last-update时间戳强制触发滚动更新。其 values 配置支持previousPasswords.rootPassword/previousPasswords.existingSecret当密码 Secret 已被预先变更时使用、backoffLimit、独立的安全上下文与资源预设等values.yaml。3.3 认证相关的历史修复CHANGELOG 中认证相关的修复密度极高可作排查参考16.5.2修复 mongodump Job 中因usePasswordFiles导致的认证失败13.18.4auth.enabledfalse时备份任务不再要求密码13.8.3 / 13.18.4auth.enabledfalse场景下升级与备份的兼容性10.28.0对 existingSecret 值支持模板函数tpl渲染10.1.3确保密码以字符串处理避免 YAML 数字被误读。四、TLS 与 mTLS证书的自动生成与引入4.1 tls 参数族TLS 能力在 9.x–13.x 期间持续完善当前配置集中在 values.yamltls: enabled: false # 开启集群内部节点间以及客户端-节点间 TLS mTLS: enabled: true # 启用后要求客户端也提供证书14.0.13 起可单独关闭 autoGenerated: true # 自动生成自签 CA 与证书 existingSecret: # 提供已有 CAmongodb-ca-cert / mongodb-ca-key caCert: # 自定义 CA 证书base64 caKey: # CA 私钥base64 pemChainIncluded: false # 证书文件是否已包含完整 CA 链13.14.0 新增 mode: requireTLS # 取值 allowTLS / preferTLS / requireTLS10.29.3 引入 tlsMode extraDnsNames: [] # 向 CA 追加额外 DNS 名称10.27.0 起支持10.30.3 扩展至 replicaset 架构 standalone/replicaset/hidden/arbiter: existingSecret(s): # 各成员可分别指定已有证书 Secret4.2 证书生成的实现路径当tls.autoGeneratedtrue时每个 MongoDB Pod 的 init 容器generate-tls-certs会调用 common-scripts-cm.yaml 中的generate-certs.sh脚本基于 chart 生成的 CAsecrets-ca.yaml为每个成员签发证书。从 replicaset/statefulset.yaml 可见该 init 容器通过 downward API 注入MY_POD_NAMESPACE、MY_POD_HOST_IP、MY_POD_NAME将证书 SAN 与 Pod 网络身份绑定备份 CronJob 同样拥有独立的generate-tls-certsinit 容器backup/cronjob.yaml。值得注意的历史修复13.6.8升级时不重新生成自签证书避免证书抖动导致集群不可用13.15.1TLS 开启时避免主机名校验失败12.1.5 / 10.30.7修正证书 SAN 字段避免 IP Address in the DNS Name field 弃用告警16.5.17TLS init 容器正确继承tls.securityContext。4.3 备份任务对 TLS 的适配当tls.enabledtrue时mongodump 命令会自动追加--ssl --sslPEMKeyFile/certs/mongodb.pem --sslCAFile/certs/mongodb-ca-certbackup/cronjob.yaml。14.0.5 专门修复了 standalone TLS 模式下备份不可用的问题。五、备份与恢复mongodump CronJob 实战5.1 启用定时备份备份功能由backup参数族控制模板见 templates/backupbackup: enabled: true cronjob: schedule: 0 2 * * * # 每天 2 点执行 timeZone: UTC # 时区16.2.2 起支持注意变量为 timeZone 驼峰命名 concurrencyPolicy: Forbid failedJobsHistoryLimit: 3 successfulJobsHistoryLimit: 3 startingDeadlineSeconds: 3600 backoffLimit: 5 # 15.1.0 起可配置 ttlSecondsAfterFinished: 300 restartPolicy: OnFailure resourcesPreset: micro storage: mountPath: /data/dump subPath: existingClaim: # 复用已有 PVC serviceAccount: name: # 16.5.10 起可为备份任务单独指定 SACronJob 生成的 Job 内执行mongodump --username${MONGODB_ROOT_USER} --password${MONGODB_ROOT_PASSWORD} \ --authenticationDatabaseadmin --host${MONGODB_SERVICE_NAME} --port27017 \ --gzip --archive/data/dump/mongodump-$(date %Y-%m-%d-%H-%M).gzreplicaset 架构下会自动追加--oplog以便生成时间点一致的快照backup/cronjob.yaml。备份数据默认写入自动创建的 PVCmongodump见 backup/pvc.yaml也可以配置existingClaim复用外部 PVC。13.18.0 还提供「trivial backup」的简化开关。5.2 恢复操作使用mongorestore从归档恢复mongorestore --usernameroot --passwordROOT_PASSWORD \ --authenticationDatabaseadmin --gzip \ --archive/data/dump/mongodump-时间戳.gz对于 replicaset 架构--oplog归档需要配合--oplogReplay进行日志回放以恢复到精确时间点。CHANGELOG 中与备份直接相关的修复包括14.4.9为备份 Job 设置认证数据库、13.18.4无认证模式下的备份、14.0.5TLS standalone 备份。六、监控与指标metrics 全家桶chart 内置基于mongodb-exporter的监控体系镜像版本见 Chart.yaml。模板包括 metrics-svc.yaml、servicemonitor.yaml、prometheusrule.yaml 与 networkpolicy.yaml。主要能力与演进ServiceMonitor 与 PrometheusRule10.24.0 支持relabelings/metricRelabelings10.0.1 与 11.1.10 修复 Prometheus 规则10.13.0 等版本持续更新。Exporter 探针与参数13.12.0 支持通过 chart values 传递 exporter 参数13.13.0 支持为 metrics 容器挂载额外卷12.1.0 允许自定义 metrics 容器的 command/args10.26.2 支持配置 exporter 的认证凭据。连接串细节16.4.6 使用实际主机名而非 localhost 构造 exporter URI16.5.1即 17.0.1 同批修复 URI 中特殊字符的 URL 编码问题12.1.2 修复 standalone 模式下 metrics 容器端口。探针端点13.6.7、12.1.30 相继调整 metrics liveness/readiness 探针端点因 exporter--test参数被移除。七、安全加固从 PSP 到 PSA 的演进安全是该 chart 迭代最密集的领域之一CHANGELOG 呈现出一条清晰的主线PSP 阶段10.5.0 启用 PodSecurityPolicy14.0.3 复用 common 的 PSP 能力10.28.6 将 PSP 标记为弃用。SecurityContext 强化15.0.0 以 breaking change 方式改进安全默认值14.12.0 增加readOnlyRootFilesystem支持14.6.0 完善 pod/container securityContext 的必备字段14.5.1 默认不自动挂载 ServiceAccount token14.7.0 将 SA token 挂载声明移至 Pod 声明。当前默认值见 values.yamlpodSecurityContextfsGroup: 1001、fsGroupChangePolicy: AlwayscontainerSecurityContextrunAsUser/runAsGroup: 1001、runAsNonRoot: true、readOnlyRootFilesystem: true、allowPrivilegeEscalation: false、capabilities.drop: [ALL]、seccompProfile: RuntimeDefaultautomountServiceAccountToken: false平台适配14.13.0 支持 OpenShift restricted-v2 SCC 自动适配global.compatibility.openshift.adaptSecurityContext: autovalues.yaml14.1.0 增加 PSAPod Security Admissionrestricted 策略支持14.0.10 修正 YAML 解析空格问题。NetworkPolicy14.1.1 引入 networkpolicy 模板14.8.1 默认开启15.2.0 完成策略评审16.4.2 移除模板中的未定义 rts 键。其他横切安全能力还包括global.security.allowInsecureImages镜像签名校验、serviceBindings.enabled生成 ServiceBinding 兼容 Secret13.7.0 引入、RBAC 自定义10.18.0、enableServiceLinks14.2.0 起可关闭避免大量 Service 环境变量拖慢启动、extraDeploy10.17.0与mongo-labeler侧车模式10.19.0 支持动态标记 primary Pod。八、其他关键演进与升级注意事项8.1 镜像与 OCI 化13.1.0 支持镜像 digest 寻址image.digest覆盖 tag13.10.0 使 charts 100% OCI 化安装命令为helm install my-release oci://registry-1.docker.io/bitnamicharts/mongodb15.5.0 起在替换非官方镜像时输出告警16.4.0 支持检测非标准镜像。8.2 资源与存储14.9.0 引入resourcesPresetnone/nano/micro/small/medium/large/xlarge/2xlarge主容器默认smallinit 容器默认nano/micro15.4.0 支持为volumeClaimTemplates配置 labels14.5.0 支持自定义持久卷名称与 PVC 名称15.6.14 使全局 StorageClass 成为默认值14.3.0 支持 StatefulSet 的 PVC 保留策略。8.3 稳定性修复12.1.21 / 14.12.1修复由探针导致的僵尸进程问题13.1.5支持自定义探针customLivenessProbe等见 values.yaml15.5.1liveness/readiness 使用不同的探针实现13.6.6增大探针超时10.15.3提升旧版本 MongoDB 的 readiness 兼容性。8.4 升级路径建议结合 CHANGELOG 中的 major 版本节点10.0.0 升级到 Helm v2 chart 格式、12.0.0 标准化、13.0.0/14.0.0/15.0.0 安全与结构调整、16.0.0/17.0.0 常规大版本升级时重点关注认证从环境变量迁移到usePasswordFiles的行为变化containerSecurityContext默认值收紧readOnlyRootFilesystem、capabilities drop对自定义镜像的兼容性密码更新需配合passwordUpdateJob与previousPasswords使用避免升级后认证失配旧版自定义证书需核对tls.pemChainIncluded与新 SAN 生成逻辑若使用 PSP注意其已被标记弃用并逐步移除。九、总结通过 CHANGELOG 的演进脉络可以清晰地看到Bitnami MongoDB chart 在六年内从单一 Deployment 形态成长为覆盖 standalone、replicaset、arbiter、hidden 多拓扑集成了认证轮换、自动 TLS、定时备份、Prometheus 监控与完整安全加固的成熟 Helm 包。理解这些版本节点背后的变更动机如 values.yaml 中usePasswordFiles默认值调整、update-password/job.yaml 的 hook 机制、backup/cronjob.yaml 的 TLS 适配将帮助你在实际部署与升级中精准定位参数、规避破坏性变更并正确规划生产环境的备份、监控与安全策略。赞分享云原生容器编排【免费下载链接】chartsBitnami Helm Charts项目地址https://gitcode.com/GitHub_Trending/charts30/charts点击查看免费下载相关推荐Bitnami MongoDB Helm Chart 完整实战指南架构、部署、TLS、监控、备份与升级Bitnami MongoDB Helm Chart 完整实战指南架构、部署、TLS、监控、备份与升级 MongoDB 是一款以 JSON 风格文档存储数据的云原生容器编排Bitnami Redis Helm Chart 版本演进与升级实战指南从 CHANGELOG 看 23.x 的功能全景Bitnami Redis Helm Chart 版本演进与升级实战指南从 CHANGELOG 看 23.x 的功能全景 本指南以 Bitnami Redis云原生容器编排Bitnami grafana-operator Helm Chart 完整解析从 CHANGELOG 看版本演进、安全加固与 Grafana 实例管理实战Bitnami grafana operator Helm Chart 完整解析从 CHANGELOG 看版本演进、安全加固与 Grafana 实例管理实战云原生容器编排上一篇Angular 动态组件渲染全指南NgComponentOutlet 与 ViewContainerRef 实战解析下一篇TRELLIS-500K 数据集构建全指南从元数据加载到稀疏结构/SLat 潜变量编码的完整数据管线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考