
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载Inbucket 是一款面向开发与测试场景的邮件测试工具能够在本地环境模拟完整的 SMTP/POP3/Web Mail 服务用于验证应用发送的邮件而无需连接真实邮件服务器。本文以当前仓库stable/inbucketChart 为依托完整讲解其安装、卸载、全部可配置参数及其在 Deployment、Service、Ingress、ConfigMap 中的底层实现机制帮助你在 Kubernetes 集群中快速搭建一套可用的开发邮件沙箱并掌握通过环境变量细粒度调整 Inbucket 行为的实战方法。一、Chart 概览与状态说明stable/inbucket是 Helm Charts 仓库中托管 Inbucket 应用的 Chart。从 Chart.yaml 可以看到其核心元数据名称inbucket版本3.1.2Chart 版本应用版本2.0.0对应 Inbucket 容器镜像的主版本关键词inbucket、mail、smtp、pop3、email、testing、disposable webmail描述DEPRECATED - Inbucket is an email testing application状态deprecated: true需要特别说明的是该 Chart 与当前仓库中的绝大多数 Chart 一样已随 Helm Charts 仓库于 2020 年 11 月归档不再更新。这意味着该 Chart 依然可以用于学习和历史环境的部署但官方不再维护使用前请自行评估安全性与兼容性并优先考虑维护活跃的替代方案例如同名项目的新版 Chart 或其他邮件测试工具。尽管如此该 Chart 的模板结构清晰、参数覆盖面广仍是学习 Helm 模板机制与 Inbucket 环境变量配置的极佳参考样本。二、快速开始TL;DR在默认配置下只需一条命令即可在集群中创建 Inbucket 部署$ helm install stable/inbucketChart 会创建 Deployment、Service、ConfigMap 等 Kubernetes 组件并输出访问指引详见下文「访问与验证」小节。三、前置条件运行 Kubernetes 1.8 集群且已启用 Beta API早期模板使用extensions/v1beta1版本的 Ingress见 ingress.yaml。已安装 Helm 客户端并完成 TillerHelm 2 时代或对应版本的服务端初始化。四、安装 Chart使用指定发布名release name安装$ helm install --name my-release stable/inbucket该命令会以默认配置将 Inbucket 部署到集群中。默认配置下创建的组件包括Deployment运行jhillyerd/inbucket容器ServiceClusterIP 类型的服务暴露 HTTP9000、SMTP2500、POP31100三个端口ConfigMap承载全部INBUCKET_*环境变量并通过envFrom注入容器。五、卸载 Chart$ helm delete my-release该命令会移除与发布关联的所有 Kubernetes 组件Deployment、Service、ConfigMap 等并删除该 release。六、配置参数详解安装时可以通过--set keyvalue或自定义 values 文件调整参数。下表列出 Chart 的核心可配置参数及其默认值以仓库 values.yaml 的实际内容为准README 中的部分字段名已与模板实现略有出入下文会逐一说明。6.1 镜像参数参数描述默认值image.repository容器镜像仓库jhillyerd/inbucketimage.tag容器镜像标签release-2.0.0image.pullPolicy镜像拉取策略IfNotPresent注意README 中标注的默认 tag 为release-1.2.0而仓库内 values.yaml 的实际默认值为release-2.0.0且 Chart.yaml 中appVersion: 2.0.0与之对应。实际安装以 values.yaml 为准README 表格中的旧值属于文档未及时同步的情况。6.2 Service 参数参数描述默认值service.annotationsService 的注解{}service.clusterIP集群内 Service IPservice.externalIPsService 外部 IP 地址列表[]service.loadBalancerIP负载均衡器 IP如支持service.loadBalancerSourceRanges允许访问负载均衡器的 IP CIDR 列表如支持[]service.type创建的服务类型ClusterIPservice.port.httpHTTP 端口需与INBUCKET_WEB_ADDR保持一致9000service.port.smtpSMTP 端口需与INBUCKET_SMTP_ADDR保持一致2500service.port.pop3POP3 端口需与INBUCKET_POP3_ADDR保持一致1100service.nodePort.http当service.type为NodePort且非空时指定 HTTP 的 nodePortservice.nodePort.smtp当service.type为NodePort且非空时指定 SMTP 的 nodePortservice.nodePort.pop3当service.type为NodePort且非空时指定 POP3 的 nodePort字段说明README 中写作service.node.http/service.node.smtp/service.node.pop3而模板 service.yaml 实际使用的是service.port.http/service.port.smtp/service.port.pop3结构请以 values.yaml 与模板实现为准。在 service.yaml 的实现中nodePort的注入带有条件判断仅当service.type为NodePort且对应nodePort值非空时才写入 Kubernetes 清单三个端口http/smtp/pop3分别通过targetPort: http、targetPort: smtp、targetPort: pop3指向容器端口。6.3 Ingress 参数参数描述默认值ingress.enabled是否创建 Ingressfalseingress.annotationsIngress 注解{}ingress.pathIngress 路径/ingress.hostsIngress 主机名列表[inbucket.example.com]ingress.tlsTLS 配置hosts secretName 列表[]启用 Ingress 的示例配置ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx hosts: - mail.example.com tls: - hosts: - mail.example.com secretName: tls-inbucket从 ingress.yaml 可以看出模板会将每个 host 都映射到同一条规则path 后端servicePort: http并将 Service 的 HTTP 端口9000作为后端目标。6.4 调度与资源参数参数描述默认值nodeSelector用于 Pod 调度的节点标签{}podAnnotations添加到 Pod 的注解{}resourcesPod 资源请求与限制{}在 deployment.yaml 中nodeSelector与podAnnotations均采用条件渲染仅当 values 非空时才写入清单resources则始终渲染默认空对象表示不设置资源限制。七、核心配置extraEnv 环境变量这是本 Chart 最有价值的配置入口。所有INBUCKET_*环境变量统一放在extraEnv下由 configmap.yaml 生成 ConfigMap再由 Deployment 通过envFrom.configMapRef注入容器见 deployment.yaml。默认环境变量及其含义如下全部取自 values.yaml环境变量默认值作用INBUCKET_LOGLEVELinfo日志级别INBUCKET_MAILBOXNAMINGlocal邮箱命名规则INBUCKET_SMTP_ADDR0.0.0.0:2500SMTP 监听地址与service.port.smtp对应INBUCKET_SMTP_DOMAINinbucketSMTP 服务域名INBUCKET_SMTP_MAXRECIPIENTS200单封邮件最大收件人数INBUCKET_SMTP_MAXMESSAGEBYTES10240000单封邮件最大字节数约 10 MBINBUCKET_SMTP_DEFAULTACCEPTtrue是否默认接受未知域邮件INBUCKET_SMTP_REJECTDOMAINS需要拒绝的域名列表逗号分隔INBUCKET_SMTP_DEFAULTSTOREtrue是否默认存储收件邮件INBUCKET_SMTP_DISCARDDOMAINS需要直接丢弃不存储的域名列表INBUCKET_SMTP_TIMEOUT300sSMTP 会话超时时间INBUCKET_POP3_ADDR0.0.0.0:1100POP3 监听地址与service.port.pop3对应INBUCKET_POP3_DOMAINinbucketPOP3 服务域名INBUCKET_POP3_TIMEOUT600sPOP3 会话超时时间INBUCKET_WEB_ADDR0.0.0.0:9000Web UI 监听地址与service.port.http对应INBUCKET_WEB_UIDIRuiWeb UI 静态资源目录INBUCKET_WEB_GREETINGFILEui/greeting.htmlWeb UI 欢迎页模板文件INBUCKET_WEB_TEMPLATECACHEtrue是否缓存模板INBUCKET_WEB_MAILBOXPROMPTinbucketWeb UI 邮箱输入提示符INBUCKET_WEB_COOKIEAUTHKEYCookie 认证密钥INBUCKET_WEB_MONITORVISIBLEtrue是否显示监控面板INBUCKET_WEB_MONITORHISTORY30监控历史条数INBUCKET_STORAGE_TYPEmemory存储类型如memory、file、bolt等INBUCKET_STORAGE_PARAMS存储类型对应的参数INBUCKET_STORAGE_RETENTIONPERIOD24h邮件保留周期INBUCKET_STORAGE_RETENTIONSLEEP50ms清理任务轮询间隔INBUCKET_STORAGE_MAILBOXMSGCAP500单个邮箱最大邮件数自定义环境变量的覆盖方式$ helm install --name my-release \ --set-string extraEnv.INBUCKET_SMTP_MAXMESSAGEBYTES52428800 \ --set extraEnv.INBUCKET_STORAGE_TYPEfile \ --set extraEnv.INBUCKET_STORAGE_PARAMS/data \ stable/inbucket或直接在自定义 values 文件中修改extraEnv: INBUCKET_LOGLEVEL: debug INBUCKET_SMTP_DOMAIN: test.local INBUCKET_SMTP_MAXRECIPIENTS: 50 INBUCKET_STORAGE_TYPE: file INBUCKET_STORAGE_PARAMS: /var/lib/inbucket INBUCKET_STORAGE_RETENTIONPERIOD: 48h INBUCKET_WEB_COOKIEAUTHKEY: a-secret-key-for-session-cookies这种「ConfigMap envFrom」的注入方式意味着修改extraEnv后需要重新渲染并滚动更新 DeploymentConfigMap 会随 Helm 升级自动更新而容器会因环境变量变化而重建。八、底层机制端口、探针与健康检查从 deployment.yaml 可以看到容器的关键规格容器端口定义固定值与 values 中的service.port.*语义对应http9000TCPsmtp2500TCPpop31100TCP存活探针livenessProbeTCP Socket 探测 SMTP 端口initialDelaySeconds: 10、timeoutSeconds: 5就绪探针readinessProbe同样探测 SMTP 端口参数一致。也就是说只要 SMTP 端口可以建立 TCP 连接Pod 即被视为存活且就绪。修改INBUCKET_SMTP_ADDR时需同时保持与探测端口及 Service 端口的一致性否则可能导致健康检查失效。九、访问 Inbucket 的三种方式9.1 集群内 DNS 访问安装后集群内部可通过以下 DNS 名访问来自 NOTES.txt{{ release名 }}-inbucket.{{ namespace }}.svc.cluster.local9.2 端口转发开发调试推荐Web UIexport POD_NAME$(kubectl get pods --namespace namespace -l appinbucket,releaserelease -o jsonpath{.items[0].metadata.name}) kubectl port-forward --namespace namespace $POD_NAME 9000或直接转发 Servicekubectl port-forward --namespace namespace service/release-inbucket 9000SMTP 服务器kubectl port-forward --namespace namespace service/release-inbucket 2500POP3 服务器kubectl port-forward --namespace namespace service/release-inbucket 1100随后在浏览器访问http://localhost:9000即可打开 Inbucket Web Mail 界面将应用 SMTP 指向localhost:2500即可在测试环境收发邮件。9.3 NodePort / LoadBalancer若需集群外部直接访问可将service.type改为NodePort并指定 nodePortservice: type: NodePort nodePort: http: 30080 smtp: 30250 pop3: 30110在云环境或支持 LoadBalancer 的集群中也可以将service.type设为LoadBalancer配合service.loadBalancerIP与service.loadBalancerSourceRanges控制访问来源。十、验证与自动化测试Chart 内置了两个测试资源通过helm test触发inbucket-config-test.yaml生成一个包含 bats 测试脚本的 ConfigMapinbucket-test.yaml启动一个临时测试 Pod使用dduportal/bats:0.4.0镜像执行测试。测试脚本核心逻辑见 inbucket-config-test.yamltest Testing Inbucket is accessible { curl --retry 48 --retry-delay 10 release-inbucket.namespace.svc.cluster.local:9000 }即通过curl重试访问集群内 Service 的 HTTP 端口验证 Inbucket Web 服务可访问。执行方式$ helm test my-release十一、限制与注意事项该 Chart 已标记deprecated: true见 Chart.yaml且所属 Helm Charts 仓库整体归档不再获得更新与安全修复默认存储类型为memoryINBUCKET_STORAGE_TYPE: memoryPod 重建后邮件数据将丢失如需持久化应改用file或bolt等存储类型并配合持久卷挂载README 中部分参数名如service.node.http与 values.yaml / 模板实际字段service.port.http不一致且 README 标注的默认镜像 tag 落后于 values.yaml实操请以 values.yaml 为准修改INBUCKET_SMTP_ADDR、INBUCKET_WEB_ADDR、INBUCKET_POP3_ADDR时需同步调整service.port.*并确保健康检查探测端口仍然有效Ingress 模板使用extensions/v1beta1API 版本在较新版本 Kubernetes 集群中可能无法直接使用需要升级模板或改用其他入口方案。十二、相关参考文件主文档stable/inbucket/README.md默认值定义stable/inbucket/values.yamlChart 元数据stable/inbucket/Chart.yamlDeployment 模板stable/inbucket/templates/deployment.yamlService 模板stable/inbucket/templates/service.yamlIngress 模板stable/inbucket/templates/ingress.yamlConfigMap 模板stable/inbucket/templates/configmap.yaml安装后提示stable/inbucket/templates/NOTES.txt测试脚本stable/inbucket/templates/tests/inbucket-config-test.yaml 与 stable/inbucket/templates/tests/inbucket-test.yaml综上所述stable/inbucketChart 以极少的配置项即可在 Kubernetes 中搭建一套完整的 SMTP/POP3/Web 邮件测试环境。理解其extraEnv环境变量体系与「ConfigMap → envFrom → 容器」的注入链路是灵活定制 Inbucket 行为、让邮件测试真正贴合业务场景的关键。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐抖音批量下载器避坑实战从 Cookie 获取到批量下载稳定跑通的路径抖音批量下载器避坑实战从 Cookie 获取到批量下载稳定跑通的路径 请求被 403 拦下、翻页停在 20 条、几天前存好的 Cookie 突然失效——用抖音探索Inbucket一款强大的邮件测试工具探索Inbucket一款强大的邮件测试工具 是一个开源项目提供了一个简单的Web界面和RESTful API用于接收、查看和管理电子邮件是开发者进行邮件后端开发工具COSBench Helm Chart 实战指南在 Kubernetes 上部署云对象存储基准测试工具COSBench Helm Chart 实战指南在 Kubernetes 上部署云对象存储基准测试工具 导读 COSBenchCloud Object St创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考