Grafana 13.0.2 小版本更新:Alpine 镜像升级与 Dashboard K8s 格式可见

2026-06-10 17 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:6 分钟

Grafana 13 大版本发布后,社区反馈和边缘场景的修复正在快速跟进。13.0.2 作为补丁版本,改动不大但有两点值得部署端关注:Alpine 基础镜像升级到 3.x,以及 Dashboard 保存流程中 Kubernetes 格式的配置现在可以被直观看到。前者影响容器安全基线,后者让 GitOps 管理面板的人少踩一个暗坑。

Alpine 镜像升级:安全基线跟着走

Grafana 官方 Docker 镜像一直提供 Alpine 变体,体积小、启动快,是生产环境常用选择。这次将 Alpine 基础镜像从旧版升级到 3.x,意味着底层 musl libc、busybox 等组件拿到了近期的安全补丁。如果你正在用 Grafana 容器,这个变更不需要你改任何代码——重新拉取镜像即可。

实际操作:

# 拉取最新 13.0.2 Alpine 镜像
docker pull grafana/grafana:13.0.2-alpine

# 验证基础镜像版本
docker run --rm grafana/grafana:13.0.2-alpine cat /etc/alpine-release
# 预期输出类似: 3.21.x

如果你用 docker-compose 管理部署,更新一行版本号就够了:

services:
  grafana:
    image: grafana/grafana:13.0.2-alpine
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin  # 上线前务必改掉
volumes:
  grafana-storage:

跑起来后访问 http://localhost:3000,用 admin / admin 登录(首次会要求改密码)。

Dashboard K8s 格式:GitOps 不再"看不见"

Grafana 13 开始更深度地拥抱 Kubernetes 原生资源模型——Dashboard 可以用 ConfigMap 或自定义资源(CRD)的形式存储在集群里。但在之前的版本中,当你通过 UI 保存一个 Dashboard 时,如果后端配置了 Kubernetes 存储后端,用户其实看不到最终写入的 K8s 格式内容,排查问题只能去集群里 kubectl get

13.0.2 修复了这个体验缺口:在已配置 Kubernetes 存储的情况下,保存 Dashboard 时界面会展示对应的 K8s 资源格式(#123045)。这对以下场景直接有帮助:

  • 用 ArgoCD / Flux 做 Dashboard GitOps 同步,需要确认 YAML 结构
  • 多集群环境下排查 Dashboard 为什么没同步到目标集群
  • 从 UI 创建 Dashboard 后想导出 YAML 放进 Git 仓库

一个典型的 K8s Dashboard ConfigMap 看起来是这样的:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-dashboard
  namespace: monitoring
  labels:
    grafana_dashboard: "1"
data:
  my-dashboard.json: |
    {
      "annotations": {
        "list": []
      },
      "title": "Node Metrics",
      "uid": "node-metrics-001",
      "panels": [
        {
          "id": 1,
          "title": "CPU Usage",
          "type": "timeseries",
          "targets": [
            {
              "expr": "node_cpu_seconds_total",
              "legendFormat": "{{instance}}"
            }
          ]
        }
      ],
      "templating": {
        "list": []
      },
      "schemaVersion": 39,
      "version": 1
    }

如果你用 Grafana Operator,CRD 格式会更简洁:

apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
  name: node-metrics
  namespace: monitoring
spec:
  json: |
    {
      "title": "Node Metrics",
      "uid": "node-metrics-001",
      "panels": [
        {
          "id": 1,
          "title": "CPU Usage",
          "type": "timeseries",
          "targets": [
            {"expr": "node_cpu_seconds_total"}
          ]
        }
      ],
      "schemaVersion": 39,
      "version": 1
    }
  instanceSelector:
    matchLabels:
      dashboards: "grafana"

现在在 UI 保存后能直接看到这类输出,不用再盲猜格式了。

升级建议与注意事项

13.0.2 是补丁版本,没有破坏性变更,升级路径平滑:

  1. Docker 部署:改镜像标签,重新部署。建议先在测试环境跑一轮,确认插件兼容性——部分社区插件可能还没适配 13 大版本的新面板模型。
  2. K8s Helm 部署:更新 grafana.image.tag 值即可。如果你用了 grafana-operator,确认 operator 版本也兼容 13.x。
  3. Dashboard GitOps:升级后重新保存一次关键 Dashboard,观察 K8s 格式输出是否与你在 Git 里维护的 YAML 一致。如果之前手动拼过 YAML,现在可以对照 UI 输出做一次校准。
# Helm 升级示例
helm upgrade grafana grafana/grafana \
  --namespace monitoring \
  --set image.tag=13.0.2-alpine \
  --reuse-values

一个快速检查清单:

  • ✅ 镜像标签是否已指向 13.0.2-alpine
  • ✅ Alpine 版本是否为 3.x(cat /etc/alpine-release
  • ✅ Dashboard 保存后 K8s 格式是否可见
  • ✅ 已有 Dashboard JSON schemaVersion 是否兼容 39
  • ✅ 插件列表是否全部正常加载

小版本看似不起眼,但 Alpine 升级影响安全扫描结果,K8s 格式可见影响日常运维效率。如果你已经在 13.x 线上,没有理由不升到 13.0.2。


相关推荐