ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linkerd 2 接入 Grafana:官方 Helm 配置、仪表盘导入与权限治理实战指南

Linkerd 2 接入 Grafana:官方 Helm 配置、仪表盘导入与权限治理实战指南 服务网格云原生可观测性【免费下载链接】linkerd2Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.项目地址https://gitcode.com/gh_mirrors/li/linkerd2点击查看免费下载本篇技术指南围绕 Linkerd 2 仓库中的grafana/目录展开系统讲解如何通过 Grafana 官方 Helm Chart 部署 Grafana、导入 Linkerd 官方发布的 18 张仪表盘、将数据源指向 Linkerd Viz 的 Prometheus 实例以及如何通过 Linkerd 的AuthorizationPolicy为 Grafana 安全授予 Prometheus 访问权限。读完本文你将掌握一套可复制的 Grafana Linkerd 可观测性集成方案并理解底层权限模型与 Viz 反向代理的联动机制。一、方案概览为什么选择 Grafana 官方 Helm ChartLinkerd 本身并不绑定任何特定的可视化方案但仓库在 grafana/README.md 中明确推荐了三种主流安装途径Grafana 官方 Helm Chart仓库已为此准备了开箱即用的默认配置grafana/values.yaml是本文的主线方案Grafana Operator适用于以 Operator 模式管理 Grafana 实例的集群托管服务Grafana Cloud适合不想自建基础设施的团队。无论选择哪种方式核心资产都是同一套东西——由 Linkerd 组织在 Grafana.com 上发布并持续维护的官方仪表盘。仓库的 grafana/dashboards 目录保存了与线上发布完全一致的仪表盘 JSON 定义如top-line.json、health.json、deployment.json等 18 个文件这意味着你可以随时从本地仓库恢复或比对仪表盘内容。二、基于官方 Helm Chart 的快速部署2.1 标准安装命令在已经具备 Helm 与可访问集群的kubectl环境下执行以下命令即可完成部署helm repo add grafana https://grafana.github.io/helm-charts helm install grafana -n grafana --create-namespace grafana/grafana \ -f https://raw.githubusercontent.com/linkerd/linkerd2/main/grafana/values.yaml命令分解如下helm repo add grafana https://grafana.github.io/helm-charts添加 Grafana 官方 Helm 仓库helm install grafana以grafana为 release 名称安装-n grafana --create-namespace将 Grafana 部署到独立的grafana命名空间并自动创建该命名空间-f .../grafana/values.yaml直接以仓库中维护的默认配置文件覆盖 Chart 默认值使 Grafana 自动拉取 Linkerd 官方仪表盘并指向正确的 Prometheus 数据源。2.2 使用前必须修改的关键配置仓库 grafana/README.md 特别强调直接使用该文件前务必先更新其中的条目尤其是以下两类grafana.ini下的认证与日志配置默认配置关闭了登录表单、启用了匿名访问org_role: Editor、关闭了基础认证并禁用了更新检查。这些设置适合内网可信环境生产环境应根据自身安全策略调整。datasources.datasources.yaml.datasources[0].url默认值为http://prometheus.linkerd-viz.svc.cluster.local:9090即指向 Linkerd Viz 扩展部署在linkerd-viz命名空间中的 Prometheus 服务。如果你的 Prometheus 部署位置或服务名不同必须同步修改否则仪表盘无法取数。2.3 默认 values.yaml 逐项解析以下是 grafana/values.yaml 的关键配置块及其实战含义1数据源定义datasources: datasources.yaml: apiVersion: 1 datasources: - name: prometheus type: prometheus access: proxy orgId: 1 url: http://prometheus.linkerd-viz.svc.cluster.local:9090 isDefault: true jsonData: timeInterval: 5s editable: trueaccess: proxyGrafana 服务端代理访问 Prometheus避免浏览器直接跨网络访问url集群内 DNS 地址指向 Viz 的 Prometheus 服务prometheus服务的admin端口为 9090见 prometheus.yamltimeInterval: 5sGrafana 查询时的时间粒度与 Linkerd 仪表盘中 5 秒级别的指标刷新需求匹配isDefault: true所有仪表盘默认使用该数据源这也是下方datasource: prometheus配置生效的前提。2仪表盘提供器dashboard providerdashboardProviders: dashboardproviders.yaml: apiVersion: 1 providers: - name: default orgId: 1 folder: type: file disableDeletion: false editable: true options: path: /var/lib/grafana/dashboards/default该提供器从容器内/var/lib/grafana/dashboards/default目录加载仪表盘文件。配合下方dashboards块Grafana 官方 Chart 会把从 Grafana.com 下载的 JSON 写入该目录实现配置即仪表盘。3官方仪表盘清单gnetIddashboards.default块以gnetId revision datasource三元组声明了全部官方仪表盘完整 ID 列表见下表。Grafana 官方 Chart 会根据gnetId从https://grafana.com/grafana/dashboards/{id}拉取对应仪表盘revision则锁定版本确保升级可预期。仪表盘gnetIdrevision定位top-line154744全局总览health154863健康状态kubernetes154792Kubernetes 集群维度namespace154783命名空间维度deployment154756Deployment 维度pod154773Pod 维度service154803Service 维度route154813路由维度authority154823权威authority维度cronjob154833CronJob 维度job154873Job 维度daemonset154843DaemonSet 维度replicaset154913ReplicaSet 维度statefulset154933StatefulSet 维度replicationcontroller154924ReplicationController 维度prometheus154892Prometheus 自身状态prometheus-benchmark154902Prometheus 基准性能multicluster154883多集群场景注仓库中 grafana/dashboards 目录的 18 个 JSON 文件与上表一一对应prometheus-2-stats.json对应prometheus仪表盘二者由 Linkerd 社区在 grafana.com 与仓库间双向同步维护具体同步约定见下文开发者须知。2.4 其他安装方式如何复用仪表盘若你选择Grafana Operator或Grafana Cloud等途径则无需使用上述 Helm values只需在 Grafana 的仪表盘导入界面输入上表中的gnetId例如15474即 top-line 仪表盘即可导入同一套官方定义。gnetId列表正是 grafana/README.md 所提示的其他安装方法可通过 ID 轻松导入同一批仪表盘的数据来源。三、打通 Linkerd Viz仪表盘图标与反向代理联动3.1 在 Viz Web 界面显示 Grafana 图标Linkerd Viz 的 Web 仪表盘具备一个贴心能力在相关页面如 Deployment、Pod 等资源视图显示 Grafana 图标点击后直接跳转到对应的 Grafana 仪表盘。要启用该功能需要在 Linkerd Viz 的values.yaml中配置grafana.url告诉 Viz 一个集群内可访问的 Grafana 地址grafana: url: http://grafana.grafana.svc.cluster.local:3000在 viz/charts/linkerd-viz/values.yaml 中grafana配置块包含三个互相关联的字段url集群内 Grafana 实例地址Viz 会通过反向代理访问该地址为 Grafana 仪表盘提供内联展示与跳转externalUrl集群外托管的 Grafana 地址不走反向代理uidPrefix使用externalUrl时用于区分外部 Grafana 仪表盘 UID 的前缀。这三个字段存在约束关系url与externalUrl不能同时设置。在 web.yaml 的模板中可以看到对应的守卫逻辑——若同时设置二者Helm 渲染会直接fail并且这些配置最终会转换成 Web 容器的启动参数-grafana-addr{{.Values.grafana.url}}-grafana-external-addr{{.Values.grafana.externalUrl}}-grafana-prefix{{.Values.grafana.uidPrefix}}3.2 反向代理模式的工作机制当配置了grafana.url时Linkerd Viz 的 Web 服务web组件充当 Grafana 的反向代理。用户访问 Viz Web 时看到的 Grafana 仪表盘实际上是由 Viz Web 转发请求到grafana.url对应的真实 Grafana 服务。这也解释了为什么默认 grafana/values.yaml 中的root_url被设置为%(protocol)s://%(domain)s:/grafana/——该路径约定与 Viz 反向代理的挂载路径相配合保证 Grafana 页面中的资源链接CSS、JS、API在代理前缀下仍能正确解析。四、安全治理通过 AuthorizationPolicy 授予 Grafana 访问权限4.1 背景Prometheus 管理端口的默认收紧策略从 Linkerdstable-2.13.0或edge-23.1.1起Linkerd Viz 的 Prometheus 实例访问被默认收紧。这一变化体现在 prometheus-policy.yaml 中定义的两类策略资源Serverprometheus-admin通过podSelector选中 Viz Prometheus Pod声明port: admin9090见 prometheus.yaml协议为HTTP/1AuthorizationPolicyprometheus-admin以该Server为targetRefrequiredAuthenticationRefs中仅允许metrics-api这个 ServiceAccount 访问。也就是说默认情况下只有 Linkerd Viz 的 metrics-api 组件能访问 Prometheus 的管理端口9090。任何第三方组件包括 Grafana若想拉取指标都必须显式授权。4.2 为 Grafana 授权authzpolicy-grafana.yaml仓库提供了现成的授权清单 grafana/authzpolicy-grafana.yaml内容如下apiVersion: policy.linkerd.io/v1alpha1 kind: AuthorizationPolicy metadata: namespace: linkerd-viz name: grafana spec: targetRef: group: policy.linkerd.io kind: Server name: prometheus-admin requiredAuthenticationRefs: - kind: ServiceAccount name: grafana namespace: grafana其含义是在linkerd-viz命名空间中创建名为grafana的AuthorizationPolicy为指向prometheus-adminServer 的流量增加一条授权规则允许来自grafana命名空间、名为grafana的 ServiceAccount的身份访问。应用方式kubectl apply -f grafana/authzpolicy-grafana.yaml4.3 深入理解授权模型对比 prometheus-policy.yaml 中默认策略的结构可以清晰地看到授权模型的组成要素targetRef指向Server授权目标不是 Kubernetes Service而是 Linkerd 策略体系中的Server资源它通过podSelector精确定位到 Prometheus Pod 的管理端口requiredAuthenticationRefs声明身份采用白名单语义——只有列出身份的 mTLS 身份由 ServiceAccount 派生发起的请求才会被放行多个策略叠加metrics-api的默认策略与grafana的新增策略共存于同一Server上Linkerd 会合并评估任何命中其中一个授权规则的身份均可访问。这套机制也适用于其他需要读取 Prometheus 数据的组件如外部监控系统、自定义告警器等只需把requiredAuthenticationRefs中的 ServiceAccount 换成目标组件的 ServiceAccount 即可。前提说明本机制基于 Linkerd 的 mTLS 身份验证。确保目标命名空间已注入 LinkerdGrafana 官方 Chart 通过podAnnotations: linkerd.io/inject: enabled注入见 grafana/values.yaml否则ServiceAccount身份无法被 Linkerd 策略层识别。五、开发者须知仪表盘的双向同步约定仓库在 grafana/README.md 中对维护者提出了明确的同步要求grafana/dashboards目录下的 JSON 文件与 grafana.com 上 Linkerd 组织orglinkerd发布的内容保持一致任何对仪表盘的修改都必须同步到 grafana.com 与仓库两端grafana.com 端的维护入口为Org Settings → My Dashboards使用 linkerd 账号登录。这解释了为什么仓库内的 grafana/dashboards/top-line.json 等文件会包含__inputs、__requires等 Grafana 导出格式的元数据字段——它们就是 Grafana.com 上在线仪表盘的本地镜像。作为使用者这一约定保证了你从gnetId拉取到的仪表盘与仓库中 JSON 定义始终一致作为潜在贡献者修改仪表盘时应遵循此同步流程。六、完整集成清单将上述内容串成一份可执行的部署顺序安装 Linkerd 与 Viz 扩展确认linkerd-viz命名空间中存在prometheus服务9090/admin 端口准备 Grafana 部署使用官方 Helm Chart并复制 grafana/values.yaml 到本地按需修改grafana.ini的认证方式默认匿名 Editor 角色仅适合内网datasources...url指向实际 Prometheus 服务地址确认dashboards.default中gnetId/revision满足需求部署 Grafanahelm repo add grafana https://grafana.github.io/helm-charts helm install grafana -n grafana --create-namespace grafana/grafana -f ./values.yaml授予 Prometheus 访问权限stable-2.13.0/edge-23.1.1及以后版本必需kubectl apply -f grafana/authzpolicy-grafana.yaml可选启用 Viz Web 的 Grafana 图标与跳转在 Linkerd Viz 的values.yaml中设置grafana.url或externalUrluidPrefix注意二者互斥验证打开 Grafana确认top-line、health、deployment等仪表盘正常渲染数据打开 Linkerd Viz Web确认资源详情页出现 Grafana 图标且跳转目标正确。若采用 Operator 或 Grafana Cloud 等替代方案跳过第 2、3 步改用仪表盘导入界面的gnetId见第二节表格导入同一套官方仪表盘其余权限与联动配置保持不变。七、结语Linkerd 将 Grafana 集成沉淀为一套配置文件 授权清单 仪表盘 JSON的标准化资产grafana/values.yaml让官方 Helm Chart 开箱即用18 张gnetId仪表盘覆盖从全局到工作负载的完整可观测视图AuthorizationPolicy则在默认收紧的安全模型下为 Grafana 提供了最小必要的访问通道。理解这三层结构你就能在任意 Kubernetes 环境中快速搭建起一套与 Linkerd 官方一致的可视化观测体系。赞分享服务网格云原生可观测性【免费下载链接】linkerd2Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.项目地址https://gitcode.com/gh_mirrors/li/linkerd2点击查看免费下载相关推荐LX Music 使用指南改 3 处设置多平台一首歌一次搜全LX Music 使用指南改 3 处设置多平台一首歌一次搜全 你的歌散在酷我、酷狗、QQ 音乐、网易云、咪咕几个 App 里切歌等于切软件整理好的歌单桌面应用音视频前端DeepSeek 接入 4 层准备从拿到 API Key 到深度思考全搞定DeepSeek 接入 4 层准备从拿到 API Key 到深度思考全搞定 awesome deepseek agent 收录了 Cherry Studio、教程大模型AI Agent告别混乱Grafana仪表盘协作与权限管控实战指南告别混乱Grafana仪表盘协作与权限管控实战指南 你是否还在为团队共享仪表盘时的权限混乱、版本不一致而头疼是否经历过重要监控面板被误删或篡改的尴尬本文将可观测性指标监控数据可视化告警日志分析后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表