)
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载Riemann 是一款用于监控分布式系统的事件流处理器其核心能力体现在基于 Clojure 的流式配置语言上——你可以用一段声明式代码定义“如何聚合、筛选、转发、响应所有事件”。本文以 Helm Charts 仓库 incubator/riemann 为对象完整讲解该 Chart 的安装方式、全部可配置参数、默认 Riemann 配置的逐行含义并结合 Chart 源码揭示 ConfigMap 注入、Deployment 探针、Service 端口暴露等底层实现细节帮助你在 Kubernetes 中快速部署一个可接收 TCP/UDP/WebSocket 事件的 Riemann 实例。注意受 Helm 官方仓库归档计划影响自 2020 年 11 月 13 日起本仓库中的 Chart 不再更新incubator/riemann本身也已在 Chart.yaml 中标记deprecated: true。本文内容以仓库当前实际文件为准适合用于了解该 Chart 的实现思路或在历史环境中复现部署。Riemann 是什么事件流处理器Riemann 面向“监控分布式系统”这一场景设计服务器、应用和各类探针不断向它推送事件eventRiemann 通过一段运行在 JVM 上的 Clojure 流配置实时对这些事件做索引、聚合、阈值判断、速率计算与转发最终驱动告警或持久化。其最关键的设计是“配置即程序”监听端口上的每一条事件都进入streams定义的处理管线管线由 Clojure 函数组合而成例如index、default、periodically-expire流配置以文件形式下发Riemann 加载后即生效。本仓库中该 Chart 的元信息见 Chart.yaml将关键词定义为riemann、metrics、monitoring版本为0.1.4对应的应用版本appVersion为0.2.14镜像来自raykrueger/riemann。从源码结构看这个 Chart 只负责把 Riemann 进程跑起来真正的行为逻辑全部收敛在riemann.config这一份配置里。安装一条命令拉起 Riemann仓库 README 给出的安装方式是先添加 incubator 仓库源再执行安装helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm install incubator/riemann安装完成后Chart 会创建一个 Deployment、一个 Service 和一个 ConfigMap详见下文“Chart 资源构成”。NOTES.txttemplates/NOTES.txt会提示集群内访问 Riemann 的 DNS 名称格式为{release-name}-riemann.{namespace}.svc.cluster.local即端口 5555TCP/UDP与 5556WebSocket都可通过该名称从集群内部访问。配置参数总览README 建议优先通过values.yaml覆盖 Riemann 配置。下表完整列出该 Chart 支持的全部参数及其默认值参数描述默认值replicaCount运行多少个副本。Riemann 实际上只能以单副本工作1image.repository使用的镜像名称不含 tagraykrueger/riemannimage.tag镜像标签0.2.14image.pullPolicyKubernetes 镜像拉取策略IfNotPresentservice.typeService 类型ClusterIPservice.ports.udpService 监听的 UDP 端口5555service.ports.tcpService 监听的 TCP 端口5555service.ports.websocket供 WebSocket 使用的监听端口5556resources施加的资源限制Noneriemann.config实际加载进 Riemann 应用内的配置见 values.yaml对应的默认值定义在 values.yaml 中可直接作为覆盖模板使用。参数背后的实现从 values 到 Kubernetes 资源这些参数并非孤立存在它们分别驱动着 templates/deployment.yaml 与 templates/service.yaml 中的具体字段replicaCount直接写入 Deployment 的spec.replicasvalues.yaml 注释明确说明 Riemann 不支持开箱即用的水平扩展因此预期值就是1image.repository与image.tag拼接成{{ .Values.image.repository }}:{{ .Values.image.tag }}image.pullPolicy原样传入容器规范service.type决定 Service 类型默认ClusterIPservice.ports.*决定 Service 对外暴露的端口三个端口分别命名为riemann-tcp、riemann-udp、riemann-wsresources以{}形式透传为容器的resources字段默认不设置任何限制。Deployment 中容器的三个端口templates/deployment.yaml与 Service 端口一一对应TCP 5555、UDP 5555、WebSocket TCP 5556且都以具名端口named port方式引用Service 通过targetPort: riemann-tcp等名称完成绑定配置修改后无需同步数字端口。存活与就绪探针TCP 探测的启用条件Deployment 模板中templates/deployment.yaml存在一个值得注意的实现细节只有当service.ports.tcp被设置非空时容器才会附带探针livenessProbeTCP Socket 探测riemann-tcp端口initialDelaySeconds: 10readinessProbeTCP Socket 探测riemann-tcp端口initialDelaySeconds: 5。也就是说Riemann 的“存活”与“就绪”都以 TCP 端口可连通为判据如果你把service.ports.tcp置空探针会一并消失这从源码结构看是 Chart 有意为之的开关式设计。默认 Riemann 配置逐行解读README 强调“建议用 values.yaml 覆盖 Riemann 配置”而默认配置本体就写在 values.yaml 的riemann.config中。它是一段 Clojure 流配置官方默认配置的基础上被修改为“日志输出到控制台”。逐段含义如下;Init Logging (logging/init {:console true})初始化日志将输出定向到标准输出console这正是 README“Logging”一节所述“Riemann 引擎默认向 stdout 记录日志”的配置来源。; Listen on the local interface over TCP (5555), UDP (5555), and websockets (5556) (let [host 0.0.0.0] (tcp-server {:host host}) (udp-server {:host host}) (ws-server {:host host}))同时开启三个监听入口TCP 5555、UDP 5555、WebSocket 5556全部绑定0.0.0.0与 Service/Deployment 暴露的端口严格一致保证外部事件能真正进入处理管线。; Expire old events from the index every 5 seconds. (periodically-expire 5 {:keep-keys [:host :service :tags]})每 5 秒清理一次索引中过期的旧事件同时保留:host、:service、:tags这些键避免因少量字段缺失导致索引记录失真。(let [index (index)] ; Inbound events will be passed to these streams: (streams (default :ttl 60 ; Index all events immediately. index #(info %) )))核心管线创建内存索引index在streams中对所有入站事件设置默认 TTL 为 60 秒先立即写入索引再通过#(info %)把每条事件打印到日志。README 的 Logging 一节提示“所有收到的事件都会打印到 stdout”正是这一行的效果同时提醒用户可根据需要调低日志量避免事件洪峰打爆日志。配置的注入链路ConfigMap 与缩进陷阱riemann.config并不会被硬编码进镜像而是经由 ConfigMap 注入容器。完整链路是templates/configmap.yaml 创建名为{release-name}-riemann的 ConfigMap数据键为riemann.config模板中的注释明确警告“This must be slammed left to parse correctly”即通过{{- .Values.riemann.config | indent 4 }}将整段配置统一缩进 4 格写入保证 YAML 块标量block scalar解析正确Deployment 将 ConfigMap 以卷形式挂载到容器的/usr/local/etc/riemann见 templates/deployment.yamlRiemann 进程读取该目录下的配置并执行。因此自定义配置时只需在 values 中覆写riemann.config并留意缩进正确即可——这是该 Chart 唯一需要小心格式的地方。Chart 资源构成与命名约定从目录结构看该 Chart 共由 4 个模板文件支撑templates/_helpers.tpl定义riemann.nameChart 名称支持nameOverride截断至 63 字符与riemann.fullname{release}-{chart}拼接后同样截断 63 字符遵循 DNS 命名规范templates/configmap.yaml承载riemann.configtemplates/deployment.yamlDeployment 主资源含探针、端口、卷挂载templates/service.yamlService按service.ports.*动态渲染三个具名端口对应模板中的{{- if }}条件块。所有资源共用app、chart、release、heritage四类标签便于按 release 筛选与追溯。riemann.fullname同时用于 ConfigMap、Deployment 与 Service 的命名也出现在 NOTES.txt 的 DNS 提示中全 Chart 命名保持一致。日志与运维要点默认日志全量输出riemann.config中的(logging/init {:console true})与#(info %)意味着每条入站事件都会进入 stdout便于调试但生产环境建议按需调低单副本约束Riemann 的索引与流状态保存在进程内values.yaml 与 README 均明确其只能单副本工作replicaCount默认且预期为1探针依赖 TCP 5555就绪/存活探测以riemann-tcp端口连通为准确保服务只有在端口可访问时才被纳入负载均衡集群内访问通过{release-name}-riemann.{namespace}.svc.cluster.local的 5555TCP/UDP与 5556WebSocket端口即可接入事件流。结语incubator/riemann是一个“小而完整”的 Helm Chart它把 Riemann 的单副本部署、三端口暴露、探针与配置注入全部封装进四个模板而把真正的行为逻辑交给一段可读性极佳的 Clojure 流配置。即便 Chart 本身已标记废弃其“ConfigMap 注入配置 具名端口 TCP 探针”的组合方式对于理解 Riemann 在 Kubernetes 中的部署形态仍具有清晰的参考价值。若需实际使用建议以本仓库 values.yaml 为起点覆写riemann.config并保留单副本与三端口监听的核心结构。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐Helm 部署 Vault UIGoldfish Chart 完整配置指南incubator/goldfishHelm 部署 Vault UIGoldfish Chart 完整配置指南incubator/goldfish Goldfish 是一款开源的 Vaultzsh-git-prompt 符号详解如何快速解读分支跟踪与状态信息zsh git prompt 符号详解如何快速解读分支跟踪与状态信息 zsh git prompt 是一款强大的 Git 状态提示工具能够在 zsh 终端中vscode-icons图标宝库探索600自定义图标资源的终极指南 vscode icons图标宝库探索600自定义图标资源的终极指南 vscode icons图标宝库 为Visual Studio Code用户提供了上一篇MXNet 集成 Intel MKL-DNN多平台源码构建、后端验证与 INT8 量化实战指南下一篇electron-vue 项目文件结构实战指南渲染进程与主进程的目录组织与源码解读创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考