
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本篇技术指南聚焦当前仓库 stable/helm-exporter 目录下的 Helm Chart讲解如何将 helm-exporter、service.yaml、servicemonitor.yaml 等模板源码理解镜像参数、Tiller 命名空间探测、健康探针、RBAC、Ingress 以及 ServiceMonitor 抓取配置的底层实现原理可直接在真实集群中完成部署与定制。1. 概览helm-exporter 能做什么本 Chart 的作用是在 Kubernetes 集群中引导bootstrap一个 helm-exporter Deployment。helm-exporter 本身是一个用于将 Helm 发布Release统计信息导出到 Prometheus 的轻量级服务典型使用场景是运维团队希望以 Prometheus 指标的形式观察集群中所有 Helm Release 的状态如DEPLOYED、FAILED、DELETED等再结合 Grafana 面板做可视化或告警。该 Chart 的声明信息见 Chart.yaml如下name:helm-exporterversion:0.3.3appVersion:0.4.0即默认导出的 helm-exporter 应用版本description: Exports helm release stats to prometheusdeprecated: true该 Chart 已标记为弃用、不再维护源码已迁移到 helm-exporter 项目自身仓库本文仅用于了解历史 Chart 的部署方式与配置结构一个值得注意的配套能力Chart 自带一个 ServiceMonitor可与仓库 stable/prometheus-operator 配合使用实现声明式的指标抓取无需手工维护 Prometheus 配置。2. 快速开始TL;DR默认配置下直接安装即可$ helm install stable/helm-exporter该命令会在当前集群默认命名空间中部署 helm-exporter对外暴露 9571 端口的 metrics 服务。默认配置适合先跑通环境生产使用建议结合下文第 4、5 节的参数定制。3. 安装与卸载 Chart3.1 安装以 release 名称my-release安装$ helm install stable/helm-exporter --name my-release说明--name是 Helm 2 时代指定 release 名称的语法若你使用 Helm 3应使用--name-template my-release或直接helm install my-release stable/helm-exporter。命令执行后helm-exporter 会以默认配置部署到 Kubernetes 集群中。3.2 卸载删除名为my-release的部署$ helm delete my-release该命令会移除该 Chart 创建的所有 Kubernetes 组件Deployment、Service、ServiceAccount、ServiceMonitor、Ingress 等并删除对应的 release 记录。4. 配置参数总览README 中给出了该 Chart 的完整配置参数表本文完整继承如下并补充 values.yaml 中实际存在但 README 未展开的附加参数。ParameterDescriptionDefaultaffinityPod 调度的 affinity 配置{}image.repository镜像仓库sstarcher/helm-exporterimage.tag镜像标签0.4.0README 表格值values.yaml 实际为0.4.2image.pullPolicy镜像拉取策略IfNotPresentREADME 表格值values.yaml 实际为AlwaystillerNamespaces覆盖默认 Tiller 命名空间或指定多个 Tiller 命名空间例如kube-system,devnodeSelectorPod 分配的节点标签{}resourcesPod 资源请求与限制{}tolerations节点污点容忍列表需要 Kubernetes 1.6[]serviceMonitor.create是否创建 ServiceMonitor使用 Prometheus Operator 时设为 truefalseserviceMonitor.interval指标抓取间隔空serviceMonitor.namespacePrometheus Operator 所在的命名空间空serviceMonitor.additionalLabels添加到 ServiceMonitor 的附加标签{}ingress.enabled是否启用 Ingressfalseingress.annotationsIngress 注解{}ingress.pathIngress 路径/ingress.hostIngress 主机名例如example.com空4.1 values.yaml 中的附加参数除 README 表格所列参数外values.yaml 还包含以下可配置项ParameterDescriptionDefaultreplicaCount副本数1nameOverride覆盖 Chart 名称fullnameOverride覆盖完整应用名imagePullSecrets私有镜像仓库拉取凭证列表空列表示例- name: image-pull-secretrbac.create是否创建 RBAC 资源trueserviceAccount.create是否创建 ServiceAccounttrueserviceAccount.name使用的 ServiceAccount 名称若 create 为 true 且未设置则按 fullname 模板生成空serviceMonitor.scrapeTimeoutServiceMonitor 抓取超时空默认值差异提醒README 表格中的image.tag0.4.0与image.pullPolicyIfNotPresent与 values.yaml 实际默认值0.4.2、Always不一致values.yaml 以实际文件内容为准。若需锁定版本务必在安装时显式指定--set image.tag...。5. 核心参数与模板实现深入解析5.1 镜像配置与探针deployment.yamldeployment.yaml 是部署的核心模板关键实现如下containers: - name: {{ .Chart.Name }} image: {{ .Values.image.repository }}:{{ .Values.image.tag }} imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http containerPort: 9571 protocol: TCP livenessProbe: httpGet: path: /healthz port: http readinessProbe: httpGet: path: /healthz port: http端口 9571helm-exporter 的默认 metrics 服务端口容器端口命名为http供 Service 与 ServiceMonitor 引用。健康探针livenessProbe与readinessProbe均通过 HTTP 请求/healthz端点判断容器健康状态Kubernetes 据此自动执行重启或摘流量。镜像拉取策略由image.pullPolicy控制values.yaml 默认Always保证每次部署拉取最新镜像。副本数replicas: {{ .Values.replicaCount }}默认 1指标导出服务通常无需多副本如需高可用可自行调大。5.2 Tiller 命名空间探测tillerNamespaceshelm-exporter 的核心职责是读取 Tiller 中记录的 Release 状态因此需要告诉它去哪些命名空间查找 Tiller。模板中对应的实现{{- if .Values.tillerNamespaces }} args: [-tiller-namespaces, {{ .Values.tillerNamespaces | quote }}] {{- end }}当tillerNamespaces为空默认时不传任何参数helm-exporter 使用其内置的默认 Tiller 命名空间。当设置该参数时会以-tiller-namespaces命令行参数传递给容器例如-tiller-namespaces kube-system,dev支持用逗号分隔的多个 Tiller 命名空间适用于 Tiller 被部署到多个命名空间的场景。5.3 Service 与 Prometheus 抓取service.yamlservice.yaml 定义了对外暴露指标的 Servicespec: type: ClusterIP clusterIP: None ports: - port: 9571 targetPort: http protocol: TCP name: metricsService 为无头服务clusterIP: None端口名固定为metrics——这与 servicemonitor.yaml 中endpoints[0].port: metrics一一对应是 ServiceMonitor 正确抓取的关键。当未创建 ServiceMonitor 时serviceMonitor.create为默认false模板会在 Service 上自动添加prometheus.io/scrape: true注解兼容不带 Prometheus Operator、仅凭注解抓取的传统 Prometheus 部署方式一旦启用 ServiceMonitor该注解即不再写入避免双重抓取。5.4 ServiceMonitor与 Prometheus Operator 集成本 Chart 的核心集成亮点是与仓库 stable/prometheus-operator 配套的 ServiceMonitor。servicemonitor.yaml 在serviceMonitor.createtrue时生成如下资源apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor spec: endpoints: - port: metrics honorLabels: true {{- with .Values.serviceMonitor.interval }} interval: {{ . }} {{- end }} {{- with .Values.serviceMonitor.scrapeTimeout }} scrapeTimeout: {{ . }} {{- end }} namespaceSelector: matchNames: - {{ .Release.Namespace }} selector: matchLabels: app.kubernetes.io/name: {{ include helm-exporter.name . }} app.kubernetes.io/instance: {{ .Release.Name }}port: metrics通过 Service 端口名而非端口号抓取与 service.yaml 的name: metrics精确匹配。honorLabels: true抓取时保留暴露指标自带的标签。interval/scrapeTimeout可分别通过serviceMonitor.interval、serviceMonitor.scrapeTimeout覆盖抓取间隔与超时为空时使用 Prometheus Operator 的全局默认。namespaceSelector.matchNames固定匹配当前 release 所在命名空间配合 label selector 精确锁定本 Chart 的 Service。serviceMonitor.namespace控制 ServiceMonitor 资源自身被创建到哪个命名空间通常应与 Prometheus Operator 所在命名空间一致serviceMonitor.additionalLabels则允许追加自定义标签例如release: prometheus确保 Prometheus Operator 的标签选择器能选中该 ServiceMonitor。5.5 RBAC 与 ServiceAccounthelm-exporter 需要权限读取 Tiller 中的 Release 状态因此 Chart 默认创建 RBAC 相关资源serviceaccount.yaml 在serviceAccount.createtrue默认时创建 ServiceAccount名称由helm-exporter.serviceAccountName模板决定。在 deployment.yaml 中rbac.createtrue时使用serviceAccountName: {{ template helm-exporter.fullname . }}否则使用rbac.serviceAccountName指定的既有账户。值文件注释 显示rbac.create: true为默认开启适合需要以专用服务账户读取 Tiller 数据的场景。5.6 Ingress 暴露若需将 metrics 端点暴露到集群外部可启用 ingress.yaml{{- if .Values.ingress.enabled }} spec: rules: - host: {{ .Values.ingress.host }} http: paths: - path: {{ .Values.ingress.path }} backend: serviceName: {{ include helm-exporter.name . }} servicePort: 9571 {{- end }}通过ingress.enabledtrue开启ingress.host设置域名如example.comingress.path设置路径默认/ingress.annotations支持注入如kubernetes.io/ingress.class: nginx等注解见 values.yaml 中注释示例。注意该模板使用的是旧版extensions/v1beta1API在较新 Kubernetes 版本1.16中该 API 已移除需改用networking.k8s.io/v1这是历史 Chart 的典型限制。5.7 命名与调度参数_helpers.tpl 中定义了helm-exporter.name、helm-exporter.fullname、helm-exporter.chart、helm-exporter.serviceAccountName等模板函数nameOverride/fullnameOverride用于覆盖默认命名所有名称按 DNS 规范截断为 63 字符。nodeSelector、affinity、tolerations与resources在 deployment.yaml 中分别以toYaml方式原样渲染进 Pod 模板用于控制节点调度、污点容忍与资源限额适用于对部署位置或资源有要求的集群。6. 使用 values.yaml 定制安装当需要批量覆盖上述参数时推荐编写独立的 values 文件进行安装$ helm install stable/helm-exporter --name my-release -f values.yaml例如一份最小化的生产配置可写作image: repository: sstarcher/helm-exporter tag: 0.4.2 pullPolicy: IfNotPresent tillerNamespaces: kube-system,dev serviceMonitor: create: true interval: 30s scrapeTimeout: 10s namespace: monitoring additionalLabels: release: prometheus resources: requests: cpu: 100m memory: 64Mi limits: cpu: 200m memory: 128Mi提示可直接基于仓库内的默认 values.yaml 复制修改其注释给出了每个参数的用途示例如imagePullSecrets、serviceAccount.name、ingress.annotations。7. 安装后的验证与访问安装成功后可通过 Chart 自带的 NOTES.txt 提示进行验证$ export POD_NAME$(kubectl get pods --namespace 命名空间 -l app.kubernetes.io/namehelm-exporter,app.kubernetes.io/instancerelease名 -o jsonpath{.items[0].metadata.name}) $ kubectl port-forward $POD_NAME 9100随后浏览器访问http://127.0.0.1:9100即可查看导出端点该示例端口为 NOTES 提示的本地转发端口实际 metrics 服务端口为 9571。在启用 ServiceMonitor 的场景下确认 Prometheus 的 Target 列表中出现以helm-exporter命名的抓取目标并能在/metrics端点查询到 Helm Release 状态相关指标。8. 注意事项与适用前提Chart 已弃用Chart.yaml 明确标注deprecated: true该 Chart 不再维护helm-exporter 项目已迁移至其上游仓库维护存量环境可继续按本文配置新项目建议直接使用上游 helm-exporter 的部署方式。Helm 版本差异本文命令沿用 README 的 Helm 2 语法--nameHelm 3 中 Tiller 已被移除helm-exporter 读取 Tiller 数据的机制本身即面向 Helm 2 时代设计这是该工具的历史适用前提。API 版本限制Ingress 模板使用extensions/v1beta1仅在旧版 Kubernetes 集群如 1.16 之前可用。默认值以 values.yaml 为准README 参数表与 values.yaml 在image.tag、image.pullPolicy上存在出入部署时应以 values.yaml 及显式 --set 为准。9. 相关资源Chart 默认配置stable/helm-exporter/values.yaml部署模板deployment.yaml指标 Serviceservice.yamlPrometheus Operator 集成servicemonitor.yaml命名模板函数_helpers.tpl配套的 Prometheus Operator Chartstable/prometheus-operator仓库的 Chart 维护流程说明PROCESSES.md赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐Bitnami Kubernetes Event Exporter Helm Chart 部署指南Kubernetes 事件导出、监控与告警Bitnami Kubernetes Event Exporter Helm Chart 部署指南Kubernetes 事件导出、监控与告警 Kubernet云原生容器编排OpenMed Helm 部署指南在 Kubernetes 上以 Helm Chart 部署去标识化 REST 服务OpenMed Helm 部署指南在 Kubernetes 上以 Helm Chart 部署去标识化 REST 服务 本指南围绕仓库中的 Helm 部署文档人工智能NLP医疗健康数据脱敏本地部署大模型AI 应用MCP 服务联邦学习使用Helm Chart在Kubernetes上部署Microsoft SQL Server容器指南使用Helm Chart在Kubernetes上部署Microsoft SQL Server容器指南 前言 在现代云原生应用开发中容器化和Kubernetes上一篇G-Helper终极指南华硕笔记本性能管理的免费轻量方案下一篇Visdom 入门指南AI/ML 实验的实时可视化、监控与协作平台创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考