
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本篇指南基于 stable/rocketchat/README.md 及其仓库源码系统讲解如何通过 Helm 在 Kubernetes 集群中部署 Rocket.Chat 团队聊天平台。你将掌握一键安装、MongoDB 数据库绑定、SMTP 邮件、Ingress 暴露、弹性伸缩与 PodDisruptionBudget 高可用配置以及从旧版本无损升级的完整实操方案。注意本仓库已于 2020 年 11 月归档stable/rocketchatChart 已标记为 deprecated详见 Chart.yaml不再更新。文中命令与配置以仓库当前内容为准适用于归档快照的复现、学习与迁移参考。一、Chart 概览与工作原理Rocket.Chat 是一款免费、开源、不限用户数的团队聊天软件用于替代邮件、HipChat 与 Slack 等封闭式协作工具。本 Chart 使用 Helm 包管理器在 Kubernetes 上启动一个完整的 Rocket.Chat 部署核心组件包括Rocket.Chat 应用 Deployment运行官方镜像docker.io/rocketchat/rocket.chat暴露容器端口3000见 deployment.yaml。MongoDB 依赖Chart 通过 requirements.yaml 声明对stable/mongodb版本 7.x的可选依赖默认以 ReplicaSet 模式部署一个 Primary 实例这是 Rocket.Chat 1.x 及以后版本的运行前提。配套 Kubernetes 资源Service、Ingress、Secret、PVC、ServiceAccount 与 PodDisruptionBudget全部由 templates 目录下的模板渲染生成。Chart 元信息Chart.yaml显示appVersion: 3.6.0、version: 2.0.10关键词涵盖 chat、communication、web、nodejs、meteor 等适合快速定位。二、快速安装TL;DR使用一条命令完成带随机 MongoDB 密码的安装$ helm install stable/rocketchat --set mongodb.mongodbPassword$(echo -n $(openssl rand -base64 32)),mongodb.mongodbRootPassword$(echo -n $(openssl rand -base64 32))命令说明mongodb.mongodbPassword为 Rocket.Chat 应用连接 MongoDB 的业务账号密码mongodb.mongodbRootPassword为 MongoDB root 账号密码root 凭证将用于连接 MongoDB OpLog见 README.md 的 Database Setup 警告若不设置密码模板渲染时会通过required函数强制报错防止无密码部署见 secret.yaml。2.1 前置条件Kubernetes 集群与 Helm 客户端可用默认情况下stable/mongodb依赖图要求底层基础设施支持 PVPersistent Volume可通过mongodb.persistence.enabledfalse关闭使用归档仓库需先在本地配置stable/rocketchat的 Chart 路径或镜像源。三、安装与卸载3.1 安装以 release 名称rocketchat安装$ helm install --name rocketchat stable/rocketchat参数--name指定 release 名称所有资源对象名均以rocketchat-前缀命名见 _helpers.tpl 的rocketchat.fullname定义{Release.Name}-{Chart.Name}并截断至 63 字符以满足 DNS 规范。3.2 卸载$ helm delete rocketchat3.3 安装后访问方式Chart 的 NOTES.txt 提供了三种接入方式集群内 DNS 访问http://rocketchat-rocketchat.namespace本地端口转发$ kubectl port-forward --namespace namespace $(kubectl get pods --namespace namespace -l app.kubernetes.io/namerocketchat,app.kubernetes.io/instancerelease -o jsonpath{ .items[0].metadata.name }) 8888:3000进入容器调试$ kubectl exec -i -t --namespace namespace $(kubectl get pods --namespace namespace -l app.kubernetes.io/namerocketchat,app.kubernetes.io/instancerelease -o jsonpath{.items[0].metadata.name}) /bin/sh跟踪日志$ kubectl logs -f --namespace namespace $(kubectl get pods --namespace namespace -l app.kubernetes.io/namerocketchat,app.kubernetes.io/instancerelease -o jsonpath{ .items[0].metadata.name })四、完整配置参数以下参数表来自 README.md 并对照 values.yaml 校正了实际默认值可通过--set keyvalue[,keyvalue]传入或使用-f values.yaml指定 YAML 文件。参数描述默认值image.repository镜像仓库docker.io/rocketchat/rocket.chatimage.tag镜像标签values.yaml 实际为3.6.03.2.2image.pullPolicy镜像拉取策略IfNotPresenthostRocket.Chat 主机名同时用于 Ingress启用时replicaCount副本数1smtp.enabled启用 SMTP 发送邮件falsesmtp.usernameSMTP 账号smtp.passwordSMTP 密码smtp.hostSMTP 服务器主机名smtp.portSMTP 端口587extraEnv额外环境变量使用tpl函数渲染须为字符串podAntiAffinityPod 反亲和soft倾向不共节点、hard强制不共节点、禁用podAntiAffinityTopologyKey反亲和的 topologyKeykubernetes.io/hostnameaffinity自定义亲和规则{}minAvailablePDB 最少可用 Pod 数/百分比1externalMongodbUrl外部 MongoDB 的 URLexternalMongodbOplogUrl外部 MongoDB OpLog URL设置externalMongodbUrl后必填mongodb.enabled启用/禁用 MongoDB 依赖truepersistence.enabled使用 PVC 持久化使用默认且推荐的 GridFS 存储时不必启用falsepersistence.storageClassPVC 存储类persistence.accessModePVC 访问模式ReadWriteOncepersistence.sizePVC 大小8Gipersistence.existingClaim复用已有 PVC 名称resourcesPod 资源请求与限制{}securityContext.enabled启用 Pod 安全上下文truesecurityContext.runAsUser运行用户999securityContext.fsGroupfs 组999serviceAccount.create是否创建 ServiceAccounttrueserviceAccount.nameServiceAccount 名称未设置且 create 为 true 时用 fullname 模板生成ingress.enabled是否创建 Ingressfalseingress.annotationsIngress 注解{}ingress.pathIngress 路径/ingress.tlsIngressTLS 列表[]livenessProbe.enabled开启存活探针truelivenessProbe.initialDelaySeconds探针启动延迟60livenessProbe.periodSeconds探针周期15livenessProbe.timeoutSeconds探针超时5livenessProbe.failureThreshold连续失败阈值3livenessProbe.successThreshold连续成功阈值1readinessProbe.enabled开启就绪探针truereadinessProbe.initialDelaySeconds探针启动延迟10readinessProbe.periodSeconds探针周期15readinessProbe.timeoutSeconds探针超时5readinessProbe.failureThreshold连续失败阈值3readinessProbe.successThreshold连续成功阈值1service.annotationsService 注解{}service.labelsService 额外标签{}service.typeService 类型ClusterIPservice.portService 端口80service.nodePortNodePort 类型时使用的节点端口podLabelsPod 额外标签{}podAnnotationsPod 额外注解{}4.1 使用 values 文件安装$ helm install --name rocketchat -f values.yaml stable/rocketchat完整的可编辑模板见 stable/rocketchat/values.yaml其中包含大量注释示例例如host、extraEnv的MONGO_OPTIONS、externalMongodbUrl的 URL 格式、resources的512Mi/300m示例等。五、数据库设置Rocket.Chat 使用 MongoDB 持久化数据。默认情况下 Chart 会部署stable/mongodb依赖并以 ReplicaSet 模式创建单个 Primary 实例——这是 Rocket.Chat 1.x 及以后版本运行的最低要求。使用默认配置时务必至少设置mongodb.mongodbRootPassword、mongodb.mongodbUsername与mongodb.mongodbPassword三个值更多 MongoDB 配置请参考 stable/mongodb 文档。5.1 数据库连接 URI 的生成机制从源码看MongoDB 连接信息不是写死在 Deployment 中而是由 secret.yaml 动态拼装并 Base64 编码后存入 SecretDeployment 再通过secretKeyRef注入环境变量见 deployment.yaml{{- $fullname : include rocketchat.mongodb.fullname . -}} {{- $username : required Please specify a MongoDB username .Values.mongodb.mongodbUsername }} {{- $password : required Please specify a MongoDB password .Values.mongodb.mongodbPassword }} {{- $rootPassword : required Please specify a MongoDB password .Values.mongodb.mongodbRootPassword }} {{- $rsName : .Values.mongodb.replicaSet.name }} {{- $port : .Values.mongodb.service.port }} {{- $dbname : required Please specify a MongoDB database .Values.mongodb.mongodbDatabase }} mongo-uri: {{ printf mongodb://%s:%s%s:%.0f/%s $username $password $fullname $port $dbname | b64enc | quote }} mongo-oplog-uri: {{ printf mongodb://root:%s%s:%.0f/local?replicaSet%sauthSourceadmin $rootPassword $fullname $port $rsName | b64enc | quote }}要点应用连接串MONGO_URL使用业务账号访问rocketchat数据库OpLog 连接串MONGO_OPLOG_URL使用root 凭证访问local库并携带replicaSet名称与authSourceadmin这是 Rocket.Chat 高可用模式读取副本集变更流的必需配置所有必填项缺失时模板渲染直接报错从机制上杜绝了弱配置部署。同时Deployment 模板为 Pod 注入DEPLOY_PLATFORMhelm-chart与INSTANCE_IP取自status.podIP并在注解中写入checksum/secretSecret 内容的 SHA256使 Secret 变更后 Pod 自动滚动更新。5.2 使用外部数据库若已有 MongoDB 实例可禁用内置依赖并指定连接信息$ helm install --name rocketchat stable/rocketchat \ --set mongodb.enabledfalse \ --set externalMongodbUrlmongodb://user:passwordlocalhost:27017/rocketchat \ --set externalMongodbOplogUrlmongodb://user:passwordlocalhost:27017/local?replicaSetrs0authSourceadmin外部数据库模式下secret.yaml 会直接使用这两个 URL 生成mongo-uri与mongo-oplog-uri且externalMongodbOplogUrl为required必填项——因为 Rocket.Chat 1.x 依赖 OpLog 实现实时同步缺少它将无法正常工作。六、配置额外环境变量extraEnv使用 Helm 的tpl函数渲染因此内容必须写成字符串形式YAML 块标量且可以引用.Values等模板上下文。示例extraEnv: | - name: MONGO_OPTIONS value: {ssl: true}在 values.yaml 中还给出了另一个常用示例——直接覆盖 OpLog 连接extraEnv: # | # - name: MONGO_OPLOG_URL # value: mongodb://oploguser:passwordrocket-1:27017/localreplicaSetrs0从实现看deployment.yaml 通过{{ tpl .Values.extraEnv $ | indent 8 }}将内容渲染进容器env数组因此它本质上是任意合法的 env 条目列表适用于注入ROOT_URL覆盖、MONGO_OPTIONS等任意 Rocket.Chat 环境变量。七、增加服务器容量与高可用HA配置7.1 水平扩容Rocket.Chat 服务实例支持跨集群可用资源水平扩展$ kubectl scale --replicas3 deployment/rocketchat或通过--set replicaCount3在安装时指定。扩容后多副本共享同一个 MongoDB ReplicaSetRocket.Chat 通过MONGO_OPLOG_URL感知实时变更。7.2 Pod 反亲和为避免多副本被调度到同一节点故障时整体不可用可配置反亲和podAntiAffinity: soft # 倾向不共节点无硬性保证 podAntiAffinity: hard # 强制不共节点 podAntiAffinity: # 禁用反亲和 podAntiAffinityTopologyKey: kubernetes.io/hostname # 可改为 failure-domain.beta.kubernetes.io/zone源码实现deployment.yamlsoft渲染为preferredDuringSchedulingIgnoredDuringExecution权重 100按 topologyKey 匹配同 Chart 副本hard渲染为requiredDuringSchedulingIgnoredDuringExecution硬性约束同时支持affinity字段传入任意自定义亲和规则两者可叠加。7.3 PodDisruptionBudget当replicaCount 1时模板自动生成 PDB见 poddisruptionbudget.yamlminAvailable默认1保证节点维护/驱逐时始终有可用副本minAvailable: 17.4 持久化与数据卷Rocket.Chat 的默认且推荐文件存储方式是 MongoDB GridFS因此 values.yaml 中persistence.enabled默认为false此时 Deployment 的/app/uploads挂载emptyDir见 deployment.yaml。如需本地持久化上传文件可启用 PVCpersistence: enabled: true storageClass: # - 表示禁用动态供给留空使用集群默认供给器AWS gp2、GKE standard 等 accessMode: ReadWriteOnce size: 8Gi existingClaim: # 复用已有 PVC 时填写名称对应模板 pvc.yaml 会创建ReadWriteOnce、8Gi的 PVCstorageClass为-时渲染为空字符串以禁用动态供给。注意上传数据实际存储于 MongoDB 时该 PVC 仅承载/app/uploads本地文件。7.5 探针与滚动更新Deployment 默认启用 HTTP 探针请求路径为/api/info、端口为容器http3000livenessinitialDelaySeconds60、periodSeconds15、timeout5、failureThreshold3readinessinitialDelaySeconds10其余同上。滚动更新策略为maxSurge: 1、maxUnavailable: 1deployment.yaml配合 readiness 探针可安全灰度替换旧副本。八、网络暴露Service 与 Ingress8.1 Serviceservice.yaml 生成 Service默认ClusterIP端口80转发到容器http端口3000设为NodePort时可指定service.nodePort。也支持注解如 AWS 负载均衡器内部模式service.beta.kubernetes.io/aws-load-balancer-internal与自定义 labels。8.2 Ingress设置host并启用 Ingress 后对外提供服务$ helm install --set hostchat.yourdomain.com --set ingress.enabledtrue stable/rocketchatingress.yaml 支持ingress.path默认/与ingress.annotations如kubernetes.io/ingress.class: nginxingress.tls列表每个条目含hosts与secretName自动生成 Ingress TLS 段。同时设置host后 Deployment 会自动注入ROOT_URLhttps://host环境变量见 deployment.yaml使 Rocket.Chat 生成的链接与访问域名一致。九、SMTP 邮件配置启用 SMTP 后Chart 会将账号信息拼装为smtp://user:passhost:port并 Base64 编码写入 Secretsecret.yamlDeployment 据此注入MAIL_URL环境变量deployment.yaml。配置示例smtp: enabled: true username: noreplyexample.com password: your-smtp-password host: smtp.example.com port: 587十、升级注意事项10.1 升级至 1.1.0Rocket.Chat 1.xRocket.Chat 1.x 要求 MongoDB 以 ReplicaSet 运行。使用内置stable/mongodb依赖mongodb.enabledtrue时启用 ReplicaSet 会删除原有 PVC 并重建新卷。务必先备份当前 MongoDB 数据升级完成后恢复数据否则将丢失聊天记录。10.2 从 1.0.0 之前版本升级向后兼容性需要手动修正 Deployment 标签。假设 release 名为rocketchat升级前先执行$ kubectl delete deployment rocketchat-rocketchat --cascadefalse该命令以不级联删除的方式摘除旧 Deployment--cascadefalse保留 Pod 运行直至新版替换完成是规避标签不匹配导致滚动更新失控的官方推荐工作流。十一、CI 验证与最佳实践参考仓库内置了 Chart 校验配置 stable/rocketchat/ci/ci-values.yaml给出了生产化部署的关键取值host: rocketchat.example.com ingress: enabled: true mongodb: mongodbRootPassword: 强随机 root 密码 mongodbPassword: 强随机业务密码结合前文可以总结一套推荐部署组合强随机 MongoDB 密码README 推荐用openssl rand -base64 32生成 外部域名host 启用 Ingress podAntiAffinity: soft/hardreplicaCount 2minAvailable: 1 开启探针。这组配置同时覆盖了单机体验与多副本高可用两类场景可作为实际部署的起点模板。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐ZeroTier One 点对点虚拟组网完整上手从单命令到私有局域网ZeroTier One 点对点虚拟组网完整上手从单命令到私有局域网 三台设备分别挂在三个运营商的 NAT 后面想拼出一个能互 ping 的私有局域网。ZeOpenShell Helm Chart 部署指南在 Kubernetes 上安装与配置 OpenShell 网关OpenShell Helm Chart 部署指南在 Kubernetes 上安装与配置 OpenShell 网关 导读 本文以 deploy/helm/op人工智能AI Agent自主智能体Agent 沙箱AI 安全治理形式化验证后端CLIEMQX JWT 认证 JWKS 拉取客户端 HTTP/1.1 合规性修复显式注入 TE: trailers 头EMQX JWT 认证 JWKS 拉取客户端 HTTP/1.1 合规性修复显式注入 TE: trailers 头 本篇文章围绕 EMQX 变更记录 fix 1上一篇LeaguePrank核心原理完整指南英雄联盟lockfile解析与LCU API本地认证机制下一篇256字节keyBox逐行拆解ncmdumpGUI中RC4密钥排布算法深度剖析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考